Sudachi ではユーザー辞書をもちいて、システム辞書で不足している語を補ったり、システム辞書の語と同一見出しの語を登録することによって解析結果上の品詞などの情報を差し替えることができます。
ユーザー辞書の作成は、登録したい見出しを記述したユーザー辞書ソースを用いて行います。 ユーザー辞書ソースのフォーマットは以下の通りです。 なお、このファイルは、CSV形式 (RFC 4180) で保存します。文字コードは、UTF-8を使用します。
- 0 見出し (TRIE 用)
- 1 左連接ID
- 2 右連接ID
- 3 コスト
- 4 見出し (解析結果表示用)
- 5 品詞1
- 6 品詞2
- 7 品詞3
- 8 品詞4
- 9 品詞 (活用型)
- 10 品詞 (活用形)
- 11 読み
- 12 正規化表記
- 13 辞書形ID
- 14 分割タイプ
- 15 A単位分割情報
- 16 B単位分割情報
- 17 ※未使用
各項目について以下に説明します。
形態素解析に使用される見出し表記です。 表記の長さは、255文字まで登録できます。
見出しは、「Sudachiの文字正規化がおこなわれた後の形」で登録してください。
Sudachiでは、文字正規化が行われた後に見出しを引きます。そのため、「正規化後に現れない形」で見出しが表記されている場合、その語はどのような場合でもマッチすることがありません。例えば、「ラテン文字の大文字」で見出しを表記した場合、Sudachi内部では正規化後の「小文字」になったもので見出しを探すため、この大文字のものとマッチすることがありません。
Sudachiでは、以下の文字正規化を行っています。挙動の詳細は、Sudachiドキュメントの該当箇所を参照してください。
- 小文字化
- NFKC をつかった Unicode 正規化
- ただし、設定ファイル
rewrite.def
に定義される抑制、置換が優先
- ただし、設定ファイル
ユーザー辞書の見出しへは、文字正規化は自動的には適用されません。これは、ユーザーが想定しづらい挙動を避けるためです。そのため、ユーザー辞書の作成者が文字正規化を意識して語を表記する必要があります。
形態素解析の連接判定(左連接)に使用されるIDです。 使用できるIDの種類は、unidic-mecab 2.1.2 の left-id.def を参照してください。
普通名詞の登録であれば、以下のいずれかを推奨
- 5146 名詞,普通名詞,一般,,,,,*,漢
- 5133 名詞,普通名詞,サ変可能,,,,,*,漢
固有名詞の登録であれば、以下のいずれかを推奨
- 4786 名詞,固有名詞,一般,,,,,*,固
- 4789 名詞,固有名詞,人名,名,,,,,固
- 4790 名詞,固有名詞,人名,姓,,,,,固
形態素解析の連接判定(右連接)に使用されるIDです。 使用できるIDの種類は、unidic-mecab 2.1.2 の right-id.def を参照してください。
普通名詞の登録であれば、以下のいずれかを推奨
- 5146 名詞,普通名詞,一般,,,,,*,漢
- 5133 名詞,普通名詞,サ変可能,,,,,*,漢
固有名詞の登録であれば、以下のいずれかを推奨
- 4786 名詞,固有名詞,一般,,,,,*,固
- 4789 名詞,固有名詞,人名,名,,,,,固
- 4790 名詞,固有名詞,人名,姓,,,,,固
形態素解析に使用される見出し表記のコスト値です。 "-32767 ~ 32767" までの整数値で指定できます。 値を小さくするほど、登録した見出し表記が解析結果として出やすくなります。 なお、"-32768" を指定すると、ユーザー辞書読み込み時に自動推定した値を付与します。
名詞類の登録であれば、"5000 ~ 9000" を推奨
「0 見出し (TRIE 用)」と同じものを指定してください。
システム辞書の品詞、あるいはユーザー定義の任意の品詞を記述できます。 システム辞書で使用する品詞1の種類は、unidic-mecab 2.1.2 の 品詞体系を参照してください。
システム辞書の品詞、あるいはユーザー定義の任意の品詞を記述できます。 システム辞書で使用する品詞2の種類は、unidic-mecab 2.1.2 の 品詞体系を参照してください。
システム辞書の品詞、あるいはユーザー定義の任意の品詞を記述できます。 システム辞書で使用する品詞3の種類は、unidic-mecab 2.1.2 の 品詞体系を参照してください。
システム辞書の品詞、あるいはユーザー定義の任意の品詞を記述できます。 システム辞書で使用する品詞4の種類は、unidic-mecab 2.1.2 の 品詞体系を参照してください。
システム辞書の品詞、あるいはユーザー定義の任意の品詞を記述できます。 システム辞書で使用する品詞 (活用型)の種類は、unidic-mecab 2.1.2 の 品詞体系を参照してください。
システム辞書の品詞、あるいはユーザー定義の任意の品詞を記述できます。 システム辞書で使用する品詞 (活用形)の種類は、unidic-mecab 2.1.2 の 品詞体系を参照してください。
見出し表記の読みを記述します。 全角カタカナで記述します。 省略することもできます。(その場合は、何も記述しない)
見出し表記の正規化表記を記述します。 「見出し表記=正規化表記」の場合は、見出し表記を記述します。
活用のある語に対して、その語の辞書形(終止形表記)を指定するための情報です。 ユーザー辞書内の語のみ指定可能です。 語のIDまたは語情報を記述します。
ユーザー辞書ソースの行数(0始まりで何行目か)がIDです。 対象となる語の辞書形のIDを記述します。 よって、辞書形IDの情報をつけた後、ファイル内の行の並びが変わるような変更(ソートや挿入など)は加えないでください。
語情報は語の見出し (解析結果表示用)、品詞1-4、品詞 (活用型)、品詞 (活用形)、読みを "," (カンマ) で区切った文字列です。 語情報を記述するときは分割情報のフィールド全体を " (ダブルクォーテーション) で囲む必要があります。
なお、活用のない語については、このフィールドは、"*"(半角アスタリスク)を記入しておいてください。
語の分割単位タイプ (A / B / C) を記述します。後述の分割情報を記述しない場合は "*" (半角アスタリスク) でもかまいません。
分割単位タイプ B または C の語について、A単位に分割するための情報です。
構成語のIDまたは構成語情報を "/" (半角スラッシュ) で区切って記述します。
構成語のIDはその語が記述されている行番号 (0始まり) か、その先頭に "U" を加えた文字列です。ユーザー辞書内の語を参照するときに "U" をつけます。
構成語情報は語の見出し (解析結果表示用)、品詞1-4、品詞 (活用型)、品詞 (活用形)、読みを "," (カンマ) で区切った文字列です。 構成語情報を記述するときは分割情報のフィールド全体を " (ダブルクォーテーション) で囲む必要があります。 構成語情報に記述する語は別途記述されている必要があります。構成語がシステム辞書内にあるかユーザー辞書内にあるかは自動的に判別します。
なお構成語としてのみ利用される語は連接IDに-1を記述すると、単独の語として出現しなくなります。
分割単位タイプ C の語について、B単位に分割するための情報です。
フォーマットはA単位分割情報と同じです。
このフィールドは未使用です。 "*"(半角アスタリスク)を記入しておいてください。
以下にユーザー辞書ソースの例を記述します。
舞台藝術,5146,5146,8000,舞台藝術,名詞,普通名詞,一般,*,*,*,ブタイゲイジュツ,舞台芸術,*,*,*,*,*
舞台芸術,5146,5146,8000,舞台芸術,名詞,普通名詞,一般,*,*,*,ブタイゲイジュツ,舞台芸術,*,*,*,*,*
コンピュータ学院,4786,5146,8000,コンピュータ学院,名詞,固有名詞,一般,*,*,*,コンピュータガクイン,コンピューター学院,*,*,*,*,*
コンピューター学院,4786,5146,8000,コンピューター学院,名詞,固有名詞,一般,*,*,*,コンピューターガクイン,コンピューター学院,*,*,*,*,*
モゲラ東京,5144,4792,4561,モゲラ東京,名詞,固有名詞,一般,*,*,*,モゲラトウキョウ,モゲラ東京,*,B,"U5/東京,名詞,固有名詞,地名,一般,*,*,トウキョウ",*,*
モゲラ,-1,-1,0,モゲラ,名詞,固有名詞,一般,*,*,*,モゲラ,モゲラ,*,*,*,*,*
回っ,1431,1431,12016,回っ,動詞,一般,*,*,五段-ラ行,連用形-促音便,マワッ,回っ,11,*,*,*,*
回ら,1408,1408,13113,回ら,動詞,一般,*,*,五段-ラ行,未然形-一般,マワラ,回ら,11,*,*,*,*
回り,1428,1428,10995,回り,動詞,一般,*,*,五段-ラ行,連用形-一般,マワリ,回り,11,*,*,*,*
回りゃ,1399,1399,12918,回りゃ,動詞,一般,*,*,五段-ラ行,仮定形-融合,マワリャ,回りゃ,11,*,*,*,*
回りゃ,1437,1437,13113,回りゃ,動詞,一般,*,*,五段-ラ行,連用形-融合,マワリャ,回りゃ,11,*,*,*,*
回る,1414,1414,11824,回る,動詞,一般,*,*,五段-ラ行,終止形-一般,マワル,回る,11,*,*,*,*
回る,1421,1421,11979,回る,動詞,一般,*,*,五段-ラ行,連体形-一般,マワル,回る,11,*,*,*,*
回れ,1396,1396,15651,回れ,動詞,一般,*,*,五段-ラ行,仮定形-一般,マワレ,回れ,11,*,*,*,*
回れ,1402,1402,13180,回れ,動詞,一般,*,*,五段-ラ行,命令形,マワレ,回れ,11,*,*,*,*
回ろ,1402,1402,13180,回ろ,動詞,一般,*,*,五段-ラ行,命令形,マワロ,回ろ,11,*,*,*,*
回ろ,1405,1405,12745,回ろ,動詞,一般,*,*,五段-ラ行,意志推量形,マワロ,回ろ,11,*,*,*,*
回ろう,1405,1405,12745,回ろう,動詞,一般,*,*,五段-ラ行,意志推量形,マワロウ,回ろう,11,*,*,*,*
回ろっ,1405,1405,12745,回ろっ,動詞,一般,*,*,五段-ラ行,意志推量形,マワロッ,回ろっ,11,*,*,*,*
回ん,1411,1411,13812,回ん,動詞,一般,*,*,五段-ラ行,未然形-撥音便,マワン,回ん,11,*,*,*,*
回ん,1417,1417,14370,回ん,動詞,一般,*,*,五段-ラ行,終止形-撥音便,マワン,回ん,11,*,*,*,*
回ん,1424,1424,14139,回ん,動詞,一般,*,*,五段-ラ行,連体形-撥音便,マワン,回ん,11,*,*,*,*
回ん,1434,1434,13641,回ん,動詞,一般,*,*,五段-ラ行,連用形-撥音便,マワン,回ん,11,*,*,*,*
ユーザー辞書ソースファイルからバイナリ辞書ファイルを作成します。
$ java -Dfile.encoding=UTF-8 -cp sudachi-XX.jar com.worksap.nlp.sudachi.dictionary.UserDictionaryBuilder -o output.dic -s system_core.dic [-d comment] input.csv
- output.dic 出力するバイナリ辞書ファイル名
- system_core.dic Sudachi のシステム辞書
- comment バイナリ辞書のヘッダーに埋め込むコメント
- input.csv ユーザ辞書ソースファイル名
設定の JSON に以下のような項目を追加します。ユーザー辞書は複数指定することができます。
"userDict" : [ "user1.dic", "user2.dic" ]
Sudachi コマンドラインツールでユーザ辞書設定を指定する場合は、以下のように実行します。
$ java -jar sudachi-XX.jar -s '{"userDict":["user1.dic","user2.dic"]}'
Sudachi は基本的にユーザー辞書のエントリーをシステム辞書のエントリーより優先します。 また、複数のユーザー辞書があるとき、後ろにあればあるほど優先順位が高いです。