如何在 python- gensim 中使用 Latent Dirichlet Allocation (LDA) 抽象二元组主题而不是一元组?
How to abstract bigram topics instead of unigrams using Latent Dirichlet Allocation (LDA) in python- gensim?
LDA 原始输出
Uni-grams
topic1 -水肺、水、蒸汽、潜水
topic2 -二氧化物、植物、绿色、碳
需要输出
二元词主题
topic1 -水肺潜水,水蒸气
topic2 -绿色植物,二氧化碳
有什么想法吗?
您可以使用 word2vec 从使用 LDA 抽象的前 n 个主题中获取最相似的术语。
LDA 输出
使用抽象主题(例如:-san_francisco)创建二元语法词典
然后,执行 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模型。因此,由下划线连接的双字母组被视为单个标记。
LDA 原始输出
Uni-grams
topic1 -水肺、水、蒸汽、潜水
topic2 -二氧化物、植物、绿色、碳
需要输出
二元词主题
topic1 -水肺潜水,水蒸气
topic2 -绿色植物,二氧化碳
有什么想法吗?
您可以使用 word2vec 从使用 LDA 抽象的前 n 个主题中获取最相似的术语。
LDA 输出
使用抽象主题(例如:-san_francisco)创建二元语法词典
然后,执行 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模型。因此,由下划线连接的双字母组被视为单个标记。