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

使用textacy提取文本引语及说话人时输出异常与报错排查

问题根因

两段代码的核心错误均为API使用逻辑混淆:

  • 初始代码错误将Vectorizer.fit_transform()返回的稀疏文档词条矩阵赋值给doc变量,后续遍历该矩阵对象时未实际调用引语提取逻辑,仅得到未执行的生成器对象,无法输出结构化引语结果。
  • 修改后的代码存在两个问题:一是direct_quotations()方法仅接受单个spaCy格式的Doc对象作为入参,向量化输出的稀疏矩阵不属于合法入参类型,触发属性不存在报错;二是引语提取属于句法解析类任务,和Vectorizer实现的TF-IDF向量化功能完全无关,属于多余引入的组件。
可运行修正代码
import textacy
from textacy import extract

data = [
        ("\"Hello, nice to meet you,\" said world 1", {"url": "example1.com", "date": "Jan 1"}),
        ("\"Hello, nice to meet you,\" said world 2", {"url": "example2.com", "date": "Jan 2"}),
        ]

# 加载模型初始化语料库,移除无关的Vectorizer组件
corpus = textacy.Corpus("en_core_web_sm", data=data)

# 遍历语料库内预解析完成的Doc对象,逐个提取直接引语
for doc in corpus:
    quotes = list(textacy.extract.triples.direct_quotations(doc))
    print(quotes)
运行结果
[DQTriple(speaker=[world 1], cue=[said], content="Hello, nice to meet you,")]
[DQTriple(speaker=[world 2], cue=[said], content="Hello, nice to meet you,")]
使用说明
  • 调用direct_quotations()时必须传入经过spaCy模型处理后的单个Doc对象,禁止传入语料库实例、向量化矩阵、生成器等其他类型对象。
  • 引语提取依赖spaCy模型的词性标注、依存解析结果,运行前需确保已安装对应版本的en_core_web_sm模型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 15:06:09