使用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 可视化词向量
相关推荐
a1117764 小时前
医院挂号预约系统(开源 Fastapi+vue2)
前端·vue.js·python·html5·fastapi
0思必得04 小时前
[Web自动化] Selenium处理iframe和frame
前端·爬虫·python·selenium·自动化·web自动化
ar01234 小时前
AR远程协助作用
人工智能·ar
北京青翼科技4 小时前
PCIe接口-高速模拟采集—高性能计算卡-青翼科技高品质军工级数据采集板-打造专业工业核心板
图像处理·人工智能·fpga开发·信号处理·智能硬件
软件聚导航4 小时前
马年、我用AI写了个“打工了马” 小程序
人工智能·ui·微信小程序
陈天伟教授5 小时前
人工智能应用-机器听觉:7. 统计合成法
人工智能·语音识别
笨蛋不要掉眼泪6 小时前
Spring Boot集成LangChain4j:与大模型对话的极速入门
java·人工智能·后端·spring·langchain
昨夜见军贴06166 小时前
IACheck AI审核技术赋能消费认证:为智能宠物喂食器TELEC报告构筑智能合规防线
人工智能·宠物
摘星编程6 小时前
OpenHarmony + RN:Calendar日期选择功能
python
DisonTangor6 小时前
阿里开源语音识别模型——Qwen3-ASR
人工智能·开源·语音识别