【備忘録】形態素解析からのWordCloud


pythonファイルに入れていた文章を別ファイルへ移行

textmining_source.txt
scaffoldとは?
Railsの開発に必要なルーティング、コントローラ、ビューの作成に加え、基本的なアクションの設定なども自動ですべてやってくれる便利ツールのこと

【個人的に感じたscaffoldの良さ】
①コントローラの作成だけでなく、7つの基本アクションも自動で設定してくれる
scaffoldで作成されたコントローラには、「index」「show」「new」「edit」「create」「update」「destroy」の7つのアクションが自動で定義されています。そのため、自分でアクションを設定しなくても、すぐにデータの参照や新規作成、変更、削除を行うことができます。

②作成されたコントローラに対応するルーティングも自動で設定してくれる
scaffoldコマンド後のroutes.rbには、「resources :コントローラ名」という記述が追加されており、新たに作成されたコントローラに対応するルーティングが自動で設定されています。

③コントローラで定義されたアクションに対応するビューも全て自動生成してくれる
scaffoldを使用した場合、コントローラで定義されたアクションに対応するビューファイルも全て自動で生成されます。

④必要なモデルおよびマイグレーションファイルも自動生成してくれる
scaffoldでは、コマンド入力時に「カラム名:データ型」を指定すると、指定された情報を含むモデルおよびマイグレーションファイルを自動生成してくれます。
そのため、あとは「$ rake db:migrate」コマンドを入力するだけで、データベースのテーブルも簡単に作成できます。(この辺りの詳細は後ほど)

→もちろん、scaffoldを使って世の中に出すアプリケーションをつくるのはちょっと違う(というより逆に無駄が多い)と思いますが、個人的には興味のある機能を試しに実装するための試作品をつくる上ではめちゃめちゃ便利だなと感じています。

ということで、以下scaffoldを使用したRailsアプリケーションの作成手順について記載します。
本当に簡単なので、もしよかったら実際に使ってみて下さい!

そして、いよいよWordCloudを使った可視化

with open('textmining_source.txt') as f:
    text = f.read()

keywords = t.parse(text)

words = []
for x in keywords.split("\n"):
    word = x.split("\t")[0]
    if word == "EOS":
        break
    else:
        category = x.split("\t")[1].split(",")[0]
        if category == "名詞":
                words.append(word)
        else:
            category = x.split("\t")[1].split(",")[0]
            if category == "形容詞":
                words.append(word)

splitted =' '. join(words)
keywords = splitted.replace(',',' ')

wordcloud = WordCloud(
    background_color="white",
    stopwords={"もの","これ","ため","それ","ところ","よう","の","たち","こと"},
    font_path="NotoSansCJKjp-hinted/NotoSansCJKjp-Regular.otf",
    width=800,height=600).generate(keywords)


wordcloud.to_file("./textmining_result.png")

<出力結果>WordCloud

ちなみに、以下はスティーブジョブズの有名なスピーチをWordCloudで可視化したものです。
パッと見ただけでなんとなく話の全体感がつかめそうですね!
※スピーチ内容の参考元:https://kigyotv.jp/news/special16/
1つ目の話

2つ目の話

3つ目の話