个人理解:就是获取一个没有偏置和激活函数的全连接隐层,将高维的one-hot数据转变为稠密、低维、有相似性的关系的矩阵,分为CBOW, skip-gram两种方法。
参考:
https://www.zhihu.com/question/45027109
https://www.jianshu.com/p/9eab3894ae8a
什么是 word embedding? - Scofield的回答 - 知乎 https://www.zhihu.com/question/32275069/answer/301428835
代码:
from gensim.models import word2vec
sentences = word2vec.Text8Corpus("C:/traindataw2v.txt") # 加载语料
model = word2vec.Word2Vec(sentences, size=200) # 训练skip-gram模型; 默认window=5
#获取“学习”的词向量
print("学习:" + model["学习"])
# 计算两个词的相似度/相关程度
y1 = model.similarity("不错", "好")
# 计算某个词的相关词列表
y2 = model.most_similar("书", topn=20) # 20个最相关的
# 寻找对应关系
print("书-不错,质量-")
y3 = model.most_similar(['质量', '不错'], ['书'], topn=3)
# 寻找不合群的词
y4 = model.doesnt_match("书 书籍 教材 很".split())
# 保存模型,以便重用
model.save("db.model")
# 对应的加载方式
model = word2vec.Word2Vec.load("db.model")