肝心の自然言語処理の部分はいい加減。当初は要約文章を作ろうと思っていたのに、気づいたら単語のクラスタ分けで終わってしまった。お腹いっぱいで、ほかの事に手が付けられない。

やっていること

  • 単語・単語出現回数を持つデータを持つ辞書を作る
  • 出現頻度を持つデータ(コーパス)を作る
  • 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

モデルを回すときのパラメータは昔使った値のまま。今思うとデフォルトの値でよかった気がする。