调用Gensim库训练Word2Vec模型

本文为🔗365天深度学习训练营内部文章

原作者:K同学啊

一、Word2Vec是什么?

自然语言处理(NLP)是一种涉及到处理语言文本的计算机技术。在 NLP 中,最小的处理单位是词语,词语是语言文本的基本组成部分。词语组成句子,句子再组成段落、篇章、文档,因此处理 NLP 问题的第一步是要对词语进行处理。
在进行 NLP 问题处理时,一个常见的任务是判断一个词的词性,即动词还是名词等等。这可以通过机器学习来实现。具体地,我们可以构建一个映射函数 f(x)->y,其中 x 是词语,y是它们的词性。为了使用机器学习模型,需要将词语转换成数值形式。然而,在NLP 中,词语是人类的抽象总结,是符号形式的 (比如中文、英文、拉丁文等等),不是数值形式的,因此需要将它们嵌入到一个数学空间中,这个过程就是词嵌入(word embedding)。
词嵌入是将词语映射到一个向量空间中的过程,使得相似的词在向量空间中距离较近,而不相似的词距离较远。**Word2Vec则是其中的一种词嵌入方法,是一种用于生成词向量的浅层神经网络模型**,由Tomas Mikolov及其团队于2013年提出。**Word2Vec通过学习大量文本数据,将每个单词表示为一个连续的向量,这些向量可以捕捉单词之间的语义和句法关系**。Word2Vec有两种主要架构:连续词袋模型(Continuous Bag of Words,CBOW)和Skip-Gram模型。

二、CBOW模型

CBOW(Continuous Bag of Words)模型是通过上下文来预测当前值。相当于一句话中扣掉一个词,让你猜这个词是什么。 ​ 具体来说,CBOW 模型首先将输入的词语转换为词向量,然后将这些词向量相加得到一个向量表示这个向量表示就是当前上下文的表示。最后,CBOW 模型使用这个向量表示来预测目标词语的概率分布。CBOW 模型的核心思想是根据上下文预测当前词语,因此它通常适用于训练数据中目标词语出现频率较高的情况。

三、Skip-gram模型

Skip-gram 模型用当前词来预测上下文。相当于给你一个词,让你猜前面和后面可能出现什么词。 ​ 具体来说,Skip-gram 模型首先将目标词语转换为它的词向量,然后使用这个词向量来预测它周围的词语。Skip-gram 模型的核心思想是利用目标词语来预测上下文,因此它通常适用于训练数据中目标词语出现频率较低的情况。

Skip-gram 模型和 CBOW 模型的训练过程都是基于反向传播算法和随机梯度下降算法实现的。在训练过程中,两个模型都会通过不断地更新词向量来最小化损失函数,使得目标词语和它周围的词语在向量空间中距离更近。最终,训练完成后,每个词语都被嵌入到了一个低维向量空间中,这些向量可以用于各种NLP 任务,如语言模型、词性标注、文本分类等等。

四、实例解答

实例:假设我们有以下句子作为训练语料:

"The quick brown fox jumps over the lazy dog."

对于Skip-gram模型,假设我们选择窗口大小为2(即在目标单词前后各取2个单词作为上下文)。以单词"jump"为例,我们将有以下训练样本:

输入:jumps 输出:(quick,brown,over,the)

这些训练样本用于调整词向量,使得给定单词"jumps"时,上下文单词的概率最大化

而对于CBOW模型,训练样本是相反的:

输入:(quick,brown,over,the) 输出:jumps

在这种情况下,CBOW模型会根据上下文来预测目标单词"jumps"

训练完成后,每个单词都会被赋予一个词向量,这些词向量可以用于后续的NLP任务,如文本分类、聚类、相似度计算等。一个有趣的现象是,词向量之间的数学运算可以揭示单词之间的语义关系,例如:

五、调用Gensim库实现Word2vec模型

1.对原始语料进行分词

python 复制代码
import jieba
import jieba.analyse

jieba.suggest_freq('沙瑞金',True)  # 加入一些词,使得jieba分词准确率更高
jieba.suggest_freq('田国富',True)
jieba.suggest_freq('高育良',True)
jieba.suggest_freq('侯亮平',True)
jieba.suggest_freq('钟小艾',True)
jieba.suggest_freq('陈岩石',True)
jieba.suggest_freq('欧阳菁',True)
jieba.suggest_freq('易学习',True)
jieba.suggest_freq('王大路',True)
jieba.suggest_freq('蔡成功',True)
jieba.suggest_freq('孙连城',True)
jieba.suggest_freq('季昌明',True)
jieba.suggest_freq('丁义珍',True)
jieba.suggest_freq('郑西坡',True)
jieba.suggest_freq('赵东来',True)
jieba.suggest_freq('高小琴',True)
jieba.suggest_freq('赵瑞龙',True)
jieba.suggest_freq('林华华',True)
jieba.suggest_freq('陆亦可',True)
jieba.suggest_freq('刘新建',True)
jieba.suggest_freq('刘庆祝',True)
jieba.suggest_freq('赵德汉',True)

# 读取文件
with open('./in_the_name_of_people.txt',encoding='utf-8') as f:
    result_cut = []
    lines = f.readlines()
    for line in lines:
        result_cut.append(list(jieba.cut(line)))
f.close()
python 复制代码
# 添加自定义停用词
stopwords_list = [",","。","\n","\u3000"," ",":",":","!","?","?","!","...","......"]

def remove_stopwords(ls):    # 去除停用词
    return [word for word in ls if word not in stopwords_list]

result_stop = [remove_stopwords(x) for x in result_cut if remove_stopwords(x)]
print(result_stop[100:103])

from gensim.models import Word2Vec

model = Word2Vec(result_stop,    # 用于训练的语料数据
                 vector_size=100,    # 是指特征向量的维度,默认为100
                 window=5,    # 一个句子中当前单词和被预测单词的最大距离
                 min_count=1      # 可以对字典做截断,词频少于min_count次数的单词会被丢弃掉,默认是5
)

'''
模型应用
'''
# 1.计算词汇相似度
print(model.wv.similarity('沙瑞金','田国富'))
print(model.wv.similarity('沙瑞金','高育良'))
python 复制代码
# 选出最相近的10个词
for e in model.wv.most_similar(positive=['沙瑞金'],topn=10):
    print(e[0],e[1])
2)找出不匹配的词汇

使用 doesnt_match()方法,我们可以找到一组词汇中与其他词汇不匹配的词汇

python 复制代码
# 2.找出不匹配的词汇
odd_word = model.wv.doesnt_match(["沙瑞金","侯亮平","丁义珍","书"])
print(f'在这组词汇中不匹配的词汇:{odd_word}')

# 3.计算词语的词频
word_freq = model.wv.get_vecattr('沙瑞金','count')
print(f'沙瑞金:{word_freq}')
word_freq = model.wv.get_vecattr('田国富','count')
print(f'田国富:{word_freq}')
word_freq = model.wv.get_vecattr('高育良','count')
print(f'高育良:{word_freq}')
相关推荐
后端小肥肠4 分钟前
即梦3.0+Coze王炸联动:10w+小人国微观生活视频轻松量产!(附喂饭级教程)
人工智能·aigc·coze
华院计算43 分钟前
华院计算出席信创论坛,分享AI教育创新实践并与燧原科技共同推出教育一体机
人工智能·科技·百度
深兰科技1 小时前
深兰科技董事长陈海波受邀出席2025苏商高质量发展(常州)峰会,共话AI驱动产业升级
人工智能·mongodb·intellij-idea·hbase·flume·新质生产力·深兰科技
说私域1 小时前
基于开源AI大模型AI智能名片S2B2C商城小程序源码的销售环节数字化实现路径研究
人工智能·小程序·开源·零售
正在走向自律2 小时前
Trae上手指南:AI编程从0到1的奇妙跃迁
人工智能
MILI元宇宙2 小时前
DeepSeek R1开源模型的技术突破与AI产业格局的重构
人工智能·重构·开源
江苏泊苏系统集成有限公司2 小时前
半导体晶圆制造洁净厂房的微振控制方案-江苏泊苏系统集成有限公司
人工智能·深度学习·目标检测·机器学习·创业创新·制造·远程工作
猿小猴子4 小时前
主流 AI IDE 之一的 Windsurf 介绍
ide·人工智能
智联视频超融合平台4 小时前
无人机+AI视频联网:精准狙击,让‘罪恶之花’无处藏身
人工智能·网络协议·安全·系统安全·音视频·无人机