概要
出力される素性(品詞)に任意の数値ID を付与することができます. 通常, 素性は文字列として表現されますが, 機械処理には向いていません. 数値ID に変換することで, 機械処理が容易になります.
素性にどの ID を割りあてるかは, ユーザが自由に定義することができます.
設定ファイル
配布辞書のディレクトリにある pos-id.def を変更します.
1行が1つのマッピングルールに対応します. 各パターンは以下のフォーマットで 記述します.
マッチパターン ID
という形式で記述します. マッピングルールは先頭から順に走査されて 最初にマッチしたものが使われます. マッチパターンでは簡単な正規表現がを使うことができます.
*
: すべての文字列にマッチ(AB|CD|EF)
: AB もしくは CD もしくは EF にマッチAB
: 文字列 AB のみに完全マッチ
pos-id
を変更したら, 辞書をリコンパイルする必要があります.
/usr/local/libexec/mecab/mecab-dict-index
品詞 ID の参照
出力フォーマットのマクロ %h
を使うことで
品詞 ID を参照することができます.
% mecab -F"%m\t%h\n" -E"EOS\n"
今日もしないとね。
今日 67
も 16
し 31
ない 25
と 18
ね 17
。
EOS
また, ライブラリからは mecab_node_t::posid
で参照できます.
mecab_t *mecab;
mecab_node_t *node;
mecab = mecab_new2("");
node = mecab_sparse_tonode(mecab, "今日もしないとね");
for (; node; node = node->next) {
fwrite (node->surface, sizeof(char), node->length, stdout);
printf("%d\n", node->posid)
}
pos-id.def の例
単純な例
名詞 1
動詞 2
形容詞 3
副詞 4
助詞 5
接続詞 6
助動詞 7
連体詞 8
感動詞 9
* 10
ちょっと複雑な例
名詞 1
(助詞|助動詞) 2
(副詞|形容詞|連体詞) 3
* 4
もっと複雑な例
その他,間投,*,* 0
フィラー,*,*,* 1
感動詞,*,*,* 2
記号,アルファベット,*,* 3
記号,一般,*,* 4
記号,括弧開,*,* 5
記号,括弧閉,*,* 6
記号,句点,*,* 7
記号,空白,*,* 8
記号,読点,*,* 9
形容詞,自立,*,* 10
形容詞,接尾,*,* 11
形容詞,非自立,*,* 12
助詞,格助詞,一般,* 13
助詞,格助詞,引用,* 14
助詞,格助詞,連語,* 15
助詞,係助詞,*,* 16
助詞,終助詞,*,* 17
助詞,接続助詞,*,* 18
助詞,特殊,*,* 19
助詞,副詞化,*,* 20
助詞,副助詞,*,* 21
助詞,副助詞/並立助詞/終助詞,*,* 22
助詞,並立助詞,*,* 23
助詞,連体化,*,* 24
助動詞,*,*,* 25
接続詞,*,*,* 26
接頭詞,形容詞接続,*,* 27
接頭詞,数接続,*,* 28
接頭詞,動詞接続,*,* 29
接頭詞,名詞接続,*,* 30
動詞,自立,*,* 31
動詞,接尾,*,* 32
動詞,非自立,*,* 33
副詞,一般,*,* 34
副詞,助詞類接続,*,* 35
名詞,サ変接続,*,* 36
名詞,ナイ形容詞語幹,*,* 37
名詞,一般,*,* 38
名詞,引用文字列,*,* 39
名詞,形容動詞語幹,*,* 40
名詞,固有名詞,一般,* 41
名詞,固有名詞,人名,一般 42
名詞,固有名詞,人名,姓 43
名詞,固有名詞,人名,名 44
名詞,固有名詞,組織,* 45
名詞,固有名詞,地域,一般 46
名詞,固有名詞,地域,国 47
名詞,数,*,* 48
名詞,接続詞的,*,* 49
名詞,接尾,サ変接続,* 50
名詞,接尾,一般,* 51
名詞,接尾,形容動詞語幹,* 52
名詞,接尾,助数詞,* 53
名詞,接尾,助動詞語幹,* 54
名詞,接尾,人名,* 55
名詞,接尾,地域,* 56
名詞,接尾,特殊,* 57
名詞,接尾,副詞可能,* 58
名詞,代名詞,一般,* 59
名詞,代名詞,縮約,* 60
名詞,動詞非自立的,*,* 61
名詞,特殊,助動詞語幹,* 62
名詞,非自立,一般,* 63
名詞,非自立,形容動詞語幹,* 64
名詞,非自立,助動詞語幹,* 65
名詞,非自立,副詞可能,* 66
名詞,副詞可能,*,* 67
連体詞,*,*,* 68