SpaCy,在管道期间应用扩展

SpaCy, apply extensions during pipe

在 SpaCy 中,您可以像这样为文档设置扩展名:

Doc.set_extension('chapter_id', default='')

doc = nlp('This is my text')
doc._.chapter_id = 'This is my ID'

但是,我有数以千计的文本文件需要由 NLP 处理。 SpaCy 建议为此使用 pipe

docs = nlp.pipe(array_of_texts)

如何在 pipe 期间应用我的扩展值?

您可能希望在 nlp.pipe 上启用 as_tuples 关键字参数,这样您就可以传入 (text, context) 元组列表,并生成 (doc, context) 元组。所以你可以这样做:

data = [('Some text', 1), ('Some other text', 2)]

def process_text(data):
    for doc, chapter_id in nlp.pipe(data, as_tuples=True):
        doc._.chapter_id = chapter_id
        yield doc