プログラミング

PythonとMeCabで文章を解析する方法【頻出度カウント】

投稿日:2019年5月12日 更新日:

今回はPythonとMeCabを使って日本語の文章を解析し、名詞や形容詞などの頻出度をカウントするコードをつくりました。

Twitterでデータ解析したり、商品のレビューなどを解析する際に使えると思います。

 

なお、今回はテキストデータを解析する方法のみをやってみました。大量のデータ収集や、その分析はまたの機会に試してみたいと思います。

今後、この記事にあるコードに追加することで簡単に大量データを解析することができるようになる予定です。

スポンサーリンク

 

 

 

■単語頻出度のカウントコード

単語頻出度をカウントするコードをつくりました。なお、今回は形態素解析ライブラリのMeCabを使って、助詞と助動詞、接続詞以外の品詞の単語を全てカウントするコードになっています。

 

助詞、助動詞、接続詞を取り除くことで、文章の意味のある要素だけを取り出すことができると考えたので除外しました。

 

まず始めに全コードを紹介します。これをコピペして入力のテキストデータを変更すれば自分の解析したい文章を解析することができます。

 

以下コードの解説です。

 

WordFreqCountに指定した単語を入力し、word_dicにすでにある単語の場合はカウントを+1に、まだカウントの始まっていない新単語の場合はカウント=1を与えています。

word_dicの中身は、(“単語” , カウント数)の形で保存されています。例えば、(“今日”, 1)や(”新幹線”, 119)ですね。

 

 

上から3行目までのコードは、MeCabにより文章を形態素解析する部分です。この時点で、nodeに文章が解析された結果が入っています。

While文内で、抽出したい品詞を指定し、該当する品詞を持つ単語をWordFreqCountメソッドへ渡しています。指定した品詞以外の単語はpassされます。

node = node.nextを書かないと次のnodeへ移動しないので注意して下さい。ハマりかけました(笑)

 

 

辞書リストをそのまま出力すると、key値(単語)のみが出力されます。なので、key値とvalue値をまとめて出力するためのコードになります。

そして最後に降順に並び替えています。解析する際は最頻出の要素を調べたいですからね。

ちなみにreverse=Trueを消すと、昇順に並び替えられます。

 

 

以上で処理したデータをCSV出力するだけです。

1行目の”wordcount_dic.csv”の部分を”保存したいファイル名.csv”とすることでCSVファイルを出力できます。

 

 

スポンサーリンク

 

■実際に動かしてみた

以上で説明したコードを実際に動かしてみました。

まず初めに簡単な短文を入力!

 

出力は以下のようになりました。

 

短文ですと思った通りに出力ができました!よかったよかった。

 

次は大量のテキストデータを取得し、データ解析してみたいと思います。

 

 

 

■まとめ

今回紹介したコードを使えばテキストデータから頻出単語をカウントすることができます。

文章の特徴を抽出することができるので、Twitterのデータ解析に使えそうですね。

 

今回はテキストデータ解析の点だけやったので、次回は大量のテキストデータ収集、およびその解析をやってみたいと思います。

 

以上になります。最後まで読んでいただきありがとうございました。

スポンサーリンク

当サイト(your-3d.com)の管理人のゆあーさんと申します。

このサイトでは、私がZBrushやunityなどで調べたことをわかりやすく共有出来たらいいなと思い開設しました。

読んでくださった皆様のお役に立てたら幸いです。

 

Twitter:

@yoursun3d

 

Booth(3Dモデル販売してます!):

https://your-3d.booth.pm/

 

Amazonほしいものリスト:

https://www.amazon.jp/hz/wishlist/ls/YIXXWB7FVXHG?ref_=wl_share