gpt4 book ai didi

python - 自定义命名实体识别

转载 作者:行者123 更新时间:2023-12-05 05:36:36 25 4
gpt4 key购买 nike

我有以下句子:

text="The weather is extremely severe in England"

我想执行自定义的名称实体识别 (NER) 过程

首先,一个普通的NER 过程将输出带有GPE 标签的England

pip install spacy

!python -m spacy download en_core_web_lg

import spacy
nlp = spacy.load('en_core_web_lg')

doc = nlp(text)

for ent in doc.ents:
print(ent.text+' - '+ent.label_+' - '+str(spacy.explain(ent.label_)))

Result: England - GPE - Countries, cities, states

但是,我希望整个句子都带有标签High-Severity

所以我正在执行以下程序:

from spacy.strings import StringStore

new_hash = StringStore([u'High_Severity']) # <-- match id
nlp.vocab.strings.add('High_Severity')

from spacy.tokens import Span

# Get the hash value of the ORG entity label
High_Severity = doc.vocab.strings[u'High_Severity']

# Create a Span for the new entity
new_ent = Span(doc, 0, 7, label=High_Severity)

# Add the entity to the existing Doc object
doc.ents = list(doc.ents) + [new_ent]

我正在接受以下错误:

ValueError: [E1010] Unable to set entity information for token 6 which is included in more than one span in entities, blocked, missing or outside.

据我了解,发生这种情况是因为 NER 已经将 England 识别为 GRE 并且无法在现有标签上添加标签。

我尝试执行自定义 NER 代码(即,没有先运行正常的 NER 代码)但这并没有解决我的问题。

关于如何解决这个问题有什么想法吗?

最佳答案

确实看起来 NER 不允许重叠,这就是你的问题,你的代码的第二部分试图创建一个包含另一个 ner 的 ner,因此,它失败了。见于:

https://github.com/explosion/spaCy/discussions/10885

因此 spacy 具有跨度分类。

我还没有找到表征预定义跨度的方法(不是来自经过训练的模型)

关于python - 自定义命名实体识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73279102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com