意馬心猿 - いばしんえん

欲望のままにプログラミング

MeCabを使ってブログの本文を形態素解析してみた。

”自分のブログで形態素解析してみるか。”

 

f:id:santamalia:20160214132552p:plain

 

今回は日本語形態素解析ツールMeCab、nattoというGEMパッケージ、言語はRubyで解析しました。

MeCabのインストール等はこちら

</>test-natto-02.rb

  • open-uriライブラリを使ってこのブログからhtmlデータを取得しています。
  • 極力本文以外の余計なテキストは取り除くために、<scriptから</script>までをgsubメソッドで空値に置き換えて、削除しています。(それでも不完全ですが)
  • タグに関しては、正規表現 /<.*?>/ にマッチする部分は空値に置換して削除しています。
  • natto.parse{ }内で形態素解析+ハッシュの作成を行っています。
  • ハッシュの初期化の際、word_hash = Hash.new(0)としているので、単語の出現回数の初期値は0になっています。
  • if文で今まで出現していたかを判定し、出現していないなら、.store(n.surface,1)でハッシュに単語を登録し、出現していれば、.store(n.surface,count+1)でハッシュを更新しています。
  • 最後に、sort_byメソッドで出現回数が多い順にソートして表示しています。

結果は以下のようになりました。

 

["、", 76]
[".", 65]
["の", 49]
["\r \r", 49]
["_", 48]
["を", 42]
["て", 41]
[",", 40]
["。", 38]
["-", 38]
["に", 37]
["”", 36]
["た", 36]
["が", 35]
[" ", 33]
["は", 30]
["(", 29]
[":", 28]
["'", 27]
["',", 25]
["で", 25]
["=", 23]
["と", 22]
["x", 19]
["\\", 18]
["です", 18]
["hatenadfp", 18]
["27", 18]
["!", 16]
[")", 14]
["し", 14]
["/", 14]
["2016", 13]
["user", 13]
["google", 13]
["・", 12]
[";", 12]
["('", 12]
["い", 12]
["afc", 12]
["か", 12]
["0", 12]
["02", 11]
["2", 10]
["ga", 10]
["まし", 10]
["1", 10]
["[", 10]
["\r", 10]
["container", 9]
["adUnits", 9]
["div", 9]
["こと", 9]
["な", 9]
["{", 9]
["ブログ", 9]
["読者", 8]
["#", 8]
["意馬心猿", 7]
["r", 7]
["i", 7]
["TSUTAYA", 7]
["\r \r\r \r", 7]
["js", 7]
["santamalia", 7]
["');", 7]
["目", 7]
["\"", 7]
["ない", 6]
["||", 6]
["ので", 6]
["}", 6]
["も", 6]
["':", 6]
["01", 6]
["なー", 6]
["もっと", 6]
["という", 6]
["〜", 6]
["ます", 6]
["する", 6]
["s", 6]
["読む", 5]
["a", 5]
["書く", 5]
["なっ", 5]
["解析", 5]
["ん", 5]
["コメント", 5]
[");", 5]
["野球", 5]
["id", 5]
["Tweet", 5]
["list", 5]
["そして", 5]
["プログラミング", 5]
["はてな", 4]
["ヘッダー", 4]
["13", 4]
["ば", 4]
["でし", 4]
["真田", 4]
["document", 4]
["実行", 4]
["install", 4]
["3", 4]
["インストール", 4]
["MeCab", 4]
["み", 4]
["d", 4]
["形態素", 4]
["引用", 4]
["ー", 4]
["09", 4]
["なる", 4]
["m", 4]
["行く", 4]
["push", 4]
["表示", 4]
["用", 4]
["var", 4]
["今日", 4]
["らしい", 4]
["みる", 4]
["から", 4]
["25", 4]
["また", 4] 

まだ記事の数が少ないので、あまりいいデータではありませんが、単語に分解し、出現回数を数えることには成功しました。

 

もっと記事が増えてきたら、またやってみようと思います。