2017-09-05 84 views
0

我已经应用Doc2vec将文档转换为矢量。之后,我使用矢量进行聚类,并找出每个聚类的质心最近/最相似的文档。现在我需要找到这些文档中最重要或最重要的术语,以便我能够弄清楚每个集群的特征。 我的问题是有什么方法可以找出Doc2vec中文档中最主要或最相近的术语/单词。我正在使用python的gensim包来实现Doc2vec的实现如何在doc2vec中找到文档中最相似的术语/词汇?

+0

请提供文档的示例文本以及代码。 –

回答

1

要找出群集中最主要的单词,您可以使用这两种经典方法中的任何一种。我个人发现第二个非常有效和有效的这个目的。

  • 潜在Drichlet分配(LDA)潜在Drichlet分配(LDA):一个主题建模算法,将给你一组主题给定一组文档。您可以将群集中的一组相似文档视为一个文档,并应用LDA生成主题并查看跨文档的主题分布。

  • TF-IDF:TF-IDF计算给定文档集合的单词对文档的重要性。因此,要查找最重要的关键字/ ngrams,可以为出现在文档中的每个单词计算TF-IDF。 TF-IDF最高的词就是你的关键词。所以:

    • 计算IDF为出现在基于对包含该关键字
    • 串联的类似文件的文本文档号文件的每一个字(我会称之为超文件)然后计算出现在这个超级文档中的每个单词的TF。
    • 为每个单词计算TF * IDF ...然后TA DAAA ...您将关键字与每个集群关联起来。

    请参阅第5.1节,了解更多关于使用TF-IDF的详细信息。

1

@ TrnKh的answer是好的,但有一个附加选项使用Doc2Vec时可用。

一些gensim Doc2Vec训练模式 - 将默认PV-DM(dm=1)或PV-DBOW与增加的单词训练(dm=0, dbow_words=1)列车都DOC的载体和字矢量到相同的坐标空间中,并在一定程度这意味着doc-vectors是相关的词向量,反之亦然。

因此,您可以将单个文档的矢量或您合成的平均/质心矢量提供给模型,以找到most_similar()单词。 (为了清楚,这是一个原始矢量,而不是载体密钥的列表,则应该使用的most_similar()形式指定的positive例子的显式列表。)

例如:

docvec = d2v_model.docvecs['doc77145'] # assuming such a doc-tag exists 
similar_words = d2v_model.most_similar(positive=[docvec]) 
print(similar_words) 
相关问题