对Python中gensim库word2vec的使用详解
什么是word2vec?
word2vec
是 Google
提出的一个用于学习高效词向量表示并且能够提供大量语义信息的工具。最初 word2vec
基于神经网络的语言模型。它可以接受语料库作为输入,并训练出一个高维空间的向量表示,每一个向量都代表了语料库中的一个单词,向量之间的相似度代表了两个单词在语义上的相似度。这使得词之间的语义相似度得以量化。
怎么使用gensim库实现word2vec?
gensim
是一个用于自然语言处理的流行的Python库。其中包含了word2vec的实现。
gensim
的word2vec模型有两种实现方式,一种是skip-gram, 另一种是cbow。其中skip-gram的精度较高,而cbow的运行速度较快。
安装gensim
!pip install gensim
加载语料库
import gensim.downloader as api
# 加载word2vec小测试语料库
corpus = api.load("text8")
训练模型
from gensim.models.word2vec import Word2Vec
# 设置向量维度为100
model = Word2Vec(corpus, size=100, window=5, min_count=5, workers=4)
训练语料库中的单词向量,其中参数含义如下:
- size: 输出的向量维度,在word2vec中通常为几百到几千种不同单词
- window: 控制目标单词与上下文单词在一个词汇表中的距离,例如“窗口”(window)的大小,如果取值为1,则表示窗口为[上一个词,下一个词],如果取值为5则表示窗口为[上四个词,下四个词]
- min_count: 能够加入到词汇表中的形态学单元(通常是词)的最小频率
- workers: 虚拟核的数量
查找相似单词
print(model.wv.similarity("woman", "man"))
计算两个单词之间在空间中的相似度。输出结果为两个单词向量的点积。
寻找单词的最近邻
print(model.wv.most_similar("woman", topn=10))
这个函数的输出是输入词汇表中与给定单词最相关的单词列表。
示例:找到前10个与'man'相似的单词
print(model.wv.most_similar("man", topn=10))
输出结果如下:
[('woman', 0.7664015293121338), ('guy', 0.6647750134468079), ('lady', 0.6262822151184082), ('boy', 0.5739915370941162), ('gentleman', 0.5708805327415466), ('girl', 0.560460150718689), ('soldier', 0.5336751937866211), ('kid', 0.532694995880127), ('son', 0.5245213503837585), ('fellow', 0.49551302194595337)]
示例:找到和“woman”相似度最低的单词
print(model.wv.most_similar(negative="woman", topn=1))
输出结果如下:
[('country', 0.011430636376678467)]
总结
通过 gensim
库实现word2vec算法模型,能够更高效地学习文本语料库中的单词向量表示。通过这些向量表示,我们可以更好地理解单词的语义和语境,进而更好地应用于自然语言处理的相关任务。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:对Python中gensim库word2vec的使用详解 - Python技术站