0

全て、

これは、このスレッドで回答した内容の再投稿です。gensim で LSI トピックを印刷しようとすると、まったくおかしな結果が得られます。これが私のコードです:

try:
    from gensim import corpora, models
except ImportError as err:
    print err

class LSI:
    def topics(self, corpus):
        tfidf = models.TfidfModel(corpus)
        corpus_tfidf = tfidf[corpus]
        dictionary = corpora.Dictionary(corpus)
        lsi = models.LsiModel(corpus_tfidf, id2word=dictionary, num_topics=5)
        print lsi.show_topics()

if __name__ == '__main__':
    data = '../data/data.txt'
    corpus = corpora.textcorpus.TextCorpus(data)
    LSI().topics(corpus)

これにより、以下がコンソールに出力されます。

-0.804*"(5, 1)" + -0.246*"(856, 1)" + -0.227*"(145, 1)" + ......

@2er0 がここで行ったようにトピックを印刷できるようにしたいのですが、このような結果が得られています。以下を参照してください。出力された 2 番目の項目はタプルであり、どこから来たのかわからないことに注意してください。data.txt は、いくつかの段落を含むテキスト ファイルです。それだけです。

これについての考えは素晴らしいでしょう!アダム

4

2 に答える 2

0

見た目は醜いですが、これでうまくいきます(純粋に文字列ベースのアプローチ):

#x = lsi.show_topics()
x = '-0.804*"(5, 1)" + -0.246*"(856, 1)" + -0.227*"(145, 1)"'
y = [(j.split("*")[0], (j.split("*")[1].split(",")[0].lstrip('"('), j.split("*")[1].split(",")[1].strip().rstrip(')"'))) for j in [i for i in x.strip().split(" + ")]]

for i in y:
  print y

上記の出力:

('-0.804', ('5', '1'))
('-0.246', ('856', '1'))
('-0.227', ('145', '1'))

そうでない場合は、lsi.show_topics()の代わりにlsi.print_topic(i)を試すことができます

for i in range(len(lsi.show_topics())):
  print lsi.print_topic(i)
于 2013-03-07T13:46:37.920 に答える