形態素解析器として圧倒的な性能を誇るMeCabですが、出来る事は形態素解析にとどまりません。公式ページにも載っているように、辞書さえカスタマイズすればひらがな⇔カタカナ変換やAutoLinkの作成といったことまで出来ます。
WikipediaのデータとMeCabを使えば、高速なキーワード抽出が出来ないかなと思い試してみました。辞書の定義にコストを書けば、長いキーワードを優先して抽出する最長一致法が出来そうです。それが出来れば、辞書にキーワードを登録すればおっけいかなと思い実験です。
準備
・Mecabのインストール
省略
・Wikipediaのダウンロード
wikipediaからコーパスの作成を参照
・辞書生成用のCSV作成
xml2sqlで作ったpage.txtを変換します。
この際、(曖昧さ回避)は除いておきます。
併せて、カンマが入っている見出し文は、別のものに置き換えておくこと
cat page.txt | awk '{print $3}' | grep -v "(曖昧さ回避)" > wiki.txt アップロードログ_2004年4月 削除記録/過去ログ_2002年12月 アンパサンド Sandbox Brion_VIBBER 言語 日本語 地理学 欧州連合
textからMeCabの辞書作成用のCSV作成のスクリプトです。
CSVの項目としては、左から見出し語,左文脈との連結コスト,右文脈との連結コスト,出現コスト,品詞となります。接続コストは、ともに0でおっけいです。出現コストは、長い言葉ほどコストを低くします。ただし、intの範囲内で。最後に品詞はなんでも良いです。URLでも入れればwikipediaへのAutoLinkが作れます。今回は面倒くさいので、見出し語をそのまま入れてあります。
#!/usr/bin/perl use strict; use warnings; my $file = shift @ARGV; open(IN, $file); while (<IN>) { chomp; if (length($_) > 1) { #print $_,",0,0,",max(-36000,-400 * (length^1.5)),",$_\n" ; print "$_,0,0,",max(-36000,-400 * (length^1.5)),",$_\n" ; } } sub max { my $comp = shift @_; my $val = shift @_; my $max = $comp; if ( $comp <= $val ) { $max = $val; } return int($max); }
・設定ファイルの作成
以下、4ファイルを作成
matrix.def
1 1 0 0 0
unk.def
DEFAULT,0,0,0,* SPACE,0,0,0,*
char.def
DEFAULT 1 0 0 SPACE 0 1 0 0x0020 SPACE
dicrc
dictionary-charset = utf-8 cost-factor = 800 bos-feature = BOS/EOS output-format-type=extract node-format-extract = %H\n unk-format-extract = eos-format-extract = \n
最後に改行コードが入るとエラーが出るので、注意しましょう。
・辞書作成
/usr/local/libexec/mecab/mecab-dict-index -f utf-8 -c utf-8 # /usr/local/libexec/mecab/mecab-dict-index -f utf-8 -c utf-8 ./pos-id.def is not found. minimum setting is used reading ./unk.def ... 2 emitting double-array: 100% |###########################################| ./pos-id.def is not found. minimum setting is used reading ./title.csv ... 1272597 emitting double-array: 100% |###########################################| reading ./matrix.def ... 1x1 done!
・試してみる
# mecab -d . 経済学の最も古い定義は、アダム・スミスが『諸国民の富の性質と原因の研究』によるものである。 経済 学 の も い 定義 は 、 ア ダム ・ スミ ス が 『 諸国民の富の性質と原因の研究 』 に よる もの で ある 。
うーん。微妙に上手くいかない。
アダム・スミスや経済学で出てきてほしい。また、「に」やら「で」やらは出てきてほしくない。もうちょっと調べてみる必要がありそうです。