続いて、独自の辞書ファイルを作る
辞書に必要なファイル群を作成していく。
まずurlのリストファイル。
url.csv
Google,0,0,-5878,http://www.google.com/ Yahoo,0,0,-4472,http://www.yahoo.com/ ChaSen,0,0,-5878,http://chasen.org/ 京都,0,0,-3200,http://www.city.kyoto.jp/
その他のファイルの中身は下記のように。
これらのファイルは末尾に改行があるとエラーになるので、入れないように。
matrix.def
1 1 0 0 0
char.def
-----------
DEFAULT 1 0 0 SPACE 0 1 0 0x0020 SPACE
unk.def
DEFAULT,0,0,0,* SPACE,0,0,0,*
dicrc
cost-factor = 800 bos-feature = BOS/EOS output-format-type=autolink node-format-autolink = <a href="%H">%M</a> unk-format-autolink = %M eos-format-autolink = \n
ここまでできたら辞書をコンパイル。
$ /usr/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 ./url.csv ... 4 emitting double-array: 100% |###########################################| reading ./matrix.def ... 1x1 done!
これで辞書ファイルができたので、コマンドラインから使ってみる。
$ mecab -d . 京都に行った <a href="http://www.city.kyoto.jp/">京都</a>に行った
OK
つづいて、php_mecabから使ってみる。
sample.php
<?php $options = array('-d', '上記辞書ファイルを作成したディレクトリへのパス'); $t = new MeCab_Tagger($options); $str = '京都についてGoogleとYahooで検索した。'; print $t->parse($str); ?>
実行
$ php sample.php <a href="http://www.city.kyoto.jp/">京都</a>について<a href="http://www.google.com/">Google</a>と<a href="http://www.yahoo.com/">Yahoo</a>で検索した。
OK
※追記
url.csvのスコアを求めるサンプル
<?php $text = 'Yahoo'; $cost = (int)max(-36000, -400 * (pow(mb_strlen($text, 'UTF-8'), 1.5))); print($cost); ?>こんな感じで。