gpt4 book ai didi

python - 为什么 spacy ner 结果是高度不可预测的?

转载 作者:行者123 更新时间:2023-12-01 21:54:34 28 4
gpt4 key购买 nike

我为 ner 尝试了 spacy,但结果非常不可预测。有时 spacy 无法识别特定国家/地区。任何人都可以解释为什么会这样吗?我试了一些随机的句子。

案例 1:

nlp = spacy.load("en_core_web_sm")
print(nlp)
sent = "hello china hello japan"
doc = nlp(sent)
for i in doc.ents:
print(i.text," ",i.label_)

输出:在这种情况下没有输出。

案例 2:

nlp = spacy.load("en_core_web_sm")
print(nlp)
sent = "china is a populous nation in East Asia whose vast landscape encompasses grassland, desert, mountains, lakes, rivers and more than 14,000km of coastline."
doc = nlp(sent)
for i in doc.ents:
print(i.text," ",i.label_)

输出:

<spacy.lang.en.English object at 0x7f2213bde080>
china GPE
East Asia LOC
more than 14,000km QUANTITY

最佳答案

自然语言模型,如 spaCy NER,从句子的上下文结构(周围的词)中学习。这是为什么?让我们以单词 Anwarvic 为例,这是一个您以前从未见过的新单词,可能 spaCy 模型以前也没有见过它。让我们看看当提供的句子发生变化时,NER 模型将如何行动:

  • “我爱安瓦尔维克”
>>> nlp = spacy.load("en_core_web_sm")
>>> sent = "I love Anwarvic"
>>> doc = nlp(sent)
>>> for i in doc.ents:
... print(i.text," ",i.label_)
Anwarvic PERSON
  • “安沃维克是巨大的”
>>> nlp = spacy.load("en_core_web_sm")
>>> sent = "Anwarvic is gigantic"
>>> doc = nlp(sent)
>>> for i in doc.ents:
... print(i.text," ",i.label_)
Anwarvic ORG
  • “安瓦尔维克很棒”
>>> nlp = spacy.load("en_core_web_sm")
>>> sent = "Anwarvic is awesome"
>>> doc = nlp(sent)
>>> for i in doc.ents:
... print(i.text," ",i.label_)

正如我们所见,当 Anwarvic 的上下文结构发生变化时,提取的实体也会发生变化。所以,在第一句话中,动词 love 在人们中很常见。这就是为什么 spaCy 模型将其预测为 PERSON 的原因。第二句也是如此,我们使用 gigantic 来描述像 ORG 这样的组织。在第三句话中,awesome 是一个非常通用的形容词,基本上可以用来描述任何事物。这就是 spaCy NER 模型被混淆的原因。

旁注

实际上,当我在我的机器上运行第一个提供的代码时,它提取了 chinajapan,如下所示:

china   GPE
japan GPE

关于python - 为什么 spacy ner 结果是高度不可预测的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58677460/

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