训练默认的感知器标注器

Train default Perceptron Tagger

我不知道如何 extend/retrain 现有模型。我不想从头开始训练我自己的标记器,我只想根据我的需要采用现有的并进行一些更改。例如

tagger = PerceptronTagger(load=True) 
tagger.train([[('restaurant','NN')]])

tokens = nltk.word_tokenize("Show me restaurant in Berlin")
tags = tagger.tag(tokens)

for i in tags:
    print(i)

这当然是默认输出:

<'Show', 'VB'> <'me', 'PRP'> <'restaurant', 'VB'> <'in', 'IN'> <'Berlin', 'NNP'>

我期待的是餐厅 - NN。 或者,小写实体如 berlin、south korea 等(将是:NN、JJ、NN)也存在一个常见问题。有什么想法或建议吗?

我建议你只在小写单词上训练标注器,这样你就不会遇到你所说的关于单词 'berlin' 和 'Berlin' 的问题。

我不知道 PerceptronTagger 的详细工作原理,但我建议您这样做。为了在您有新数据时重新训练模型,您必须 对 "updated" 数据再次重复整个训练过程

否则,如果标注器有某种内部词典,可能是 dict 将单词与相关标记相关联,您可以尝试使用新数据更新它,在本例中为“<'resturant'><'NN'>