【发布时间】:2017-06-27 23:59:53
【问题描述】:
我是 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。
这样,教分类器正确的东西会更容易和更快。
【问题讨论】:
-
你能举一个负面案例的例子吗?我怀疑这(在概念上)适用于序列标记。我的意思是,您希望从错误的注释中学到什么?正 (B/I) 和负 (O) 类已在给定的注释中表示。
-
您的编辑听起来像是在使用主动学习工作流程。当然你可以手动做:让分类器预测一些东西,手动更正标签,将它添加到训练集,重新训练。你必须具体的更正:如果你只说“这句话中的标签是错误的”,分类器怎么知道前三个标签是坏的,但是例如。第四个(
Oon "know")是正确的吗? -
请注意,如果您一开始有一个大型训练集,然后按照我刚才的建议手动添加一些手动校正的示例,则影响可能非常小。
标签: nlp tags nltk nltk-trainer