使用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 可视化词向量
相关推荐
攻城狮7号4 分钟前
Python爬虫第15节-2025今日头条街拍美图抓取实战
爬虫·python·python爬虫
jndingxin4 分钟前
OpenCV 图形API(37)图像滤波-----分离过滤器函数sepFilter()
人工智能·opencv·计算机视觉
快乐点吧14 分钟前
【代理错误 django】Request error: HTTPSConnectionPool(host=‘‘, port=443): 、
后端·python·django
好看资源平台16 分钟前
神经光子渲染:物理级真实感图像生成——从麦克斯韦方程到深度学习
人工智能·深度学习
diu_lei33 分钟前
DeepSpeed ZeRO++:降低4倍网络通信,显著提高大模型及类ChatGPT模型训练效率
人工智能
meisongqing33 分钟前
【大模型】GPT-4、DeepSeek应用与Prompt使用技巧
人工智能·大模型·prompt
努力毕业的小土博^_^34 分钟前
【EI/Scopus顶会矩阵】2025年5-6月涵盖统计建模、数智转型、信息工程、数字系统、自动化系统领域,硕博生执笔未来!
人工智能·深度学习·线性代数·计算机视觉·矩阵·自动化·媒体
逛逛GitHub43 分钟前
这个 MCP 大本营发布,1400+ 工具等你来接。
人工智能·github
云卓SKYDROID1 小时前
无人机故障冗余设计技术要点与难点!
人工智能·科技·无人机·科普·云卓科技