我想使用spaCy进行实体链接(EL)。我已经在我的领域特定语料库上训练了一个带有自定义标签的spaCy命名实体识别(NER)模型。但是,我的以下示例将使用常规实体标签PERSON和LOCATION。
在知识库( KB )中设置别名,知识库返回识别出的实体出现的候选,例如"Paris“的候选可以是维基数据条目Q47899 (巴黎希尔顿)、Q7137357 (巴黎西门)、Q5214166 (丹·巴黎)、Q90 (法国首都巴黎)或Q830149 (巴黎,美国得克萨斯州拉马尔县首府)。
我的问题与已识别的实体标签有关。如果NER将"Paris“识别为人称,则从候选人中排除Q90 (法国首都巴黎)和Q830149 (美国得克萨斯州拉马尔县首府巴黎),剩下3名候选人。然而,如果“巴黎”被认为是地点,那么只有另外两个候选者。
在给定检测到的NER标签的情况下,是否有可能以某种方式建议KB或EL模型从哪组实体中选择候选对象?在训练EL模型之前还是之后?
发布于 2020-10-12 16:40:50
这目前还没有在spaCy中实现。一般来说,以下是获得所需功能所需的步骤:
Q830149 is-a "LOCATION"等。get_candidates方法的一部分),以采用文本提及+其NER标签,并且只输出该特定标签的相关候选标签。我想指出的一个警告是,这种方法可能会放大NER步骤中的错误。想象一下,你正在谈论首都巴黎,但你的NER弄错了,并将其标记为“人”。使用这里描述的方法,NEL将无法从中恢复,并将输出它所能找到的最有可能的人,尽管这些人都不正确。
另一种方法是不更改候选生成器,而是将NER标签作为entity_linker管道中评分机制的一部分考虑在内。目前,它已经结合了两个分数:一个来自先验概率(使用来自大型训练语料库的统计数据),另一个来自上下文(使用ML和句子相似性)。匹配NER标签方面可以被包括在分数中,然后仍然有机会将"PARIS“识别为正确的实体,即使它的NER标签是错误的。但这取决于您想要强制执行的严格程度。
发布于 2020-10-13 18:13:36
我自己也有个想法。我猜有可能有两个管道,并为每个实体类型训练一个单独的NER模型。然后在每个管道中有一个单独的KB和EL-model。然后组合管道的结果。
https://stackoverflow.com/questions/64278426
复制相似问题