以下是新闻文章中数据的默认分类。
Christiane Amanpour 268 287 PERSON
Hamas 155 160 ORG
Rania 6 11 PERSON
Warner 0 6 ORG
但我想改变如下行为
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
我到底如何训练数据来做到这一点
您正在使用命名实体识别 (NER) 模型,该模型在指定的示例中提供了 PERSON 和 ORG 的标签(我认为您正在使用默认的 spaCy 模型?)
根据您的问题,您似乎想要更具体的分类(例如 Christiane Amanpour -> 记者)。从广义上讲,NER 模型分为两类之一:
即使是 18 类 NER 模型也无法按照你的意愿对实体进行分类。例如,OntoNotes 语料库中没有记者类别。
正如 @petezurich 所建议的,您可以通过 Entity Linking 来完成此任务,它可以识别文本中的实体,并将它们映射到外部知识源(例如 Wikipedia、DBpedia)。
为了正确实现这一点,您必须决定要为每个实体定位的“数据点”。查看 Christiane Amanpour 的 DBpedia 条目。该属性
dbo:occupation
似乎实现了您正在寻找的东西。
这个gist有一些我之前编写的代码来执行NER然后实体链接。您需要进行一些调整,但这是一个不错的起点。更改第 190 行以修改 SPARQL 查询以获取 dbo:occupation
或您想要查找的任何属性。