使用nltk在Python中识别包含上下文的命名实体
我有一个文本,希望使用带有Python 3.6的nltk提取命名实体,包括上下文。 下面的例子应该说明我的意思:使用nltk在Python中识别包含上下文的命名实体,python,nltk,named-entity-recognition,Python,Nltk,Named Entity Recognition,我有一个文本,希望使用带有Python 3.6的nltk提取命名实体,包括上下文。 下面的例子应该说明我的意思: import nltk text = 'the Iraqi people' tokens = nltk.word_tokenize(text) tag_tokens = nltk.pos_tag(tokens) named_entities = nltk.ne_chunk(tag_tokens, binary=True) print(named_entities) 运行这段代码
import nltk
text = 'the Iraqi people'
tokens = nltk.word_tokenize(text)
tag_tokens = nltk.pos_tag(tokens)
named_entities = nltk.ne_chunk(tag_tokens, binary=True)
print(named_entities)
运行这段代码让我
(S the/DT (NE Iraqi/NNP) people/NNS)
然而,我希望我的算法能够将“伊拉克人民”识别为一个命名实体,即
(S the/DT (NE Iraqi/NNP people/NNS))
现在,我对如何进行这项工作的最好猜测是查看pos标记标记的标记列表,并用名词组成块,紧跟在专有名词之后。
有没有更好的方法,或者甚至是我不知道的库?
ne_chunk
代表NLTK目前推荐的命名实体chunker,这是一种统计模型。这意味着
- 有时候可能是错的
- 它可能被训练来预测不同于你希望它预测的事情
至于使用哪种启发式,这取决于您的应用程序。但是,一般来说,错误应该不会让您感到惊讶…我没有使用NLTK,但是您显示的结果看起来像是句子组块结果,而不是NER结果。您确定API中没有其他调用来获取命名实体吗?