gpt4 book ai didi

python - 为什么 spaCy 依赖符号定义 'case' 和 'compound' 不像 spacy.symbols 包中的 'nsubj' 那样被识别?

转载 作者:行者123 更新时间:2023-12-04 03:58:41 25 4
gpt4 key购买 nike

问题:
spaCy 依赖符号“compound”和“case”错误输出为“未定义”,而“nsubj”被识别,即使所有三个依赖符号在图形输出中都显示为事件状态。
'from spacy.symbols import *' 不应该像为'nsubj' 和其他人定义的那样定义所有符号吗?
spaCy 文档
https://spacy.io/api/annotation#dependency-parsing
显示在英语和通用标签依赖集中定义的“case”和“compound”。
环境
window 10; python 3.7.1;斯帕西 2.3.1;使用 Anaconda3 环境;使用 conda 安装软件包;在 Jupyter 中运行代码。所有安装的软件包都列在下面的代码之后。
代码示例

import spacy
from spacy import displacy
from spacy.symbols import *
nlp = spacy.load("en_core_web_sm") # loaded the small model but also fails with the large model
doc = nlp("Autonomous family cars and people's drones are the future.")
displacy.render(doc, style='dep') # draw a graph; shows dependencies assigned including 'compound' and 'case'

for t in doc:
if t.dep == nsubj: # dependency 'nsubj' IS recognized
print(f"Found nsub token")
if t.dep == compound: # dependency 'compound' is NOT recognized
print(f"Found compound token")
if t.dep == case: # dependency 'case' is NOT recognized
print(f"Found case token")

最佳答案

你是对的,symbols模块不包含 casecompound .您可以使用以下代码查看所有符号:

from spacy import symbols
help(symbols)
此问题的解决方法是将每个缺失依赖项的实际值存储到一个变量中。首先让我们找到每个 token 的依赖标签及其编号:
import spacy
from spacy.symbols import *
nlp = spacy.load("en_core_web_lg")
doc = nlp("Autonomous family cars and people's drones are the future.")

for t in doc:
print(t, t.dep_, t.dep)
现在我们知道 case 的实际值了。和 compound ,我们可以为这些符号创建变量。
compound = 7037928807040764755
CASE = 8110129090154140942
原始代码现在将按预期工作。
for t in doc:
if t.dep == nsubj:
print("Found nsub token")
if t.dep == compound:
print("Found compound token")
if t.dep == CASE:
print("Found case token")

关于python - 为什么 spaCy 依赖符号定义 'case' 和 'compound' 不像 spacy.symbols 包中的 'nsubj' 那样被识别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63444313/

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