如何使命名实体识别提供更好的数据分类

use*_*290 5 nlp spacy large-language-model

以下是新闻文章中数据的默认分类。

Christiane Amanpour 268 287 PERSON
Hamas 155 160 ORG
Rania 6 11 PERSON
Warner 0 6 ORG
Run Code Online (Sandbox Code Playgroud)

但我想改变行为如下

I would want to categorize `Christiane Amanpour` as a journalist
I would want to categorize `Rania` as a queen
I would want to categorize `Warner` as a cricket player
Run Code Online (Sandbox Code Playgroud)

我到底如何训练数据来做到这一点

小智 3

@user352290

您正在使用命名实体识别 (NER) 模型,该模型在指定的示例中提供了 PERSON 和 ORG 的标签(我认为正在使用默认的 spaCy 模型?)

根据您的问题,您似乎想要更具体的分类(例如 Christiane Amanpour -> 记者)。从广义上讲,NER 模型分为两类之一:

  • 顾名思义,4 类模型识别 4 类实体。通常是人物、地点、组织和时间/日期。大多数 4 类模型都是在CoNLL 2003语料库上训练的。
  • 18类模型可以识别18种实体类型,但是它们的F1/准确率往往较低。大多数 18 类模型都是在OntoNotes 5.0数据集上训练的。

即使 18 类 NER 模型也无法按照您的意愿对实体进行分类。例如,OntoNotes 语料库中没有记者类别。

正如@petezurich所建议的,您可以通过Entity Linking来实现此任务,它可以识别文本中的实体,并将它们映射到外部知识源(例如 Wikipedia、DBpedia)。

为了正确实现这一点,您必须决定要为每个实体定位的“数据点”。查看Christiane Amanpour 的 DBpedia 条目。该酒店dbo:occupation似乎达到了您的要求。

这个要点有一些我之前编写的代码来执行 NER 然后实体链接。您需要进行一些调整,但这是一个不错的起点。更改第 190 行以将 SPARQL 查询修改为 fetchdbo:occupation或您想要查找的任何属性。

祝你好运!