形態素解析システム 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)	.	.