私はnltkライブラリで新しく、分類器に自分のコーパスを使っていくつかのラベルを教えようとしています。NLTKネガティブケースのMaxentClassifier列
How O
do B-MYTag
you I-MYTag
know O
, O
where B-MYTag
to O
park O
? O
(PSこれでのみ構成されたサンプル...)
私はこれを行う
self.classifier = nltk.MaxentClassifier.train(train_set, algorithm='megam', trace=0)
によって:このため
私はこのようなIOBタグを使用してファイルを持っています
と動作します。
私の質問は、負のケースで私のclassifier
を訓練する方法です。 だから私はIOBタグと同様のファイルを持っていて、私はこのファイルが間違って設定されていると指定します。 (負の重み)
どうすればよいですか?
EDIT:負の場合の
例は次のようになります。その後
How B-MYTag
do O
you O
know O
, O
where B-MYTag
to O
park O
? O
を、私はどのように、おそらくこの理由はmytagという... ではないことを覚えていることを期待します、より速く学ぶ分類子。 文を入力するだけでプログラムが処理し、最後に結果に満足しているかどうかを尋ねます。私の場合、このテキストはtrain_set
に追加されますが、そうでなければnegative_train_set
に追加されます。このようにして、クラシファイアに適切なものを教えることは、より簡単で迅速になります。
ネガティブケースの例はありますか?私はこれがシーケンスタギングで(概念的に)うまくいくとは思わない。つまり、間違ったアノテーションから何を学ぶと思いますか?正(B/I)クラスと負(O)クラスは、指定された注釈ですでに表現されています。 – lenz
あなたの編集内容は、アクティブ学習のワークフローのようです。もちろん、手動で行うこともできます。分類器に何かを予測させ、ラベルを手動で修正し、トレーニングセットに追加して再トレーニングします。あなたは訂正について具体的に言わなければなりません:「この文章のラベルは間違っています」としか言わない場合、最初の3つのタグが悪いことをどのように分類するべきですか?四番目(「知っている」の「O」)は正しいですか? – lenz
大規模なトレーニングを開始し、手動で修正したいくつかのサンプルを手作業で追加した場合、その影響はごくわずかです。 – lenz