Lindera ko-dic
辞書バージョン
このリポジトリには mecab-ko-dic が含まれています。
辞書フォーマット
mecab-ko-dic で使用される辞書フォーマットおよび品詞タグの情報は、mecab-ko-dic のリポジトリ README からリンクされているこの Google スプレッドシートに記載されています。
ko-dic は NAIST JDIC よりもフィールド列が 1 つ少なく、全体的に異なる情報セットを持っています(例: 単語の「原形」を提供しません)。
タグは世宗(Sejong)で規定されたものを若干修正したものです。世宗から mecab-ko-dic のタグ名へのマッピングは、上記スプレッドシートの 태그 v2.0 タブに記載されています。
辞書フォーマットの完全な仕様は(韓国語で)スプレッドシートの 사전 형식 v2.0 タブに記載されています。空の値はデフォルトで * になります。
| Index | Name (Korean) | Name (English) | Notes |
|---|---|---|---|
| 0 | 표면 | Surface | |
| 1 | 왼쪽 문맥 ID | Left context ID | |
| 2 | 오른쪽 문맥 ID | Right context ID | |
| 3 | 비용 | Cost | |
| 4 | 품사 태그 | Part-of-speech tag | スプレッドシートの 태그 v2.0 タブを参照 |
| 5 | 의미 부류 | Meaning | (確信するには例が少なすぎます) |
| 6 | 종성 유무 | Presence or absence | T は true、F は false、それ以外は * |
| 7 | 읽기 | Reading | 通常は表層形と一致しますが、外来語(例: 漢字語)では異なる場合があります |
| 8 | 타입 | Type | Inflect(活用)、Compound(複合名詞)、Preanalysis(事前解析済み)のいずれか |
| 9 | 첫번째 품사 | First part-of-speech | 例: 品詞タグが "VV+EM+VX+EP" の場合、VV を返します |
| 10 | 마지막 품사 | Last part-of-speech | 例: 品詞タグが "VV+EM+VX+EP" の場合、EP を返します |
| 11 | 표현 | Expression | 활용, 복합명사, 기분석이 어떻게 구성되는지 알려주는 필드 -- 活用、複合名詞、事前解析済みの語がどのように構成されるかを示すフィールド |
左側空白ペナルティ
mecab-ko(mecab-ko-dic が対象とする MeCab のフォーク)は、語の左側に読み飛ばした空白(前の語の表層に含まれない空白)がある場合、その語の pos-id.def の ID が dicrc に列挙されていれば連接コストを加算します:
left-space-penalty-factor = 100,3000,120,6000,172,3000,183,3000,184,3000,185,3000,200,3000,210,6000,220,3000,221,3000,222,3000,230,3000
Lindera は pos-id.def の ID を保持しませんが、列挙されている ID はすべてエントリの先頭品詞タグ(Inflect 行では「最初の品詞」列)に対応するため、同じルールをタグで記述できます。ko-dic はこのルールを metadata.json(space_penalty)に同梱しているので、Segmenter::new がデフォルトで適用します。オフにするには Segmenter::space_penalty(None)、セグメンター設定の "space_penalty": false、または lindera tokenize --disable-space-penalty を使います。明示的なルールは Segmenter::space_penalty、space_penalty オブジェクト、または --space-penalty-rules で指定します。同梱ルールは Lindera 6.1.0 以降でビルドした ko-dic にしか含まれません。v6.0.0 リリースの ko-dic にはルールがないため、辞書を再ビルドするまでペナルティは黙ってオフのままになりますが、--space-penalty-rules はどの ko-dic でも動作します。
| pos-id.def の ID | 先頭品詞タグ | コスト |
|---|---|---|
100, 200 (Inflect) | EC, EF, EP, ETM, ETN | 3000 |
172, 230 (Inflect) | VCP | 3000 |
183, 184, 185, 220, 221, 222 (Inflect) | XSA, XSN, XSV | 3000 |
120, 210 (Inflect) | JC, JKB, JKC, JKG, JKO, JKQ, JKS, JKV, JX | 6000 |
{
"rules": [
{ "pos": ["EC", "EF", "EP", "ETM", "ETN", "VCP", "XSA", "XSN", "XSV"], "cost": 3000 },
{ "pos": ["JC", "JKB", "JKC", "JKG", "JKO", "JKQ", "JKS", "JKV", "JX"], "cost": 6000 }
]
}
echo "검색 이 잘 된다" | lindera tokenize --dict embedded://ko-dic
空白の後ろの 이 は主格助詞 JKS ではなく(mecab-ko と同様に)感動詞 IC と解析されます。--disable-space-penalty を付けると JKS になります。意味論については Segmenter のドキュメントを参照してください。
空白
mecab-ko はラティスを構築する際に空白を読み飛ばすため、空白の後ろの語は空白の前の語に接続します。そのため SPACE の未知語項目(unk.def: SPACE,1798,3563,996)は学習時にどの語とも接続されず、matrix.def のその行と列はすべて 0 です。Lindera もデフォルトで同じように空白を読み飛ばします。--disable-skip-whitespace(Segmenter::skip_whitespace(false)、"skip_whitespace": false)を指定すると、空白はこの項目としてラティスに残り、空白のたびに文脈が途切れます。その場合、2년 전 대회 の 전 は名詞 NNG ではなく 저/NP + ㄴ/JX、하고 있다 の 있 は補助用言 VX ではなく本動詞と解析されます。
ユーザー辞書フォーマット (CSV)
簡易版
| Index | Name (Korean) | Name (English) | Notes |
|---|---|---|---|
| 0 | 표면 | Surface | |
| 1 | 품사 태그 | part-of-speech tag | スプレッドシートの 태그 v2.0 タブを参照 |
| 2 | 읽기 | reading | 通常は表層形と一致しますが、外来語(例: 漢字語)では異なる場合があります |
詳細版
| Index | Name (Korean) | Name (English) | Notes |
|---|---|---|---|
| 0 | 표면 | Surface | |
| 1 | 왼쪽 문맥 ID | Left context ID | |
| 2 | 오른쪽 문맥 ID | Right context ID | |
| 3 | 비용 | Cost | |
| 4 | 품사 태그 | part-of-speech tag | スプレッドシートの 태그 v2.0 タブを参照 |
| 5 | 의미 부류 | meaning | (確信するには例が少なすぎます) |
| 6 | 종성 유무 | presence or absence | T は true、F は false、それ以外は * |
| 7 | 읽기 | reading | 通常は表層形と一致しますが、外来語(例: 漢字語)では異なる場合があります |
| 8 | 타입 | type | Inflect(活用)、Compound(複合名詞)、Preanalysis(事前解析済み)のいずれか |
| 9 | 첫번째 품사 | first part-of-speech | 例: 品詞タグが "VV+EM+VX+EP" の場合、VV を返します |
| 10 | 마지막 품사 | last part-of-speech | 例: 品詞タグが "VV+EM+VX+EP" の場合、EP を返します |
| 11 | 표현 | expression | 활용, 복합명사, 기분석이 어떻게 구성되는지 알려주는 필드 -- 活用、複合名詞、事前解析済みの語がどのように構成されるかを示すフィールド |
| 12 | - | - | 12 以降は自由に拡張可能です。 |
API リファレンス
API リファレンスは以下の URL から参照できます: