###前提・実現したいこと
gensimを用いてテキストをLDAモデルに適用するプログラムを作成しています。
現在csvファイルを読み込みLDAに適用しトピックを出力するプログラムは実装できたのですが同じcsvファイルを用いて実行しているのにもかかわらず下のようにトピックの内容が毎回変わってしまいます。
これが正しい挙動をしているのかも分からない状態でいるのでこれが正しい状態なのか、またプログラムの不備が原因であればその箇所を指摘していただきたいです。
###実行結果(2回)
In [86]: runfile('C:/Users/user5/.spyder-py3/corpus.py', wdir='C:/Users/user5/.spyder-py3') topic (0, '0.083*"0.26" + 0.057*"0.22" + 0.051*"0.52" + 0.044*"0.56" + 0.040*"0.54" + 0.034*"0.28" + 0.033*"0.24" + 0.033*"0.6" + 0.032*"0.64" + 0.030*"0.62"') (1, '0.069*"0.24" + 0.061*"0.52" + 0.054*"0.28" + 0.048*"0.6" + 0.047*"0.26" + 0.044*"0.58" + 0.041*"0.22" + 0.040*"0.56" + 0.031*"0.54" + 0.029*"0.62"') (2, '0.117*"0.28" + 0.092*"0.26" + 0.089*"0.52" + 0.051*"0.56" + 0.050*"0.54" + 0.038*"0.58" + 0.037*"0.24" + 0.035*"0.62" + 0.033*"0.66" + 0.030*"0.18"') (3, '0.103*"0.52" + 0.097*"0.28" + 0.089*"0.54" + 0.064*"0.56" + 0.050*"0.26" + 0.048*"0.58" + 0.040*"0.6" + 0.032*"0.12" + 0.030*"0.14" + 0.029*"0.62"') In [87]: runfile('C:/Users/user5/.spyder-py3/corpus.py', wdir='C:/Users/user5/.spyder-py3') topic (0, '0.057*"0.28" + 0.056*"0.56" + 0.054*"0.26" + 0.045*"0.24" + 0.045*"0.54" + 0.043*"0.6" + 0.037*"0.62" + 0.035*"0.52" + 0.031*"0.58" + 0.030*"0.22"') (1, '0.057*"0.64" + 0.045*"0.28" + 0.029*"0.22" + 0.028*"0.52" + 0.028*"0.26" + 0.027*"0.1" + 0.024*"0.7" + 0.023*"0.14" + 0.023*"0.2" + 0.022*"0.56"') (2, '0.146*"0.52" + 0.122*"0.28" + 0.097*"0.54" + 0.073*"0.26" + 0.062*"0.56" + 0.045*"0.58" + 0.038*"0.24" + 0.037*"0.22" + 0.033*"0.6" + 0.023*"0.12"') (3, '0.066*"0.58" + 0.060*"0.52" + 0.060*"0.54" + 0.049*"0.28" + 0.047*"0.56" + 0.046*"0.6" + 0.042*"0.16" + 0.042*"0.14" + 0.039*"0.12" + 0.038*"0.62"') In [88]:
###該当のソースコード
Python3
1# -*- coding: utf-8 -*- 2""" 3Created on Fri Oct 20 16:20:11 2017 4 5@author: user5 6""" 7 8import pandas as pd 9import numpy as np 10import matplotlib.pyplot as plt 11import csv 12import gensim 13from gensim import corpora, models, similarities 14import urllib3 15import glob 16 17 18 19 20dataReader = csv.reader(open('corpus.csv', 'rt' 21 , encoding="utf-8" 22 )) 23data = [ v for v in dataReader] 24 25#print(data) 26dictionary = corpora.Dictionary(data) 27 28 29dictionary.filter_extremes( 30 no_below=6 31 , 32 no_above=0.7 33 ) 34# no_berow: 使われてる文章がno_berow個以下の単語無視 35# no_above: 全部の文章の30パーセント以上に出現したワードは一般的すぎるワードとして無視します 36 37#print(dictionary.token2id) 38 39dictionary.save_as_text('deerwester.dict.txt') 40 41corpus = [dictionary.doc2bow(d) for d in data] 42 43#print(corpus) 44 45topic_num = 4 46lda = gensim.models.ldamodel.LdaModel(corpus=corpus, num_topics=topic_num, id2word=dictionary) 47lda.save('jawiki_lda.model') 48#保存 49# lda = gensim.models.LdaModel.load('jawiki_lda.model') #呼び出し 50 51print('topic') 52for topic in lda.show_topics(-1): 53 print(topic) 54
###補足情報(言語/FW/ツール等のバージョンなど)
OS:Windows
エディタ:Anaconda Spyder
言語:Python3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/21 03:33