使用 spaCy 纠正多线程词形还原
Correct multithreaded lemmatization using spaCy
我正在尝试使用 spaCy 多线程对我的语料库进行词形还原。按照documentation,目前我的做法是:
import spacy
nlp = spacy.load('en_core_web_sm', disable=['parser', 'ner', 'tagger'])
def lemmatize():
for doc in nlp.pipe(corpus, batch_size=2, n_threads=10):
yield ' '.join([token.lemma_ for token in doc])
new_corpus = list(lemmatize())
但是,无论使用 10 线程还是 1 线程(我在 100.000 个文档上使用它),这都需要相同的时间,这表明它不是多线程的。
我的实现有误吗?
n_threads
参数在较新版本的 spacy 中已被弃用,并且不会执行任何操作。请参阅此处的注释:https://spacy.io/api/language#pipe
这是他们使用 multi-processing 执行此操作的示例代码:
我正在尝试使用 spaCy 多线程对我的语料库进行词形还原。按照documentation,目前我的做法是:
import spacy
nlp = spacy.load('en_core_web_sm', disable=['parser', 'ner', 'tagger'])
def lemmatize():
for doc in nlp.pipe(corpus, batch_size=2, n_threads=10):
yield ' '.join([token.lemma_ for token in doc])
new_corpus = list(lemmatize())
但是,无论使用 10 线程还是 1 线程(我在 100.000 个文档上使用它),这都需要相同的时间,这表明它不是多线程的。
我的实现有误吗?
n_threads
参数在较新版本的 spacy 中已被弃用,并且不会执行任何操作。请参阅此处的注释:https://spacy.io/api/language#pipe
这是他们使用 multi-processing 执行此操作的示例代码: