9

私はCRF ++が初めてです。私はそのマニュアルを見て独学しています: http://crfpp.googlecode.com/svn/trunk/doc/index.html?source=navbar#templ

そして、私はこれが何を意味するのか理解していません:

これは、ユニグラムの機能を記述するためのテンプレートです。あなたが与えるとき

テンプレート "U01:%x[0,1]"、CRF++ は一連の機能を自動的に生成します

関数 (func1 ... funcN) のような:

func1 = if (output = B-NP and feature="U01:DT") return 1 else return 0

func2 = if (output = I-NP and feature="U01:DT") 1 を返す そうでなければ 0 を返す

func3 = if (output = O and feature="U01:DT") return 1 そうでなければ return 0

.... funcXX = if (output = B-NP and feature="U01:NN") return 1 else return 0

funcXY = if (output = O and feature="U01:NN") return 1 else return 0. テンプレートによって生成された機能関数の数

(L * N) になります。ここで、L は出力の数です。

Unigram 機能に多くの行があるのはなぜですか? また、それらは何を意味するのですか?

4

2 に答える 2

9

ドキュメントを十分に長く見た後、私はそれを理解したと思います。

入力データが次のドキュメントの例を見てください。

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 になります。

于 2015-05-13T11:48:24.293 に答える