具有否定案例的NLTK MaxentClassifier列车

时间:2017-02-09 20:01:34

标签: nlp tags nltk nltk-trainer

我是nltk图书馆的新手,我尝试用我自己的语料库教我的分类器一些标签。

为此,我有一个带有IOB标签的文件:

How O 
do B-MYTag
you I-MYTag
know O
, O
where B-MYTag
to O
park O
? O

我是这样做的:

self.classifier = nltk.MaxentClassifier.train(train_set, algorithm='megam', trace=0)

它有效。

如何训练我的classifier有否定案例?

我会有与IOB标签类似的文件,我会指定此文件设置错误。 (负权重)

我该怎么做?

否定案例的例子是:

How B-MYTag 
do O
you O
know O
, O
where B-MYTag
to O
park O
? O

在那之后,我希望记住,怎么可能不是MYTag ...... 原因是,分类器学得更快。

如果我可以输入语句,程序会处理它,最后问我是否对结果感到满意。如果是,则会将此文本添加到train_set,否则会将其添加到negative_train_set

通过这种方式,将分类器教给正确的东西会更容易,更快捷。

1 个答案:

答案 0 :(得分:1)

我猜测你尝试了一个分类器,在结果中看到了一些错误,并希望反馈错误的输出作为额外的训练输入。有些学习算法根据哪些答案是错误的或正确的(神经网络,布里尔规则)进行优化,但MaxEnt分类器不是其中之一。像这样工作的分类器在内部完成所有工作:它们标记训练数据,将结果与黄金标准进行比较,相应地调整它们的权重或规则,并一次又一次地重复。

简而言之:您不能将错误的输出用作训练数据集。这个想法甚至不适合机器学习模型,因为训练数据是假设正确的,因此不正确的输入概率为零。通过使用更好的功能,更多数据或不同的引擎,专注于改进分类器。