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

时间:2017-04-28 15:42:48

标签: 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)

运行此代码会给我

(S the/DT (NE Iraqi/NNP) people/NNS)

但是,我希望我的算法能够将“伊拉克人”视为一个命名实体,即

(S the/DT (NE Iraqi/NNP people/NNS))

现在我最好的猜测是如何解决这个问题的方法是查看pos-tagged标记列表并用名词制作块,这些名词跟随专有名词。 是否有更好的方法来解决这个问题,或者甚至是一个我不知道的图书馆?

1 个答案:

答案 0 :(得分:0)

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

  • 有时可能是错的
  • 它可能会被训练以预测不同于你想要预测的事物

很遗憾,您无法修改模型。所以你有两个选择: 要么你训练自己的模型,这将是很多工作。或者您使用一些启发式方法,例如您提议的方法。

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