我正在训练Brill tagger反对conll2000语料库。由于我不理解的原因,我遇到以下错误:
brill.SymmetricProximateTokensTemplate(brill.ProximateTagsRule,(1,1)), AttributeError:'模块'对象没有属性' SymmetricProximateTokensTemplate'
我正在关注[this](http://streamhacker.com/2008/12/03/part-of-speech-tagging-with-nltk-part-3/)教程。代码如下:
import nltk.tag
from nltk.tag import brill
raubt_tagger = backoff_tagger(train_sents, [nltk.tag.AffixTagger,
nltk.tag.UnigramTagger, nltk.tag.BigramTagger, nltk.tag.TrigramTagger],
backoff=nltk.tag.RegexpTagger(word_patterns))
templates = [
brill.SymmetricProximateTokensTemplate(brill.ProximateTagsRule, (1,1)),
brill.SymmetricProximateTokensTemplate(brill.ProximateTagsRule, (2,2)),
brill.SymmetricProximateTokensTemplate(brill.ProximateTagsRule, (1,2)),
brill.SymmetricProximateTokensTemplate(brill.ProximateTagsRule, (1,3)),
brill.SymmetricProximateTokensTemplate(brill.ProximateWordsRule, (1,1)),
brill.SymmetricProximateTokensTemplate(brill.ProximateWordsRule, (2,2)),
brill.SymmetricProximateTokensTemplate(brill.ProximateWordsRule, (1,2)),
brill.SymmetricProximateTokensTemplate(brill.ProximateWordsRule, (1,3)),
brill.ProximateTokensTemplate(brill.ProximateTagsRule, (-1, -1), (1,1)),
brill.ProximateTokensTemplate(brill.ProximateWordsRule, (-1, -1), (1,1))
]
trainer = brill.FastBrillTaggerTrainer(raubt_tagger, templates)
braubt_tagger = trainer.train(train_sents, max_rules=100, min_score=3)
答案 0 :(得分:0)
您可能会因为使用NLTK 3而获得这些错误,其中一些Brill标记代码已更改,包括模板。有关详细信息,请参阅this answer。
答案 1 :(得分:0)
正如之前的评论者提到的那样,使用NLTK 3对Brill tagger进行了更改。我在这里创建了一个nltk-trainer存储库的分支:
https://github.com/burgersmoke/nltk-trainer
Brill tagger的这个fork的唯一变化是在这个文件中:
https://github.com/burgersmoke/nltk-trainer/blob/master/nltk_trainer/tagging/training.py