如何在 python- gensim 中使用 Latent Dirichlet Allocation (LDA) 抽象二元组主题而不是一元组?

How to abstract bigram topics instead of unigrams using Latent Dirichlet Allocation (LDA) in python- gensim?

LDA 原始输出

需要输出

有什么想法吗?

您可以使用 word2vec 从使用 LDA 抽象的前 n 个主题中获取最相似的术语。

LDA 输出

使用抽象主题(例如:-san_francisco)创建二元语法词典

检查http://www.markhneedham.com/blog/2015/02/12/pythongensim-creating-bigrams-over-how-i-met-your-mother-transcripts/

然后,执行 word2vec 以获得最相似的词(uni-grams、bi-grams 等)

余弦距离

los_angeles (0.666175)
golden_gate (0.571522)
奥克兰 (0.557521)

检查 https://code.google.com/p/word2vec/(从单词到短语及更多)

鉴于我有一个名为 docs 的字典,其中包含文档中的单词列表,我可以使用 nltk.util.ngrams 或您的自己的功能是这样的:

from nltk.util import ngrams

for doc in docs:
    docs[doc] = docs[doc] + ["_".join(w) for w in ngrams(docs[doc], 2)]

然后你将这个字典的值作为语料库传递给LDA模型。因此,由下划线连接的双字母组被视为单个标记。