我是NLP场景的新手,正在使用OpenNLP 1.5
开始使用。
我仔细阅读了文档中给出的一些命令:
https://opennlp.apache.org/documentation/manual/opennlp.html
(我正在使用命令行界面开始)
我使用已有的样本模型来试验不同的工具,最后决定创建一个自定义NER模型。
我按照上述链接中的说明进行操作。
将给定的示例句子复制到.train
文件中(我只是创建了一个带有该扩展名的新文件并将内容粘贴到其中):
<START:person> Pierre Vinken <END> , 61 years old , will join the board as a nonexecutive director Nov. 29 .
Mr . <START:person> Vinken <END> is chairman of Elsevier N.V. , the Dutch publishing group .
我使用以下命令制作模型:
bin/opennlp TokenNameFinderTrainer -model en-ner-person2.bin -lang en -data en-ner-person2.train -encoding UTF-8
问题在于,即使模型正在创建,它似乎也无法正常工作。通过使用新创建的模型进行测试:
bin/opennlp TokenNameFinder en-ner-person2.bin
但是当我输入Pierre Vinken
时,它并没有被识别为一个人。我还尝试从具有完全相同内容的.txt
文件创建模型,但这也失败了。
我做错了什么?
TIA。
答案 0 :(得分:4)
简而言之 - 您不能期望统计模型只能从两个句子中学习。再加上14,998,你很高兴。
训练数据应包含至少15000个句子以创建表现良好的模型
CRF(条件随机场)是这样的统计模型,他们确实需要很多数据来计算游戏规则,他们不是简单地“记住”他们在训练阶段看到的内容因此,即使你从试验集中要求某些东西 - 他们也无法提供答案。