肝心の自然言語処理の部分はいい加減。当初は要約文章を作ろうと思っていたのに、気づいたら単語のクラスタ分けで終わってしまった。お腹いっぱいで、ほかの事に手が付けられない。
やっていること
- 単語・単語出現回数を持つデータを持つ辞書を作る
- 出現頻度を持つデータ(コーパス)を作る
- TF-IDF を使って単語の重要度を抽出
- LDA を使い話題を10個のクラスタ分け、単語を15個ずつ抽出する
utils.py
# 抜粋
from collections import OrderedDict
from gensim.corpora import Dictionary
from gensim.models.doc2vec import TaggedDocument
from gensim import models
import numpy as np
def classify_contents(text_tokenized):
dictionary = Dictionary(text_tokenized)
corpus = [dictionary.doc2bow(word) for word in text_tokenized]
tfidf = models.TfidfModel(corpus,normalize = False)
corpus_tfidf = tfidf[corpus]
lda = models.ldamodel.LdaModel(corpus=corpus_tfidf, num_topics=10, \
id2word=dictionary, \
iterations=1000, alpha = 0.5 ,eta=0.5,\
random_state =1,passes=5,chunksize=100,dtype=np.float64)
topics = lda.show_topics(num_words = 15 ,formatted = False)
return topics
モデルを回すときのパラメータは昔使った値のまま。今思うとデフォルトの値でよかった気がする。