前に書いた、Macにmecabインストールの続きのメモ。
- 辞書にはてなキーワード追加
- mecabをRubyで使う
こちらをやる。
辞書にはてなキーワード追加
まえにwikipediaのタイトルを辞書に追加したが、同じ要領で。
はてなキーワードのリスト取得
$ wget http://d.hatena.ne.jp/images/keyword/keywordlist_furigana.csv
hatena_keywordlist_furigana.csv
とかにリネームしとく。
辞書用のCSVにフォーマットを変更
store_wikipedia_and_hatena_to_csv
require 'kconv'
origin =
if $*[0] =~ /wiki/
"wikipedia"
elsif $*[0] =~ /hatena/
"hatena"
else
"unknown"
end
open($*[0]).each do |title|
if origin == "wikipedia"
title.strip!
elsif origin == "hatena"
title = title.toutf8
title = title.split("\t")[1].strip
end
next if title =~ /^\./
next if title =~ /,/
next if title =~ /[0-9]{4}/
next if title =~ /^[-.0-9]+$/
title_length = title.split(//u).length
score = [-36000.0, -400 * (title_length ** 1.5)].max.to_i
if title_length > 3
print "#{title},0,0,#{score},名詞,固有名詞,*,*,*,*,#{title},*,*,#{origin},\n"
end
end
こんな感じのスクリプトを利用し、辞書用CSVを生成。
$ ruby store_wikipedia_and_hatena_to_csv hatena_keywordlist_furigana.csv | nkf -e > hatena_keyword.csv
辞書構築
/usr/local/Cellar/mecab/0.996/lib/mecab/dic/ipadic/
下にhatena_keyword.csv
を移し、
$ cd /usr/local/Cellar/mecab/0.996/lib/mecab/dic/ipadic/
$ /usr/local/Cellar/mecab/0.996/libexec/mecab/mecab-dict-index -f euc-jp -t utf-8
※mecabはMacにhomebrewで入れたやつ
これで、wikipediaタイトル+はてなキーワードを辞書として利用できる。
Rubyから利用
natto
というgemを使ってRuby(Rails)からmecab利用。
Gemfile
gem 'natto'
$ bundle
適当なメソッドを書く。
文章の配列を引数にとり、それらを形態素解析。wikipediaタイトル or はてなキーワードに合致した単語とその出現頻度を計算し、ハッシュで表示するようなロジック。
keyword_analysis.rb
class KeywordAnalysis
def self.morphological_analysis(words)
result = {}
natto_mecab = Natto::MeCab.new
words.each do |word|
natto_mecab.parse(word) do |n|
next if n.feature.split(",")[-1] !~ /wikipedia|hatena/
if result["#{n.surface}"]
result["#{n.surface}"] += 1
else
result["#{n.surface}"] = 1
end
end
end
return result
end
end
コンソールで実行
> texts = ["泣いてもいいんだよ/ももいろクローバーZ(NAITEMO IINDAYO)", "ももいろクローバーZ「GOUNN」MV", "ももいろクローバーZ「サラバ、愛しき悲しみたちよ」MV"]
> KeywordAnalysis.morphological_analysis(texts)
=> {"ももいろクローバーZ"=>3, "GOUNN"=>1, "サラバ、愛しき悲しみたちよ"=>1}
こんな感じで、Rubyから簡単にmecabを利用することができた。
twitterの全ツイートとかはてブしたリンクとかをこれで解析したら、自分の嗜好とかが単語から読み取れるかもしれない。