ドキュメントを十分に長く見た後、私はそれを理解したと思います。
入力データが次のドキュメントの例を見てください。
He PRP B-NP
reckons VBZ B-VP
the DT B-NP
current JJ I-NP
account NN I-NP
問題のフィーチャ テンプレート ( は現在の位置に相対的な形式) は次のとおりです%x[row, col]
。row
%x[0,1]
が%x[0,1]
展開されると、現在のトークンに応じて、セット内の文字列の[PRP, VBZ, DT, JJ, NN]
1 つ (つまり、1 番目の列の一意の文字列の 1 つ、左端の列が列 0) をスキャンできます。これらの文字列ごとに、次の形式の機能関数のセットを作成します (入力データの 3 行目を見てください)。
func1 = if (output = B-NP and feature="U01:DT") return 1 else return 0
func2 = if (output = I-NP and feature="U01:DT") return 1 else return 0
func3 = if (output = O and feature="U01:DT") return 1 else return 0
...
その特定の文字列 (DT
上記のコード内) は、すべての単一の出力クラスと比較されます。
したがって、出力クラスが[B-NP, I-NP, O]
機能テンプレートである場合、機能関数に展開されて次のようになります。
# row 1 (He, PRP, B-NP)
func1 = if (output = B-NP and feature="U01:PRP") return 1 else return 0
func2 = if (output = I-NP and feature="U01:PRP") return 1 else return 0
func3 = if (output = O and feature="U01:PRP") return 1 else return 0
# row 2 (Reckons, VBZ, B-VP)
func4 = if (output = B-NP and feature="U01:VBZ") return 1 else return 0
func5 = if (output = I-NP and feature="U01:VBZ") return 1 else return 0
func6 = if (output = O and feature="U01:VBZ") return 1 else return 0
# Row 3 (the, DT, B-NP)
func7 = if (output = B-NP and feature="U01:DT") return 1 else return 0
func8 = if (output = I-NP and feature="U01:DT") return 1 else return 0
func9 = if (output = O and feature="U01:DT") return 1 else return 0
# Row 4 (current, JJ, I-NP)
func10 = if (output = B-NP and feature="U01:JJ") return 1 else return 0
func11 = if (output = I-NP and feature="U01:JJ") return 1 else return 0
func12 = if (output = O and feature="U01:JJ") return 1 else return 0
# Row 5 (account, NN, I-NP)
func13 = if (output = B-NP and feature="U01:NN") return 1 else return 0
func14 = if (output = I-NP and feature="U01:NN") return 1 else return 0
func15 = if (output = O and feature="U01:NN") return 1 else return 0
ドキュメントで言及されている場所について:
テンプレートによって生成される特徴関数の数は (L * N) になります。ここで、L は出力クラスの数、N は特定のテンプレートから展開された一意の文字列の数です。
この場合、L は 3、N は 5 になります。