最近在做判断两个文本是否是描述的同一件事情,之前是采用gensim中的TF-IDF进行计算的,TF-IDF这种方法没有考虑到文字背后的语义关联,可能在两个文档共同出现的单词很少甚至没有相同的单词,但两个文档是相似的情况下,就需要考虑到文档的语义。我们都知道word2vec是可以分析语义的,那么doc2vec是不是也可以分析出语义呢?于是试了一下gensim中的doc2vec。
Doc2Vec 也可叫做 paragraph2vec, sentence embeddings,是一种非监督式算法,可以获得 sentences/paragraphs/documents 的向量表达,是 word2vec 的拓展。学出来的向量可以通过计算距离来找 sentences/paragraphs/documents 之间的相似性,可以用于文本聚类,对于有标签的数据,还可以用监督学习的方法进行文本分类,例如经典的情感分析问题。
Doc2Vec的目的是获得文档的一个固定长度的向量表达
数据:多个文档,以及它们的标签,可以用标题作为标签(这个标签的意思没有明白是什么意思)
影响模型准确率的因素:语料的大小,文档的数量,越多越好;文档的相似性,越相似越好
参考网址:用gensim doc2vec计算文本相似度_老笨妞-CSDN博客_doc2vec文本相似度
doc2vec还可以细分为:DM模型、DBOW模型,在训练模型中的dm参数进行控制
具体的代码如下所示:
- 1、相关包的导入
# coding:utf-8
import sys
import gensim
import sklearn