NLTK MaxentClassifier 训练负例

NLTK MaxentClassifier train with negative cases

我是 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

在那之后,我希望记住 How 可能不是 MYTag... 这样做的原因是,分类器学习得更快。

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

这样,教分类器正确的东西会更容易和更快。

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

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