Nlp NLTK MaxentClassifier训练与负案例

Nlp NLTK MaxentClassifier训练与负案例,nlp,tags,nltk,nltk-trainer,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) 它是有效的 如何用否定格训练我的分类器

我是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)
它是有效的

如何用否定格训练我的
分类器

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

我该怎么做

消极情况的例子如下:

How B-MYTag 
do O
you O
know O
, O
where B-MYTag
to O
park O
? O
在那之后,我希望记住怎么可能不是MYTag。。。 原因是,分类器学习速度更快

如果我可以直接输入语句,程序会处理它,最后问我对结果是否满意。如果是,此文本将添加到
序列集
,如果不是,则将添加到
负序列集


这样,教授正确的东西会更容易、更快

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


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

您能举一个负面案例的例子吗?我怀疑这在序列标记中是否有效(概念上)。我的意思是,你希望从错误的注释中学到什么?正(B/I)和负(O)类已在给定的注释中表示。您的编辑听起来像是在关注主动学习工作流。当然,您可以手动执行:让分类器预测某些内容,手动更正标签,将其添加到训练集中,再培训。你必须具体说明更正:如果你只说“这句话中的标签是错误的”,那么分类器如何知道前三个标签是错误的,但第四个标签是错误的(
O
on“know”)是正确的吗?请注意,如果您有一个大的培训集开始,然后手动添加一些手动更正的例子,正如我刚才所建议的,影响可能非常小。谢谢。经过一些思考,我发现MaxEnt确实无法处理错误的数据集,因为它无法从“错误”的数据计算熵。谢谢你的回答。现在,我将所有新的“语句”存储在带有IOB标记的文件中,手动更正它们并将其插入训练语料库。你写了一些关于神经网络的东西。这可用于nltk吗?我对他们一无所知,。。。你有一些好的链接来查看它们吗?nltk的defalt POS标记器是
perceptrontager()
。看见