素性選択レイヤ (selector.cpp)
- source code
- 各文節Xに対して次のものをリストアップ
- もしXが別の文節Dに係ったときは、DにつけるであろうA素性
- もしXが別の文節Sから係られたときは、SにつけるであろうB素性
出力例
echo 姉が買って母が焼いた | cabocha -O3
* 0 -1D 0/1 0.000000 FCASE:が,FHS:姉,FHP0:名詞,FHP1:一般,FFS:が,FFP0:助詞,FFP1:格助詞,FFP2:一般,FLS:姉,FLP0:名詞,FLP1:一般,FRS:が,FRP0:助詞,FRP1:格助詞,FRP2:一般,LF:が,RL:姉,RH:姉,RF:が,FBOS:1,GCASE:が,A:が
姉 名詞,一般,*,*,*,*,姉,アネ,アネ
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
* 1 -1D 0/1 0.000000 FCASE:て,FHS:買っ,FHP0:動詞,FHP1:自立,FHF:連用タ接続,FFS:て,FFP0:助詞,FFP1:接続助詞,FLS:買っ,FLP0:動詞,FLP1:自立,FLF:連用タ接続,FRS:て,FRP0:助詞,FRP1:接続助詞,LF:て,RL:買っ,RH:買っ,RF:て,GCASE:て,A:て
買っ 動詞,自立,*,*,五段・ワ行促音便,連用タ接続,買う,カッ,カッ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
* 2 -1D 0/1 0.000000 FCASE:が,FHS:母,FHP0:名詞,FHP1:一般,FFS:が,FFP0:助詞,FFP1:格助詞,FFP2:一般,FLS:母,FLP0:名詞,FLP1:一般,FRS:が,FRP0:助詞,FRP1:格助詞,FRP2:一般,LF:が,RL:母,RH:母,RF:が,GCASE:が,A:が
母 名詞,一般,*,*,*,*,母,ハハ,ハハ
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
* 3 -1D 0/1 0.000000 FHS:焼い,FHP0:動詞,FHP1:自立,FHF:連用タ接続,FFS:た,FFP0:助動詞,FFF:基本形,FLS:焼い,FLP0:動詞,FLP1:自立,FLF:連用タ接続,FRS:た,FRP0:助動詞,FRF:基本形,LF:た,RL:焼い,RH:焼い,RF:た,FEOS:1,A:基本 形
焼い 動詞,自立,*,*,五段・カ行イ音便,連用タ接続,焼く,ヤイ,ヤイ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
EOS
selector_pat.hで定義されている定数
const char KUTOUTEN_PAT[] = "(。|、|,|.)";
const char OPEN_BRACKET_PAT [] = "((|(|‘|“|《|「|『|[|〈|{)";
const char CLOSE_BRACKET_PAT[] = "()|)|’|”|》|」|』|]|〉|})";
const char DYN_A_PAT[] = "(助詞|副詞|連体詞|接続詞)";
const char CASE_PAT [] = "助詞";
//IPA
const char IPA_FUNC_PAT[] = "(助詞|助動詞|動詞,非自立|動詞,接尾|形容詞,非自立|形容詞,接尾)";
const char IPA_HEAD_PAT[] = "!(助詞|助動詞|動詞,非自立|動詞,接尾|形容詞,非自立|形容詞,接尾|空白|記号)";
//JUMAN
const char JUMAN_FUNC_PAT[] = "!特殊";
const char JUMAN_HEAD_PAT[] = "!(特殊|助詞|接尾辞)";
// UNIDIC
const char UNIDIC_FUNC_PAT[] = "(助詞|助動詞|接尾辞,形容詞的|接尾辞,形状詞的|接尾辞,動詞的|動詞,非自立可能|形容詞,非自立可能)"
const char UNIDIC_HEAD_PAT[] = "!(助詞|助動詞|接尾辞,形容詞的|接尾辞,形状詞的|接尾辞,動詞的|動詞,非自立可能|形容詞,非自立可能|空白|補助記号|記号)";
const char UNIDIC_FUNC_PAT2[] = "(助詞|助動詞|接尾辞,形容詞的|接尾辞,形状詞的|接尾辞,動詞的)"
const char UNIDIC_HEAD_PAT2[] = "!(助詞|助動詞|接尾辞,形容詞的|接尾辞,形状詞的|接尾辞,動詞的|空白|補助記号|記号)";
const char UNIDIC_HEAD_PRE_PAT[] = "(動詞,一般|形容詞,一般)";
4種類の素性
- A素性(dyn_a) 「ある文節に既に係っている係り元の情報」
- 機能辞が次の4つのどれかの品詞なら文字列そのもの、活用語ならその活用形(fcform)、それら以外なら品詞情報
//const char DYN_A_PAT = "(助詞|副詞|連体詞|接続詞)";
- B素性(dyn_b) 「ある文節から既に係っている係り先の情報」
- F素性(static) 「文節自体の持つ情報」
- G素性(gap) 「文節Sが文節Dにかかるとき、SとDの間に位置する文節の持つ情報」
- 例文「私は彼の無垢な、あふれんばかりの才能に(ひそかに)嫉妬していた」
- 「私は」が「嫉妬していた」に係るか?を考える
- 途中に読点があるのでG_PUNC
- 開・閉かっこがあるので G_OB, G_CB
素性の一覧
- chunk内のtokenに次のものがあれば,素性を発火
GPUNC, FPUNC
句読点の表層文字
GOB, FOB
開括弧の表層文字, GOB:1, FOB:1
開括弧の存在フラグ
GCB, FCB
閉括弧の表層文字, GCB:1, FCB:1
閉括弧の存在フラグ
GCASE
助詞の表層文字列
- F素性 : static features
- head token, func token, chunk内部の最左token, 最右tokenについて
- emitTokenFeatures()関数で
S:
表層文字列
P0:, P1, ...
tokenの付与されている情報(feature_list)
F:
cforms
- それぞれ,
FH, FF, FL, FR
というprefixをつける
FBOS:1
文内の最初のchunkなら発火
FEOS:1
文内の最後のchunkなら発火
- dynamic features
- A素性 : 機能辞が次の4つのどれかの品詞なら文字列そのもの、活用語ならその活用形(fcform)、それら以外なら品詞情報
- B素性 :
This feature is not used for linear algorithm.
参考文献