【发布时间】:2014-08-15 10:02:21
【问题描述】:
我一直在玩 NLTK 工具包。我经常遇到这个问题并在网上搜索解决方案,但没有得到令人满意的答案。所以我把我的问题放在这里。
NER 很多时候不会将连续的 NNP 标记为一个 NE。我认为编辑 NER 以使用 RegexpTagger 也可以改进 NER。
例子:
输入:
巴拉克奥巴马是一个伟大的人。
输出:
Tree('S', [Tree('PERSON', [('Barack', 'NNP')]), Tree('ORGANIZATION', [('Obama', 'NNP')]), (' is', 'VBZ'), ('a', 'DT'), ('great', 'JJ'), ('person', 'NN'), ('.', '.')])
在哪里
输入:
前副总统迪克·切尼告诉保守派电台主持人劳拉·英格拉汉姆,他“很荣幸”在任期间与达斯·维德相提并论。
输出:
Tree('S', [('Former', 'JJ'), ('Vice', 'NNP'), ('总统', 'NNP'), Tree('NE', [('Dick ', 'NNP'), ('Cheney', 'NNP')]), ('told', 'VBD'), ('conservative', 'JJ'), ('radio', 'NN'), ( 'host', 'NN'), Tree('NE', [('Laura', 'NNP'), ('Ingraham', 'NNP')]), ('that', 'IN'), (' he', 'PRP'), ('
', ''), ('was', 'VBD'), ('honored', 'VBN'), ("''", "''"), (' to', 'TO'), ('be', 'VB'), ('compared', 'VBN'), ('to', 'TO'), Tree('NE', [('Darth', 'NNP'), ('Vader', 'NNP')]), ('while', 'IN'), ('in', 'IN'), ('office', 'NN'), ('. ', '.')])
这里 Vice/NNP, President/NNP, (Dick/NNP, Cheney/NNP) 被正确提取。
所以我认为如果先使用 nltk.ne_chunk,然后如果两个连续的树是 NNP,那么两者都引用一个实体的可能性很高。
任何建议将不胜感激。我正在寻找我的方法中的缺陷。
谢谢。
【问题讨论】:
标签: regex nlp nltk named-entity-recognition