形態素解析システム sen における辞書への単語登録
以下は sen-1.2.2.1 を用いた場合の単語登録について述べている.バージョンによって build.xml の書式が異なるため,適時読み替えること.
sen が利用する辞書は /usr/local/sen/dic/dic.csv である.このファイルの各行(レコード)は次のようになっている.
三田村,3284,名詞,固有名詞,人名,姓,*,*,三田村,ミタムラ,ミタムラ
そのレコード構造は以下のとおりである.
見出し語,コスト,品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用形,活用型,原形,発音
新たに単語を追加したい場合,適当な CSV ファイルを作り,それを sen に認識させればよい.
/usr/local/sen/dic 下に user.csv を作り,登録したいデータを書き込む.
UNIX,2500,名詞,固有名詞,一般,*,*,*,UNIX,ユニックス,ユニックス
この際,dic.csv と文字コードを一致させることに注意.(私のマシンではデフォルトのロケールは UTF だが,sen の辞書は EUC-JP で書かれている)
次に /usr/local/sen/dic/build.xml の中の arg line の行を以下のように書き換える.これによって,sen が参照する辞書は user.csv と dic.csv の2つになる.
変更前:
<jvmarg line="-Dorg.apache.commons.logging.Log=org.apache.commons.logging\ .impl.SimpleLog -Dorg.apache.commons.logging.simplelog.log.net.java=info"/> <!-- Comment out if you would like to add your custom dictionary. Custom dictionary format have to compatibule with 'dic.csv'. This parameter is a file path for custom dictionary. You can add multiple dictionary here like "custom_dic1.csv custom_d\ ic2.csv.." If you add huge dictionary, you have to modify maxmemory attribute \ in java task. --> <!-- <arg line="customize_dic.csv" /> -->
変更後:
<jvmarg line="-Dorg.apache.commons.logging.Log=org.apache.commons.logging\ .impl.SimpleLog -Dorg.apache.commons.logging.simplelog.log.net.java=info"/> <!-- Comment out if you would like to add your custom dictionary. Custom dictionary format have to compatibule with 'dic.csv'. This parameter is a file path for custom dictionary. You can add multiple dictionary here like "custom_dic1.csv custom_d\ ic2.csv.." If you add huge dictionary, you have to modify maxmemory attribute \ in java task. --> <arg line="user.csv dic.csv" />
以上を設定したのち,ant を実行する.
$ cd /usr/local/sen/dic $ sudo ant
次のように単語 "UNIX" が認識されれば OK.
$ sh /usr/local/sen/bin/sen.sh UNIXはOSです. UNIX (UNIX) 名詞-固有名詞-一般(0,4,4) UNIX ユニックス は (は) 助詞-係助詞(4,5,1) ハ ワ OS (OS) 未知語(5,7,2) null null です (です) 助動詞(7,9,2) デス デス . (.) 記号-句点(9,10,1) . .