我正在尝试在 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”不可写
你有办法解决我的问题吗?
我发现了!刚刚通过一门课:
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)
spaCy 的核心原则之一是 spaCy 的处理永远不会修改文本本身。如果您想小写文本,则应在调用
nlp(text)
之前在 spacy 之外运行的预处理步骤中进行。
doc = nlp("你好世界!".lower())