使用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 可视化词向量
相关推荐
红虾程序员5 分钟前
python函数的多种参数使用形式
开发语言·python·pycharm
LitchiCheng17 分钟前
DQN 玩 2048 实战|第二期!设计 ε 贪心策略神经网络,简单训练一下吧!
人工智能·深度学习·神经网络
tortorish26 分钟前
PyTorch中Batch Normalization1d的实现与手动验证
人工智能·pytorch·batch
wwwzhouhui33 分钟前
dify案例分享-儿童故事绘本语音播报视频工作流
人工智能·音视频·语音识别
SsummerC34 分钟前
【leetcode100】搜索二维矩阵
python·线性代数·leetcode·矩阵
trust Tomorrow35 分钟前
Python-docx库详解:轻松实现Word文档自动化生成与图片尺寸控制
python·自动化·word
汐ya~1 小时前
python写入excel多个sheet表 以及追加sheet表
开发语言·python·excel
南太湖小蚂蚁1 小时前
自然语言处理入门4——RNN
人工智能·rnn·深度学习·自然语言处理
苏婳6661 小时前
pycharm常用快捷键
ide·python·pycharm
Ronin-Lotus1 小时前
深度学习篇---分类任务图像预处理&模型训练
人工智能·python·深度学习·机器学习·分类·模型训练·分类任务