实体链接(entity link)初识

1.概念

         实体链接(Entity Linking,EL)是指将自由文本中已识别的实体对象(例如:人名、地名、机构名等),无歧义的正确的指向知识库中目标实体的过程。通俗的讲,就是自由文本中的实体对象到底是个啥,找到知识库中最符合该实体的目标项。如果有对应的实体,则返回该实体;如果没有,则将该实体标记为NIL。        

        命名实体链接(NEL)是自然语言及知识图谱应用中的一个重要任务,其核心思想是为文本中提及到的实体分配唯一标识,所以其往往作为命名实体识别(NER)的后置任务,对某段文本中识别出的实体,将其与知识库中对应的实体链接起来。

        NEL也被称为实体链接、命名实体消歧(NED)、命名实体识别和消歧(NERD)或命名实体规范化(NEN)。NEL除了信息提取外,还有广泛的应用。NEL应用于信息检索、内容分析、智能标注、问题回答系统、推荐系统等。

2.通用方法

        由于名称变化和歧义问题,NEL不是一个简单的任务。命名多样化是指一个实体可以以不同的方式被提及。例如,实体Michael Jeffrey Jordan可以使用许多名字来指代,如Michael JordanMJJordan。然而,歧义问题与这样一个事实有关,即名称可能根据上下文引用不同的实体。这里有一个模棱两可的例子,名字 Bulls 可以在维基百科中应用到多个实体,如NBA球队Chicago Bulls,橄榄球球队Belfast Bulls等。

        一般来说,一个典型的实体链接系统由候选实体生成、候选实体排序和不可链接的提及预测三个模块组成。下面给出了每个模块的简要描述。

  1. 候选实体生成 —— 在知识库中查找到所有相关的候选实体项,目标是通过过滤知识库中不相关的实体来检索一组候选实体。检索到的集合包含可能引用实体提到的实体。
  2. 候选实体排名 —— 根据抽取的特征,做对应的相似性计算,最后对候选实体集中的实体进行评分,排序后取出Top1,即为链接的内容。
  3. 不可链接的提及预测 —— 此模块将验证前一个模块中确定的排名最高的实体是否是给定提及的目标实体。如果不是,那么它会返回NIL。基本上,这个模块处理不可链接的提及。

3.库函数实现

        有许多库可用于实现NEL,以DBpedia Spotlight为例,这里NEL的目标知识库是DBpedia,DBpedia是从Wikipedia(维基百科)中提取的结构化知识库。DBpedia Spotlight是一个使用DBpedia uri自动注释文本文档的系统,开发它是为了将文档Web与数据Web互连。

        DBpedia Spotlight被部署为Web服务,我们可以使用提供的Spotlight API来实现NEL。你甚至可以检查DBpedia Spotlight服务器的状态。下面是一个使用Spotlight API执行NEL的python客户端的例子。

import requests
from IPython.core.display import display, HTML# An API Error Exception


class APIError(Exception):def __init__(self, status):
        self.status = statusdef __str__(self):
        return "APIError: status={}".format(self.status)
  
    
# Base URL for Spotlight API
base_url = "http://api.dbpedia-spotlight.org/en/annotate"# Parameters 

# 'text' - text to be annotated 
# 'confidence' -   confidence score for linking
params = {"text": "My name is Sundar. I am currently doing Master's in Artificial Intelligence at NUS. I love Natural Language Processing.", "confidence": 0.35}# Response content type

headers = {'accept': 'text/html'}# GET Request
res = requests.get(base_url, params=params, headers=headers)

if res.status_code != 200:
    # Something went wrong
    raise APIError(res.status_code)# Display the result as HTML in Jupyter Notebook

display(HTML(res.text))

        正如你在上面的例子中看到的,DBpedia Spotlight正在将定位的实体链接到DBpedia知识库。因此,我们得到了带标注的文本。Spotlight支持多种语言和多种响应内容类型,包括HTML、JSON、XML、N-Triples等。如果你不熟悉Spotlight API,可以使用DBpedia Spotlight的REST接口编写的公开包装器。

4.公开数据集

        常见的数据集包括FIGER、AIDA CoNLL YAGAO、KILT、NLP&CC2014(中文)等,链接:
Machine Learning Datasets | Papers With Codeicon-default.png?t=M276https://paperswithcode.com/datasets?task=entity-linking

5.SOTA模型

        截至2022年4月,在各数据集下的SOTA模型如下:

实体链接(entity link)初识_第1张图片

6.github优秀代码链接

         1.ccks_baidu_entity_link

(1)利用知识库描述文本的信息来增强实体识别的性能,提出了 BERT=EntityNameEmbedding(BERT-ENE) 模型;

(2)提出了一种将 BERT-ENE 模型与 BERT-CRF 模型相融合的新方法,相比传统方法识别效果有了显著提升;

(3)针对实体消歧子任务,将其 视为二分类问题,通过基于 BERT 的二分类模型对候选实体进行预测,然后对预测的概率进行排序,进而完成消歧任务;

(4)缺点:将训练集分为9份,采用9折交叉验证,分别按照loss和f1保存模型,共18个模型,这提升了模型的整体性能,但带来的问题是训练特别耗时。

GitHub - panchunguang/ccks_baidu_entity_link: ccks baidu entity link 实体链接 第一名icon-default.png?t=M276https://github.com/panchunguang/ccks_baidu_entity_link        2.GENERE
GitHub - facebookresearch/GENRE: Autoregressive Entity Retrievalicon-default.png?t=M276https://github.com/facebookresearch/GENRE        3.BLINK
GitHub - facebookresearch/BLINK: Entity Linker solutionicon-default.png?t=M276https://github.com/facebookresearch/BLINK

你可能感兴趣的:(知识图谱,自然语言处理)