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 タブに記載されています。空の値はデフォルトで * になります。

IndexName (Korean)Name (English)Notes
0표면Surface
1왼쪽 문맥 IDLeft context ID
2오른쪽 문맥 IDRight context ID
3비용Cost
4품사 태그Part-of-speech tagスプレッドシートの 태그 v2.0 タブを参照
5의미 부류Meaning(確信するには例が少なすぎます)
6종성 유무Presence or absenceT は true、F は false、それ以外は *
7읽기Reading通常は表層形と一致しますが、外来語(例: 漢字語)では異なる場合があります
8타입TypeInflect(活用)、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, ETN3000
172, 230 (Inflect)VCP3000
183, 184, 185, 220, 221, 222 (Inflect)XSA, XSN, XSV3000
120, 210 (Inflect)JC, JKB, JKC, JKG, JKO, JKQ, JKS, JKV, JX6000
{
  "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)

簡易版

IndexName (Korean)Name (English)Notes
0표면Surface
1품사 태그part-of-speech tagスプレッドシートの 태그 v2.0 タブを参照
2읽기reading通常は表層形と一致しますが、外来語(例: 漢字語)では異なる場合があります

詳細版

IndexName (Korean)Name (English)Notes
0표면Surface
1왼쪽 문맥 IDLeft context ID
2오른쪽 문맥 IDRight context ID
3비용Cost
4품사 태그part-of-speech tagスプレッドシートの 태그 v2.0 タブを参照
5의미 부류meaning(確信するには例が少なすぎます)
6종성 유무presence or absenceT は true、F は false、それ以外は *
7읽기reading通常は表層形と一致しますが、外来語(例: 漢字語)では異なる場合があります
8타입typeInflect(活用)、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 から参照できます: