如何计算文档相似性

转载 2016年08月30日 19:39:22

最近课题需要,整理一下文档相似性的一些研究,主要是参考知乎上面的回答和52nlp的相关文章。以备后期综述使用。具体还需要好好细读链接。

主要思路

  1. 01/one hot representation,BOW+tf-idf+LSI/LDA体系.
  2. docsim方法:gensim包,使用corpora.Dictionary(text),把所有单词取一个set(),并对set中每一个单词分配一个id号的map,dictionary.doc2bow(doc),把文档doc变成一个稀疏向量,[(0,1),(2,3)]表明id为0,2的词分别出现了1次和2次,其他未出现。Similarity相似度查询。结果比较稳定。
  3. word-embedding,使用NN思想,word2vec只能得到词向量,比较词之间的相似度,通过简单的加权、tag加权、tf-idf加权等方式得到文档向量。
  4. doc2vec,在word2vec模型中加入了段落向量,两者对比,word2vec加权方式丢失了最重要的句子结构信息,doc2vec保留了这种信息。
  5. 句法树加权,使用LSH,sciket-learn提供了lsh的实现,比较适合短文本。lshf = LSHForest(random_state=42),lshf.fit(x_train.toarray())
    主要参考用docsim/doc2vec/LSH比较两个文档之间的相似度和知乎Batman回答

一些知乎上的观点

  • 使用word2vec做,对于短句子有效。对于词之间的相关信息,无法表达。
  • 用LSI/LSA做,基于SVD分解方式,句子中词的顺序不会影响相似度结果。句子结构信息不敏感。
  • 目前的模型对长句子绝大部分不能work,短句子中文语境下,通过适当的调参(对结果影响比较显著的,我觉得有window size和min count),word2vec的结果还比较能看,doc2vec的结果一直都比较差,尤其是比较长一点儿的句子/文章。
  • 在文档级别上,我觉得doc2vec的robust程度还不足以支撑一个产品,稳健性程度不如LSI,或者简单的tf-idf。

一些比较好的网站

  1. gensim官方教程翻译
  2. word2vec使用教程
  3. 52nlp系列
  4. 中英文维基百科语料上的Word2Vec实验
  5. 如何计算两个文档的相似度:gensim lda 课程图谱例子
  6. 语义分析的一些方法,分为上中下三篇,介绍文本基本处理:分词、语言模型;文本语义分析:topic model ,词向量、句向量、卷积神经网络、文本分类;图片语义分析:图片分类、训练深度神经网络的tricks,非常棒的资料!
  7. sentence2vec

一些可参考论文

  1. 《Destributed Representation of sentences and documents》讲doc2vec
  2. 《Parsing Natural scenes and natural recursive neural networks》句法树
  3. ICML2015的论文《From word embeddings to document distances》提出一种计算doc相似度的方式,大致思路是将词之间的余弦距离作为ground distance,词频作为权重,在权重的约束条件下,求WMD的线性规划最优解。
  4. 《Convolutional Neural Netowrk for Modelling Sentence》简单的word2vec 相加除以词个数,叫做mean-pooling,是不能反映词序信息的,可以预训练向量,然后再上一个CNN卷积神经网络。
  5. 《From Word Embeddings To Document Distances》:主要是将计算机影像领域的EMD(earth mover’s distance)算法的思想,结合word2vec模型,移植到NLP领域,提出了一个文本距离的衡量概念:WMD(word mover’s distance),通过word2vec模型,可以计算出所有词语的n维词向量(用于评价词与词之间的相似度),再用词袋模型(Bag Of Words)得到词语在文章中的词频(看作一个词语在文章中的权重),那么问题就转化成为了如何在最小代价的情况下,将文章A的所有词单元“搬运”到文章B对应词单元中,因此变成了一个transportation optimization的问题。在短文本的处理上会比较好。-知乎 陈昊
  6. 《Distributed Representations of Sentences and Documents》Mikolov 14年发表的。实用性一般。 参考意义不大,只要还停留在word2vec的框架内,就无法model到语法结构对句子相似度的影响。
  7. 《How to generate a good word embedding》:语料大使用CBOW,语料小用skip-gram,影响相似度的因素:模型、语料、参数。评价指标:语义特征、用作特征、用作初始值。导读

相关文章推荐

基于word2vec与Word Mover Distance的文档相似度计算

一、通过词向量进行文档相似度判定的背景与意义  随着人类对自身秘密的探索与研究的不断深入,以生物技术为基石的人工智能技术也在快速的发展。通过对自身的神经以及思维的研究,人们创造出人工智能,来使在各个...

学术常识—EMD(earth mover distance)距离

Earth mover's distance In computer science, the earth mover's distance (EMD) is a measure of th...

WMD:基于词向量的文档相似度计算

EMD算法简介 该部分引用自[1] Earth Mover’s Distance (EMD),和欧氏距离一样,他们都是一种距离度量的定义,可以用来测量某分布之间的距离。EMD主要应用在...
  • cht5600
  • cht5600
  • 2016年11月30日 10:45
  • 2501

常用相似性、相关性度量指标

本文将介绍一些数据挖掘、机器学习、信息检索等领域中常用的一些相似性、相关性指标...

用docsim/doc2vec/LSH比较两个文档之间的相似度

在我们做文本处理的时候,经常需要对两篇文档是否相似做处理或者根据输入的文档,找出最相似的文档。 幸好gensim提供了这样的工具,具体的处理思路如下,对于中文文本的比较,先需要做分词处理,根据分词的结...

R+NLP︱text2vec包——四类文本挖掘相似性指标 RWMD、cosine、Jaccard 、Euclidean (三,相似距离)

在之前的开篇提到了text2vec,笔者将其定义为R语言文本分析"No.1",她是一个文本分析的生态系统。笔者在学习之后发现开发者简直牛!基于分享精神,将自学笔记记录出来。开篇内容参考:重磅︱R+NL...

gensim similarity计算文档相似度

向量空间模型计算文档集合相似性。 将原始输入的词转换为ID,词的id表示法简单易用,但是无法预测未登记词,难以挖掘词关系;词汇鸿沟[1]:任意两个词之间是独立的,无法通过词的ID来判断词语之间的关系...

推荐系统-文本相似性计算(3)

前面说了两篇了,分别介绍了TFIDF和向量空间的相关东西,然后介绍了主题模型,这一篇我们就来试试这两个东西。词向量就不在这篇试了,词向量和这两个关系不大,不好对比,不过我最后也给出了代码。 0....

基于gensim的Deep learning with paragraph2vec 官方models.doc2vec文档解释

本文为基于gensim的Deep learning with paragraph2vec 官方models.doc2vec文档解释。配合gensim介绍及简单的实践例程。...
  • mrynr
  • mrynr
  • 2016年10月31日 15:50
  • 3739

doc2vec计算文档相似度

doc2vec是基于word2vec的,word2vec对于计算两个词语的相似度效率比较好,修改了word2vec中的cbow和skip-gram模型,paragraph vector直接得到doc向...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何计算文档相似性
举报原因:
原因补充:

(最多只允许输入30个字)