Word2Vec模型简介:
Word2Vec是从大量文本语料中以无监督的方式学习语义知识的一种模型,它被大量地用在自然语言处理(NLP)中。Word2Vec通过训练可以把对文本内容的处理简化为K维向量空间中的向量运算,通过学习文本来用词向量的方式表征词的语义信息。
向量空间上的相似度可以用来表示文本语义上的相似度,通过一个嵌入空间使得语义上相似的单词在该空间内距离很近。
因此,Word2Vec 输出的词向量可以被用来做很多NLP相关的工作,比如聚类、找同义词、词性分析等等。
Word2Vec模型有CBOW(Continuous Bag-Of-Words,即连续的词袋模型)和 Skip-Gram 两种。
CBOW 模型: 能够根据输入词A周围n-1个词来预测出词A本身。CBOW模型的输入是某个词A周围的n个单词的词向量之和,输出是词A本身的词向量.
Skip-gram 模型: 能够根据词B本身来预测周围有哪些词,Skip-gram模型的输入是词B本身,输出是词B周围的n-1个单词的词向量.
下面以Word2Vec官方的数据text8为例,实现两个词的相似度,寻找词之间的对应关系,以及寻找不合群的词等。
import pandas as pd
from gensim.models import word2vec
# 加载语料
sentences = word2vec.Text8Corpus(u"../text8.txt")
model = word2vec.Word2Vec(sentences, size=200) # 训练skip-gram模型; 默认window=5
# 计算两个词的相似度/相关程度
w1 &