Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用nltk在Python中识别包含上下文的命名实体_Python_Nltk_Named Entity Recognition - Fatal编程技术网

使用nltk在Python中识别包含上下文的命名实体

使用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) 运行这段代码

我有一个文本,希望使用带有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)
运行这段代码让我

(S the/DT (NE Iraqi/NNP) people/NNS)
然而,我希望我的算法能够将“伊拉克人民”识别为一个命名实体,即

(S the/DT (NE Iraqi/NNP people/NNS))
现在,我对如何进行这项工作的最好猜测是查看pos标记标记的标记列表,并用名词组成块,紧跟在专有名词之后。
有没有更好的方法,或者甚至是我不知道的库?

ne_chunk
代表NLTK目前推荐的命名实体chunker,这是一种统计模型。这意味着

  • 有时候可能是错的
  • 它可能被训练来预测不同于你希望它预测的事情
很遗憾,您无法修改模型。因此,您只有两个选择: 要么你训练你自己的模型,这将是一个很大的工作。或者你使用一些启发式方法,例如你正在提出的方法


至于使用哪种启发式,这取决于您的应用程序。但是,一般来说,错误应该不会让您感到惊讶…

我没有使用NLTK,但是您显示的结果看起来像是句子组块结果,而不是NER结果。您确定API中没有其他调用来获取命名实体吗?