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

如何在Python NLP场景中提取作用于宾语的谓语动词

提取作用于宾语的核心谓语动词实现方案

这类需求优先用依存句法分析实现,依存句法会天然标注句子中词与词的语义依存关系,只要找到和宾语存在动宾修饰关系的动词即可,完全匹配你举的场景需求。

实现工具选择

推荐用spaCy库实现,预训练模型自带成熟的依存句法分析能力,不用自己训练模型,开箱即用。


具体实现步骤

  • 第一步:安装依赖
    先安装spaCy库,再下载对应语言的预训练模型:
    pip install spacy
    # 处理英文下载英文模型
    python -m spacy download en_core_web_sm
    # 处理中文就替换为下载中文模型:python -m spacy download zh_core_web_sm
    
  • 第二步:核心逻辑说明
    依存句法标注中,直接宾语的标签为dobj,该宾语的父节点(head)就是对应的谓语动词,你示例中的carrots标签为dobj,它的父节点就是eat,和预期完全匹配。
  • 第三步:代码实现
    import spacy
    
    # 加载预训练模型,处理中文就替换为"zh_core_web_sm"
    nlp = spacy.load("en_core_web_sm")
    
    def extract_target_predicate(sentence: str):
        doc = nlp(sentence)
        result = []
        for token in doc:
            # 匹配直接宾语
            if token.dep_ == "dobj":
                predicate = token.head
                # 过滤仅保留动词词性的节点
                if predicate.pos_ == "VERB":
                    result.append(predicate.text)
        # 去重后返回结果
        return list(set(result))
    
    # 测试你给出的示例句子
    test_sentence = "Horses eat carrots"
    print(extract_target_predicate(test_sentence))
    # 输出结果:['eat']
    

复杂场景适配

如果需要处理更多特殊句式,可以调整匹配的依存标签规则即可:

  • 间接宾语对应标签iobj
  • 被动语态下的宾语对应标签nsubjpass
  • 介词引导的宾语对应标签pobj,可根据业务需求决定是否纳入匹配范围

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:06:04