首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >基于Gensim获取Word2Vec词向量

基于Gensim获取Word2Vec词向量

原创
作者头像
一个风轻云淡
发布2026-01-17 14:21:22
发布2026-01-17 14:21:22
1620
举报
文章被收录于专栏:深度学习深度学习

前言

词向量是NLP任务的基础组件,常见的获取方式包括使用公开的通用预训练词向量,或在自有领域的语料上专门训练。前一种方式省时省力,适合快速验证或对通用语义要求较高的场景;后一种则能更好适应专业术语和特定语境,提升领域任务的效果。

实际开发中,Gensim 是处理词向量常用的工具。它不仅支持多种公开词向量格式的直接加载,也提供了简洁的接口用于在本地语料上训练自定义词向量。无论你是想快速加载一个模型做实验,还是针对特定业务从头训练,Gensim 都能以清晰的接口和较高的效率满足需求。另外,它也支持在已有模型基础上增量训练,适合“通用预训练+领域微调”的混合使用方式,兼顾了通用性和针对性。

Gensim 官网:Documentation — gensim

使用公开词向量获取Word2Vec词向量

这个 GitHub 仓库(Embedding/Chinese-Word-Vectors)是一个专门提供中文词向量的开源项目,收录了上百种在不同语料和不同设定下预训练好的中文词向量模型。

词向量文件的格式是标准的文本格式:

  • 第一行是两个整数,分别表示词表大小(总词数)和向量维度;
  • 从第二行开始,每行是一个词和它对应的向量值,各项之间用空格分隔。
代码语言:txt
复制
<词汇总数> <向量维度>
word1 val11 val12 ... val1N
word2 val21 val22 ... val2N

该项目提供的词向量覆盖多种语料,包括百度百科、维基百科、新闻数据、微博、文学作品等,支持不同上下文特征(如词、Ngram、字符等),并包含稠密向量(SGNS训练)和稀疏向量(PPMI训练)两种表示方式。此外,还提供了中文类比推理数据集 CA8 和评估工具,方便用户对词向量质量进行测试。

该格式是自然语言处理领域的通用标准格式,可以被 Gensim 等工具直接加载使用。

示例代码如下:

代码语言:py
复制
from gensim.models import KeyedVectors

model_path = 'sgns.weibo.word.bz2'
model = KeyedVectors.load_word2vec_format(model_path)
print(model.vector_size) #查看词数
#指定要查找相似词的目标词语为"中国"topn=10: 返回最相似的前10个词语及其相似度分数
print(model.most_similar(positive=['中国'], topn=10)) 

基于自行训练获取词向量

语料格式:已分词的文本序列

代码语言:py
复制
sentences = [
    ['这款', '手机', '的', '屏幕', '显示', '效果', '非常', '清晰', '色彩', '鲜艳'],
    ['手机', '的', '电池', '续航', '能力', '很强', '正常', '使用', '一天', '没问题'],
    ['系统', '运行', '流畅', '不', '卡顿', '用户体验', '很好'],
    ['拍照', '功能', '强大', '夜景', '模式', '效果', '特别', '出色'],
    ['充电', '速度', '很快', '半小时', '就能', '充满', '百分之', '八十'],
    ['机身', '手感', '舒适', '重量', '适中', '携带', '方便'],
    ['价格', '有点', '贵', '但是', '品质', '对得起', '这个', '价位'],
    ['信号', '接收', '稳定', '通话', '质量', '很', '清晰']
]

核心API:gensim提供了十分方便的训练词向量的API——Word2Vec

代码语言:python
复制
from gensim.models import Word2Vec

model = Word2Vec(
    sentences,            # 已分词的句子序列
    vector_size=100,      # 词向量维度
    window=5,             # 上下文窗口大小
    min_count=2,          # 最小词频(低于将被忽略)
    sg=1,                 # 1:Skip-Gram,0:CBOW
    workers=4             # 并行训练线程数
)

在创建该对象的过程中就已经自动完成了训练

保存词向量

代码语言:txt
复制
model.wv.save_word2vec_format('my_vectors.kv')

加载词向量

代码语言:txt
复制
from gensim.models import KeyedVectors
my_model = KeyedVectors.load_word2vec_format('my_vectors.kv')

示例Demo

假设有以下文件

代码语言:py
复制
df = pd.read_csv('online_shopping_10_cats.csv', encoding='utf-8', usecols=['review'])
# 对df中的评论数据进行分词处理,使用jieba分词工具将每条评论切分成词语列表,
# 并过滤掉空字符串或只包含空白字符的词语,最终形成一个二维列表结构,
# 其中每个子列表对应一条评论的分词结果
sentences = [[token for token in jieba.lcut(review) if token.strip() != ''] for review in df["review"]]
model = Word2Vec(
 sentences, # 已分词的句子序列
 vector_size=100, # 词向量维度
 window=5, # 上下文窗口大小
 min_count=2, # 最小词频(低于将被忽略)
 sg=1, # 1 = Skip-Gram,0 = CBOW
 workers=4 # 并行训练线程数
)
model.wv.save_word2vec_format('my_vectors.kv')
my_model = KeyedVectors.load_word2vec_format('my_vectors.kv')
print(my_model)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档