Apache OpenNLP Name Entity Finder 识别错误的单词
Apache OpenNLP Name Entity Finder identifing wrong words
我正在尝试使用 Apache OpenNLP 识别文本中的日期实体。我创建了一个 java 小程序,它使用以下格式的日期范围生成标签:
<START:date> {dd/MM/yyyy} <END> .
每个标签都是一个句子,采用 OpenNLP 定义的格式。
我生成了大约 40 万个条目并训练了模型。培训结束后,我尝试通过命令行使用 TokenNameFinder 来验证是否一切正常,但对于每个单词,我都输入了 finder 将其识别为日期实体。例如,当我输入:
today is 17/04/2017
我得到的是:
<START:date> today <END> <START:date> is <END> <START:date> 17/04/2017 <END>
我认为可能是我除了日期之外没有提供任何词,所以我尝试在标签前后使用随机字符串,但训练时间一直在持续。
谁能告诉我这是我的训练数据集有问题还是我必须做的其他事情?
要训练机器学习 Name Finder 模型,您需要一个尽可能接近运行时数据的训练语料库。如果你的日期表现良好并且你不需要机器学习,你可以尝试基于正则表达式的 RegexNameFinder.
如果训练持续很长时间,要么是它太大了,要么是你没有多少空行来标记文档的结尾。有关详细信息,请参阅 Named Entity Recognition 文档。
我正在尝试使用 Apache OpenNLP 识别文本中的日期实体。我创建了一个 java 小程序,它使用以下格式的日期范围生成标签:
<START:date> {dd/MM/yyyy} <END> .
每个标签都是一个句子,采用 OpenNLP 定义的格式。
我生成了大约 40 万个条目并训练了模型。培训结束后,我尝试通过命令行使用 TokenNameFinder 来验证是否一切正常,但对于每个单词,我都输入了 finder 将其识别为日期实体。例如,当我输入:
today is 17/04/2017
我得到的是:
<START:date> today <END> <START:date> is <END> <START:date> 17/04/2017 <END>
我认为可能是我除了日期之外没有提供任何词,所以我尝试在标签前后使用随机字符串,但训练时间一直在持续。
谁能告诉我这是我的训练数据集有问题还是我必须做的其他事情?
要训练机器学习 Name Finder 模型,您需要一个尽可能接近运行时数据的训练语料库。如果你的日期表现良好并且你不需要机器学习,你可以尝试基于正则表达式的 RegexNameFinder.
如果训练持续很长时间,要么是它太大了,要么是你没有多少空行来标记文档的结尾。有关详细信息,请参阅 Named Entity Recognition 文档。