You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python的SPACY依存解析器中按箭头显示token.text "[wants,pizza]"

在spaCy中获取动词与宾语的依存组合文本

要生成[wants,pizza]这类动词+直接宾语的组合文本,核心是通过spaCy的依存关系标记找到对应动词和宾语的关联,具体实现步骤如下:

核心逻辑

  1. 找到所有标记为dobj(直接宾语)的token,它们的head就是支配该宾语的动词。
  2. 对于标记为conj(并列关系)的token,如果它的head是dobj,说明它是并列宾语,对应的动词是其head的head。

代码实现

1. 基础加载与文本处理

import spacy

# 加载spaCy英文模型
nlp = spacy.load("en_core_web_sm")
# 示例文本(对应你提到的pizza与cola为并列宾语的场景)
text = "She wants pizza and cola"
doc = nlp(text)

2. 遍历token提取目标组合

# 存储结果的列表
target_pairs = []

for token in doc:
    # 处理直接宾语
    if token.dep_ == "dobj":
        verb = token.head.text
        obj = token.text
        target_pairs.append(f"[{verb},{obj}]")
    # 处理并列宾语(如cola是pizza的并列项)
    elif token.dep_ == "conj" and token.head.dep_ == "dobj":
        # 并列宾语的动词是其head(直接宾语)的head
        verb = token.head.head.text
        obj = token.text
        target_pairs.append(f"[{verb},{obj}]")

# 输出结果
print(target_pairs)
# 输出:['[wants,pizza]', '[wants,cola]']

3. 验证依存关系(可选)

如果需要确认每个token的依存路径,可以打印详细信息:

for token in doc:
    print(f"文本: {token.text} | 依存标记: {token.dep_} | 支配词: {token.head.text}")

输出示例:

文本: She | 依存标记: nsubj | 支配词: wants
文本: wants | 依存标记: ROOT | 支配词: wants
文本: pizza | 依存标记: dobj | 支配词: wants
文本: and | 依存标记: cc | 支配词: cola
文本: cola | 依存标记: conj | 支配词: pizza

通过这个逻辑,就能精准提取出你需要的[wants,pizza]这类动词-宾语组合文本。

内容的提问来源于stack exchange,提问作者masjum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 08:03:57