Spacy 添加自定义组件并重写 doc.text

问题描述 投票:0回答:3

我正在尝试在 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”对象的属性“text”不可写

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

python spacy
3个回答
1
投票

我发现了!刚刚通过一门课:

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)

0
投票

spaCy 的核心原则之一是 spaCy 的处理永远不会修改文本本身。如果您想小写文本,则应在调用

nlp(text)
之前在 spacy 之外运行的预处理步骤中进行。


0
投票

doc = nlp("你好世界!".lower())

© www.soinside.com 2019 - 2024. All rights reserved.