プログラミング

MeCabとnattoで形態素解析をやってみたよ!

サークルのLT(ライトニングトーク)にてTwitter解析して気分にあわせた音楽を教えてあげるとかいうわくわく心をくすぐるものを紹介されたので、ちょっと調べてやってみることに。

形態素解析とは言語処理の一種です。
例えば、「私は将来プログラマを目指しています。」とかがあったとすると、「私」「は」「将来」「プログラマ」「を」「目指し」「て」「い」「ます」みたいに意味のある最小単位に分解して解析することです。

・準備
MeCab: Yet Another Part-of-Speech and Morphological Analyzer
osdn.jp

こっからmecabを落としてくる。

qiita.com
これがだいぶ参考になった。

ruby使うので、なかったら
qiita.com
これにしたかってrubyをインストール。

で、rubyでmecabを使うために、mecab-rubyをインストール
d.hatena.ne.jp

・さぁやってみよう
まずは、ターミナルからmecabを使ってみる。
mecabって打ってから先程の例「私は将来プログラマを目指しています」とうつと・・・。
gyazo.com

ほえええ!!簡単になんかすごいっぽいことできた!!!

では次はrubyからいじってみよう!

require 'MeCab'
mecab = MeCab::Tagger.new
sentence = "ひよっこプログラマです。周りにプログラミングすごい人多いです。良いプログラマ目指してがんばります。"
puts mecab.parse(sentence)
node = mecab.parseToNode(sentence)
word_array = []
begin
node = node.next
if /^名詞/ =~ node.feature.force_encoding("UTF-8")
word_array << node.surface.force_encoding("UTF-8")
end
end until node.next.feature.include?("BOS/EOS")
word_hash = {}
word_array.each do |key|
word_hash[key] ||=0
word_hash[key] += 1
end
array = word_hash.sort_by{|key,val| val}.reverse
puts array

とまぁこんな感じ。

require 'MeCab'
mecab = MeCab::Tagger.new
sentence = "ひよっこプログラマです。周りにプログラミングすごい人多いです。良いプログラマ目指してがんばります。"
puts mecab.parse(sentence)

この部分は、はじめにMeCab使うよーって明示しておいて、その下でインスタンスの生成。
mecab.parse(sentence)ってので、sentenceの内容を形態素解析出来るので、その結果をputsで表示し明日。

 if /^名詞/ =~ node.feature.force_encoding("UTF-8")
word_array << node.surface.force_encoding("UTF-8")

ここの部分で、名詞だけを取ってきています。解析するときは接続詞だけがやたら出てきたりするのですが文の意味に大きな影響を与えるのは名詞なので、rubyの正規表現を使って当てはまる物だけを配列に格納しています。

word_hash = {}
word_array.each do |key|
word_hash[key] ||=0
word_hash[key] += 1
end
array = word_hash.sort_by{|key,val| val}.reverse
puts array

で、この部分で何回その単語が出てくるのかを記録して、配列に出現回数が多い順に並び替えて格納します。
その配列を表示してやれば・・・。名詞が出現回数順に表示されます。

gyazo.com

という感じにうまいこと文中の頻出単語がとれています。
解析ができると幅が広がる!楽しい。

にほんブログ村 大学生日記ブログ 理系大学生へ
にほんブログ村

公式LINEに登録してビジネスを学ぼう
無料LINEマガジンへの登録で、5つの豪華特典をプレゼント!
  1. 日本一わかりやすい「経済的自立を果たす人生攻略の10ステップ」(33分23秒)
  2. 見るだけで売上3倍は確実。「時給10円から年商10億」に至るまでの全ての道のり(39分15秒)
  3. 有料講演会の内容を公開。最短最速で0→1を立ち上げる起業術(1時間08分35秒)
  4. 起業初心者へ向けた即金で10万円を稼ぐ具体マニュアル(PDF24ページ)
  5. 資本主義社会においてお金持ちになる5つのルール(17分36秒)
その他、有益なコラムを完全無料で閲覧し放題!
\豪華特典を今すぐゲット/