素性選択レイヤ (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) 「文節自体の持つ情報」
    • F_Hn 主辞の情報
    • F_Fn 機能語の情報
  • 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をつける
        • 例 : FHS:
    • FBOS:1 文内の最初のchunkなら発火
    • FEOS:1 文内の最後のchunkなら発火
  • dynamic features
    • A素性 : 機能辞が次の4つのどれかの品詞なら文字列そのもの、活用語ならその活用形(fcform)、それら以外なら品詞情報
    • B素性 : This feature is not used for linear algorithm.

参考文献