如何从Python Gensim中的两个文档的主题分布比较主题相似度?

时间:2019-03-22 01:38:10

标签: python gensim lda

我已经使用Gensim在语料库上训练了LDA模型。现在我已经为每个文档分配了主题,如何比较主题中两个文档的相似程度?我想采取一个简易措施。例如,以下是两个文档的主题分布。总共有75个主题。为简洁起见,我仅显示概率最大的前10个主题(因此主题不按顺序排列)。 (40,0.5523168)表示主题#40对于DOC#1的概率为0.5523168。我应该计算两个向量之间的欧式距离或余弦距离吗?并使用这种概括性的度量,我可以说,例如,DOC 1与DOC2相比更像DOC3,或者DOC1和DOC 2彼此之间比DOC 3和DOC 4更相似?谢谢!

DOC #1:
[(40, 0.5523168), (60, 0.12225048), (43, 0.07556598), (41, 0.065885976), 
(22, 0.05838573), (24, 0.044774733), (74, 0.019839266), (65, 0.019544959), 
(51, 0.015470431), (36, 0.013449047)]


DOC #2:
[(73, 0.58864516), (41, 0.16827711), (51, 0.09783472), (63, 0.06510383), 
(24, 0.04722658), (32, 0.014467965), (44, 0.012267662), (47, 0.0031533625), 
(18, 0.0022214972), (0, 1.2154361e-05)]

1 个答案:

答案 0 :(得分:1)

Gensim功能

Gensim提供了similarities.docsim功能-“在向量空间模型中计算文档集合中的相似度”。您可以在此处看到documentation,在此处还可以看到tutorial用于相似性查询。

文档相似性度量

使用欧氏距离是不常见的选择-可以,但是存在潜在的问题。您可以使用余弦相似度(link to python tutorial)-取两个文档向量的角度的余弦值,其优点是易于理解(1 =文档完全相似,-1 =文档在以下位置不相似)全部),是的,您可以比较文档1和2的余弦相似度并将其与文档3和4的余弦相似度,或者计算doc1与doc2以及doc1和doc3的相似度值并进行比较。有一个漂亮的good tutorial here.

即使您的问题有所不同,您也可能会找到我对this question over at CrossValidated的回答,内容翔实。

Gensim还提供其他distance metrics。这些几乎全部包含在gensim的matutils中。

局部距离

您还可以使用上面链接中的某些距离(例如,赫林格距离)来测量主题之间的距离。