在最近的一个项目中,我们一直在使用 NLTK 库,我们主要对命名实体部分感兴趣。
一般来说,使用 NEChunkParser 类我们会得到很好的结果。然而,我们试图找到一种方法来向解析器提供我们自己的术语,但没有成功。
例如,我们有一个测试文档,其中我的名字 (Shay) 出现在多个位置。图书馆发现我是 GPE,而我希望它发现我是 PERSON……
有没有办法提供某种自定义文件/代码,以便解析器能够按照我的意愿解释命名实体?
谢谢!
简单的解决方案是编译一个您知道被错误分类的实体列表,然后NEChunkParser
在后处理模块中过滤输出,并将这些实体的标签替换为您希望它们拥有的标签。
正确的解决方案是重新训练 NE 标注器。如果您查看 NLTK 的源代码,您会发现它NEChunkParser
基于 MaxEnt 分类器,即机器学习算法。您必须编译和注释代表您要使用的数据类型的语料库(数据集),然后在此语料库上重新训练 NE 标记器。(这很难、耗时且可能很昂贵。)