如何在doc2vec中找到文档中最相似的术语/单词?

时间:2017-09-05 05:23:47

标签: python cluster-analysis gensim word2vec doc2vec

我已经应用Doc2vec将文档转换为向量。之后,我在聚类中使用了向量,并找出了与每个聚类的质心相近的5个最近/最相似的文档。现在我需要找到这些文档中最主要或最重要的术语,以便我可以找出每个集群的特征。 我的问题是有没有办法找出Doc2vec中文档中最主要或类似的术语/单词。我正在使用python的gensim包用于Doc2vec实现

2 个答案:

答案 0 :(得分:3)

@ TrnKh' answer很好,但使用Doc2Vec时可以使用其他选项。

一些gensim Doc2Vec训练模式 - 默认PV-DM(dm=1)或PV-DBOW加上单词训练(dm=0, dbow_words=1)训练doc-vectors和word-vectors到同一训练模式坐标空间,在某种程度上,这意味着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)

答案 1 :(得分:1)

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

  • Latent Drichlet Allocation(LDA):一种主题建模算法,它将在给定文档集合的情况下为您提供一组主题。您可以将群集中的类似文档集视为一个文档,并应用LDA生成主题并查看跨文档的主题分布。

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

    • 根据包含该关键字的文档数量计算文档中出现的每个单词的IDF
    • 连接类似文档的文本(我称之为超级文档),然后为这个超级文档中出现的每个单词计算TF
    • 为每个单词计算TF * IDF ...然后TA DAAA ...您的关键字与每个集群相关联。

    请查看第5.1节,了解有关使用TF-IDF的详细信息。