在实践中命名实体识别

时间:2018-01-16 23:13:27

标签: python entity-framework nlp named-entity-recognition spacy

我是一名努力学习的NLP新手,希望更好地了解命名实体识别(NER)在实践中是如何实现的,例如在spaCy等流行的python库中。

我理解它背后的基本概念,但我怀疑我错过了一些细节。 从文档中,我不清楚例如对文本和注释数据进行了多少预处理;以及使用什么统计模型。

您知道是否:

  • 为了工作,文本必须在模型训练之前经过分块,对吧?否则它将无法执行任何有用的工作?
  • 在模型训练之前,文本和注释通常是否正常化?那么,如果命名实体位于句子的开头或中间,它仍然可以工作吗?
  • 特别是在spaCy中,具体如何实现?它是HMM,CRF还是其他用于构建模型的东西?

道歉,如果这一切都是微不足道的,我在找到有关NER实施的易读文档方面遇到了一些麻烦。

1 个答案:

答案 0 :(得分:1)

https://spacy.io/models/en#en_core_web_md中,他们说English multi-task CNN trained on OntoNotes。所以我想这就是他们获取网元的方式。您可以看到管道是

tagger,解析器,ner

,并在此处了解更多信息:https://spacy.io/usage/processing-pipelines。我会尝试删除不同的组件,然后看看会发生什么。这样,您可以看到什么取决于什么。我很确定NER取决于标记器,但不确定是否需要解析器。当然,所有这些都需要标记器

我不明白你的第二点。如果一个实体在句子的开头或中间处很好,那么NER系统应该能够抓住它。我看不到您在文本上下文中如何使用normalize一词。

关于模型,他们提到了多任务CNN,所以我想CNN是NER的模型。有时人们在顶部使用CRF,但他们没有提到它,所以可能就是这样。根据他们的表现数据,这已经足够了