Gensim LSI方法show_topics返回的概率为何为负?

问题描述

(0, '0.707 *“उ로्” + 0.707 *“यूरयू” + -0.000 “बुद्ध” + -0.000 *“जन्म” +' '0.000 *“बेल्जियम” + 0.000 *“किंगडम” + 0.000 *“नेपाल” + 0.000 *“ऑफ़” +' '-0.000 “युन” + -0.000 “स्थली” *')]
文件所述
show_topics(num_topics = -1,num_words = 10,log = False,格式化为True)
返回num_topics最重要的主题认情况下全部返回)。 对于每个主题,请显示num_words个最重要的单词(认为10个单词)。

主题以列表形式返回-如果格式为True,则为字符串列表,如果为False,则为(单词,概率)2元组的列表。

如果log为True,则将此结果也输出到log。

def preprocessing(corpus):
    for document in corpus:
        doc = strip_short(document,3)
        doc = strip_punctuation(doc)
        yield word_tokenize(doc)
texts = preprocessing(corpus)
dictionary = corpora.Dictionary(texts)
dictionary.filter_extremes(no_below=1,keep_n=25000)

doc_term_matrix = [dictionary.doc2bow(tokens) for tokens in preprocessing(corpus)]
tfidf = models.TfidfModel(doc_term_matrix)
corpus_tfidf = tfidf[doc_term_matrix]

lsi = models.LsiModel(corpus_tfidf,id2word=dictionary)
pprint(lsi.show_topics(num_topics=4,num_words=10))
[(0,'0.707*"उत्तरपश्चिमी" + 0.707*"यूरोप" + -0.000*"बुद्ध" + -0.000*"जन्म" + '
  '0.000*"बेल्जियम" + 0.000*"किंगडम" + 0.000*"नेपाल" + 0.000*"ऑफ़" + '
  '-0.000*"युन" + -0.000*"स्थली"'),(1,'0.577*"किंगडम" + 0.577*"बेल्जियम" + 0.577*"ऑफ़" + -0.000*"जन्म" + '
  '-0.000*"बुद्ध" + -0.000*"भगवान" + -0.000*"स्थित" + -0.000*"लुंबिनी" + '
  '-0.000*"उत्तरपश्चिमी" + -0.000*"यूरोप"'),(2,'0.354*"जन्म" + 0.354*"भगवान" + 0.354*"स्थित" + 0.354*"स्थली" + 0.354*"युन" '
  '+ 0.354*"बुद्ध" + 0.354*"लुंबिनी" + 0.354*"नेपाल" + 0.000*"उत्तरपश्चिमी" + '
  '0.000*"यूरोप"')]

解决方法

感谢使用SO。

show_topics 为您提供了语料库中最重要的主题。您看到的概率是每个单词对主题的贡献。例如在定义此主题时,“उ््तर”和“यूरोप”分别贡献0.707,而“बेल्जियम”则贡献0.000。

当显示单词的贡献时,该模型显示最大的绝对值,但由于截断了接近0(例如-0.0000008)的浮点数,因此显示为-0.00。

参考:https://radimrehurek.com/gensim/models/lsimodel.html