600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 【NLP】基于Word2Vec词向量的中文文本相似度匹配

【NLP】基于Word2Vec词向量的中文文本相似度匹配

时间:2018-12-11 01:40:41

相关推荐

【NLP】基于Word2Vec词向量的中文文本相似度匹配

Word2Vec

词向量可以用于测量单词之间的相似度,相同语义的单词,其词向量也应该是相似的。对词向量做降维并可视化,可以看到如下图所示的聚类效果,即相近语义的词会聚在一。

文本或句子相似度问题,可以把句子中每个单词的词向量简单做一个平均,得到的向量作为整个句子的向量表示,再利用余弦相似度计算句子的相似度。

代码实现

训练词向量模型请参考:使用GloVe训练中文词向量

import numpy as npfrom gensim.models import KeyedVectorsfrom sklearn.metrics.pairwise import cosine_similarity# 加载词向量模型model = KeyedVectors.load_word2vec_format(r'E:\vectors.txt',binary=False,encoding="gbk")# 对句子中的每个词的词向量简单做平均 作为句子的向量表示def wordavg(model,words): return np.mean([model.get_vector(word) for word in words],axis=0)s1 = "今天是个好日子"s2 = "好日子就在今天"s1_list = jieba.lcut(s1, cut_all=True) # jieba分词s1_list = jieba.lcut(s2, cut_all=True) # jieba分词s1_avg = wordavg(model,s1_list) # s1的向量表示s2_avg = wordavg(model,s2_list) # s2的向量表示print(cosine_similarity(s1_avg.reshape(1,-1),s2_avg.reshape(1,-1))) # 计算s1、s2向量的余弦相似度

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。