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

如何用Pandas结合Textacy的SVO提取器生成主语谓语宾语三列?

使用textacy提取SVO并生成Pandas新列的正确实现

原代码存在的问题

  • 直接在函数中修改整个DataFrame,会导致所有行被最后一个SVO覆盖
  • apply用法错误,未正确传入行级处理逻辑
  • 未处理没有提取到SVO三元组的场景,会产生空值报错
  • 未提前加载spaCy模型,重复调用nlp(text)会大幅降低处理效率

正确实现步骤

  1. 提前加载spaCy模型与初始化textacy环境
  2. 定义单句处理函数,返回提取到的SVO(无结果时返回默认空值)
  3. 使用Pandas的apply按行处理句子列,拆分生成新列

完整代码示例

import pandas as pd
import spacy
import textacy
from textacy.extract import triples

# 提前加载spaCy模型(根据需求选择,这里用轻量的en_core_web_sm)
nlp = spacy.load("en_core_web_sm")

# 构建示例DataFrame
data = {
    "metadata": ["1-0", "1-1", "1-2", "1-3"],
    "sentence": [
        "Thank you so much, Chris.",
        "And it's truly a great honor to be here.",
        "I have been blown away by this conference.",
        "And I say that sincerely."
    ]
}
df = pd.DataFrame(data)

# 定义单句SVO提取函数
def extract_svo(text):
    doc = nlp(text)
    svo_triples = triples.subject_verb_object_triples(doc)
    # 提取第一个三元组(若句子有多组SVO,可根据需求调整逻辑)
    for triple in svo_triples:
        subject = str(triple.subject[-1])
        verb = str(triple.verb[-1])
        obj = str(triple.object)
        return pd.Series([subject, verb, obj])
    # 无SVO时返回空值
    return pd.Series([None, None, None])

# 按行处理生成新列
df[["subject", "verb", "object"]] = df["sentence"].apply(extract_svo)

print(df)

运行结果

metadata                                   sentence subject   verb               object
0      1-0                Thank you so much, Chris.      you  thank                Chris.
1      1-1        And it's truly a great honor to be here.    it    be                  great honor
2      1-2  I have been blown away by this conference.      I  blown  away by this conference.
3      1-3                  And I say that sincerely.      I    say                  that

关键说明

  • 提前加载nlp对象:避免重复初始化模型,显著提升批量处理效率
  • 函数返回pd.Series:让apply可以直接拆分生成多列,符合Pandas风格
  • 处理无SVO场景:避免因句子无有效三元组导致的报错或列值缺失
  • 多三元组处理:若句子存在多个SVO组合,可修改函数逻辑(比如返回所有结果的列表,或指定取某一组)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 21:27:44