
零基础快速上手:用 Python + jieba + Word2Vec 实现中文词向量训练(全流程实战)
很多人听过「Word2Vec」,却没真正用过它。今天我用最简单直白的方式,带你从原始中文文本出发,自动分词、训练词向量、做词语相似度分析,全流程一次跑通!
- 所需工具:Python(建议3.6以上)、jieba(中文分词)、gensim(Word2Vec模型工具)
💜 1. 安装依赖:
pip install jieba gensim
💜 2. 准备原始txt文本(无需人工分词)
-
raw.txt,内容如下: (用 gpt 生成的嘿嘿 ^^ )我喜欢吃苹果,也喜欢吃香蕉。 苹果和香蕉都是常见的水果。 香蕉比苹果更软,苹果更脆。 很多人早餐喜欢吃香蕉配酸奶。 有人说苹果有助于消化,香蕉能补充能量。 超市里香蕉和苹果常常放在一起销售。 苹果可以榨汁,香蕉也可以做奶昔。 我买了一斤香蕉和两斤苹果。 妈妈用苹果和香蕉做了一份水果沙拉。 香蕉含有钾元素,苹果含有维生素C。 苹果和香蕉都是健康的零食。 医生建议每天吃一根香蕉或一个苹果。 我给小朋友准备了香蕉、苹果和橙子。 香蕉有点熟了,苹果还是脆的。 有的人喜欢苹果派,有的人喜欢香蕉蛋糕。 我把香蕉和苹果放进了便当盒里。 爷爷每天早上吃香蕉,奶奶喜欢吃苹果。 这家水果店的香蕉很甜,苹果很新鲜。 午饭后我们分享了一根香蕉和一个苹果。 她从冰箱拿出苹果和香蕉切成小块。 今天的早餐是香蕉、苹果和面包。 小明吃了两根香蕉,小红吃了一个苹果。 小狗闻了闻香蕉,又闻了闻苹果。 在水果拼盘里,香蕉和苹果总是不可缺少。 锻炼前吃根香蕉,锻炼后咬口苹果。
💜 3. 代码示例
下面是完整的可运行 Python 代码,自动读取文本并用 Word2Vec 训练词向量:
import jieba
from gensim.models import Word2Vec
# 使用分词工具 jieba 进行自动分词
sentences = []
with open('raw.txt', 'r', encoding='utf-8') as f:
for line in f:
line = line.strip()
if not line:
continue
words = jieba.lcut(line)
sentences.append(words)
# 使用 gensim 的 word2vec 进行词向量训练
model = Word2Vec(
sentences,
vector_size=100,
window=5, # 句子中当前单词和被预测单词的最大距离
min_count=2, # 需要训练词语的最小出现次数
workers=2, # 训练使用的线程数
sg=1, # Skip-gram 效果更好(对小数据)
epochs=100 # 默认epochs太低,多训练几轮
)
# 保存模型以供后续加载使用
model.save('quick_word2vec.model')
print("\n模型已保存为 quick_word2vec.model")
💜 4. 结果验证
# print("词向量 - '水果':")
# print(model.wv['水果'])
# 使用 .similarity() 或 .most_similar() 分析语义关系
print("\n'香蕉' 和 '苹果' 的相似度:")
print(model.wv.similarity('香蕉', '苹果'))
print("\n与 '水果' 最相似的词:")
print(model.wv.most_similar('水果', topn=3))
完整代码
import jieba
from gensim.models import Word2Vec
# 使用分词工具 jieba 进行自动分词
sentences = []
with open('raw.txt', 'r', encoding='utf-8') as f:
for line in f:
line = line.strip()
if not line:
continue
words = jieba.lcut(line)
sentences.append(words)
# 使用 gensim 的 word2vec 进行词向量训练
model = Word2Vec(
sentences,
vector_size=100,
window=5, # 句子中当前单词和被预测单词的最大距离
min_count=2, # 需要训练词语的最小出现次数
workers=2, # 训练使用的线程数
sg=1, # Skip-gram 效果更好(对小数据)
epochs=100 # 默认epochs太低,多训练几轮
)
# print("词向量 - '水果':")
# print(model.wv['水果'])
# 使用 .similarity() 或 .most_similar() 分析语义关系
print("\n'香蕉' 和 '苹果' 的相似度:")
print(model.wv.similarity('香蕉', '苹果'))
print("\n与 '水果' 最相似的词:")
print(model.wv.most_similar('水果', topn=3))
# 保存模型以供后续加载使用
model.save('quick_word2vec.model')
print("\n模型已保存为 quick_word2vec.model")
运行后会输出如下示例内容(结果略有浮动):
'香蕉' 和 '苹果' 的相似度:
0.99277806
与 '水果' 最相似的词:
[('香蕉', 0.9611108899116516), ('和', 0.9604138731956482), ('苹果', 0.9593712091445923)]
模型已保存为 quick_word2vec.model
这样你就拥有一个完整的中文Word2Vec词向量训练工具了!(当然实际中还是直接使用别人训练的比较好的就行 https://huggingface.co/spaces/mteb/leaderboard ~~~
并不一定需要我们从头训练;本文的意义更多在于帮助大家理解流程~)
赶紧试试吧 🚀 如果觉得有用,欢迎收藏点赞评论支持!

被折叠的 条评论
为什么被折叠?



