0

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

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

4

1 回答 1

1

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

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

于 2017-02-10T08:02:32.210 回答