首页 > 解决方案 > Spacy 添加自定义组件,重写 doc.text

问题描述

我正在尝试在 spacy 的管道上创建一个自定义组件。我想将我的文本转换为更低。

我的代码:

nlp = spacy.load('en_core_web_sm')
def lower_component(doc):
    doc.text = doc.text.lower
    return doc

nlp.add_pipe(lower_component, first=True)
print('Pipeline:', nlp.pipe_names)

doc = nlp("Hello world!")
doc

我有一个

AttributeError:“spacy.tokens.doc.Doc”对象的属性“文本”不可写

你有解决我的问题的方法吗?

标签: pythonspacy

解决方案


我发现 !只是通过一个类:

class Lower(object):
name = "Lower"

nlp: Language

def __init__(self, nlp: Language):
    self.nlp = nlp

def __call__(self, doc: Doc) -> Doc:
    text = doc.text
    return self.nlp.make_doc(text.lower())

和以下 :

nlp.add_pipe(Lower(nlp), first=True)

推荐阅读