てきとーなブログ

てきとーに書き綴ります。なので、正しいかは責任を負えません。

単語ngramして頻出順に並べる&グラフにする

前回、暇つぶしとしてpythonを使ってある文書の文字単位でngramで切り取りそれを頻出度順に並べたのですが、今回は単語レベルで行いました。単語の切り取りに関しては英語はスペースなどを区切りに、日本語はMeCabを使って行いました。

MeCabと辞書のインストール

mecabと辞書は適当にパッケージからインストールなどすればいいのですが、pythonからmecabへアクセスするバインディングはver2までしか対応していないとのことでしたが、検索するとpython3用のラッパーを公開している方がいたので素直に使わせていただきました。こちらはpipでインストールできます。

スクリプト言語のバインディング

python3対応 Mecabの紹介 - Python, web, Algorithm 技術的なメモ

sudo apt-get install mecab mecab-ipadic-utf8
pip3 install mecab-python3

プログラムは以下のような感じで、カウントしたくない単語リストをstop.txtとして用意しました。

単語ngramでグラフをプロット

英語の文書、日本語の文書それぞれ結果は以下のような感じでした。TF-IDFなどの工夫があれば、もうすこしマシになったかもしれません。ちなみに使った文書はwikipediaの記事です。

f:id:azoay:20150624054420p:plain

f:id:azoay:20150624055158p:plain