如何在python-gensim中使用Latent Dirichlet Allocation(LDA)抽象bigram主题而不是unigrams?

Tho*_*N T 5 nlp text-mining lda gensim

LDA原始输出

  • 单克

    • topic1 -scuba,水,蒸气,潜水

    • topic2-diioxide,植物,绿色,碳

要求的输出

  • 双键主题

    • topic1-潜水,水汽

    • topic2-绿色植物,二氧化碳

任何的想法?

noi*_*eld 7

鉴于我有一个叫做dict的dict docs,包含文档中的单词列表,我可以使用nltk.util.ngrams或你自己的函数将它变成一个单词+ bigrams(或者还有trigrams等)的数组:

from nltk.util import ngrams

for doc in docs:
    docs[doc] = docs[doc] + ["_".join(w) for w in ngrams(docs[doc], 2)]
Run Code Online (Sandbox Code Playgroud)

然后将此dict的值作为语料库传递给LDA模型.因此,由下划线连接的Bigrams被视为单个令牌.


Tho*_*N T 3

您可以使用 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/ (从单词到短语及其他)