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



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

@TrnKh的答案很好,但是在使用Doc2Vec时还有一个额外的选项可用。

一些gensim Doc2Vec训练模式 - 默认的PV-DM(dm=1)或带有附加词训练(dm=0, dbow_words=1)的PV-DBOW将文档向量和词向量训练到相同的坐标空间中,在某种程度上这意味着文档向量接近相关的词向量,反之亦然。

因此,您可以获取单个文档的向量,或您合成的平均/质心向量,并将其提供给模型以查找most_similar()单词。(为了明确这是一个原始向量,而不是一个向量键列表,你应该使用指定positive示例的显式列表的most_similar()形式。

例如:

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

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

  • 潜在德里克雷分配(LDA):一种主题建模算法,它将在给定文档集合的情况下为您提供一组主题。您可以将集群中的一组相似文档视为一个文档,并应用 LDA 生成主题并查看文档之间的主题分布。

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

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

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

最新更新