使用gensim的word2vec训练自己的词向量模型

使用gensim的word2vec训练自己的词向量模型

common_textsgensim 提供的一个用于测试的小型文本数据集。它包含一些示例句子,格式是一个嵌套的 Python 列表,其中每个子列表代表一个文档,文档由单词(字符串)组成。

示例用法

python 复制代码
from gensim.test.utils import common_texts
from gensim.models import Word2Vec

# 打印示例数据
print(common_texts)

输出

python 复制代码
[['human', 'interface', 'computer'], 
 ['survey', 'user', 'computer', 'system', 'response', 'time'],
 ['eps', 'user', 'interface', 'system'],
 ['system', 'human', 'system', 'eps'],
 ['user', 'response', 'time'],
 ['trees'],
 ['graph', 'trees'],
 ['graph', 'minors', 'trees'],
 ['graph', 'minors', 'survey']]

使用 common_texts 训练 Word2Vec

你可以直接用 common_texts 训练一个 Word2Vec 模型:

python 复制代码
from gensim.models import Word2Vec

# 训练 Word2Vec 模型
model = Word2Vec(sentences=common_texts, vector_size=10, window=5, min_count=1, workers=4)

# 获取单词 "computer" 的词向量
vector = model.wv['computer']
print(vector)

应用场景

  1. 测试 gensim API,避免自己构造数据集。
  2. 验证 NLP 预处理逻辑,如分词、向量化等。
  3. 快速上手 Word2VecDoc2Vec 等模型

如果你想在自己的数据集上使用类似的处理方式,可以参考 common_texts 的格式来组织你的文本数据。

你保存的 Word2Vec 模型可以通过 Word2Vec.load 重新加载,并进行推理(如获取词向量、查找相似词等)。以下是完整的使用方法:


1. 加载已保存的模型

python 复制代码
from gensim.models import Word2Vec

# 加载保存的 Word2Vec 模型
model = Word2Vec.load("word2vec_test.model")

2. 获取单词的词向量

python 复制代码
vector = model.wv['computer']
print(vector)  # 输出 'computer' 的词向量

输出示例(100 维词向量)

复制代码
[ 0.0023 -0.0154  0.0132 ...  0.0098 -0.0221  0.0145]

3. 查找最相似的词

python 复制代码
similar_words = model.wv.most_similar('computer', topn=3)
print(similar_words)  # 输出与 'computer' 最相似的 3 个词

输出示例

复制代码
[('interface', 0.87), ('user', 0.85), ('system', 0.82)]

0.87 代表余弦相似度,接近 1 说明两个词较为相似。


4. 计算两个单词的相似度

python 复制代码
similarity = model.wv.similarity('computer', 'system')
print(similarity)

输出示例

复制代码
0.79  # 表示 "computer" 和 "system" 在语义空间中的相似度

5. 词向量可视化(可选)

可以用 matplotlibsklearn.manifold.TSNE 降维并可视化词向量:

python 复制代码
import matplotlib.pyplot as plt
from sklearn.manifold import TSNE
import numpy as np

# 获取所有单词及其向量
words = list(model.wv.index_to_key)  # 获取词汇表
word_vectors = np.array([model.wv[word] for word in words])  # 词向量矩阵

# 用 t-SNE 将 100 维降到 2 维
tsne = TSNE(n_components=2, random_state=42)
word_vectors_2d = tsne.fit_transform(word_vectors)

# 绘制散点图
plt.figure(figsize=(8, 6))
plt.scatter(word_vectors_2d[:, 0], word_vectors_2d[:, 1])

# 标注单词
for i, word in enumerate(words):
    plt.annotate(word, xy=(word_vectors_2d[i, 0], word_vectors_2d[i, 1]))

plt.show()

总结

  • Word2Vec.load("word2vec_test.model") 加载模型
  • model.wv['word'] 获取单词的词向量
  • model.wv.most_similar('word') 查找相似词
  • model.wv.similarity('word1', 'word2') 计算相似度
  • 还可以使用 t-SNE 可视化词向量
相关推荐
草莓熊Lotso1 小时前
Linux 文件描述符与重定向实战:从原理到 minishell 实现
android·linux·运维·服务器·数据库·c++·人工智能
Coder_Boy_2 小时前
技术发展的核心规律是「加法打底,减法优化,重构平衡」
人工智能·spring boot·spring·重构
会飞的老朱4 小时前
医药集团数智化转型,智能综合管理平台激活集团管理新效能
大数据·人工智能·oa协同办公
聆风吟º5 小时前
CANN runtime 实战指南:异构计算场景中运行时组件的部署、调优与扩展技巧
人工智能·神经网络·cann·异构计算
寻星探路6 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
Codebee8 小时前
能力中心 (Agent SkillCenter):开启AI技能管理新时代
人工智能
聆风吟º8 小时前
CANN runtime 全链路拆解:AI 异构计算运行时的任务管理与功能适配技术路径
人工智能·深度学习·神经网络·cann
uesowys8 小时前
Apache Spark算法开发指导-One-vs-Rest classifier
人工智能·算法·spark
AI_56788 小时前
AWS EC2新手入门:6步带你从零启动实例
大数据·数据库·人工智能·机器学习·aws
User_芊芊君子8 小时前
CANN大模型推理加速引擎ascend-transformer-boost深度解析:毫秒级响应的Transformer优化方案
人工智能·深度学习·transformer