我正在尝试使用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

以下是他们通过多处理执行此操作的示例代码:

https://spacy.io/usage/examples#multi-processing

关于python - 使用spaCy纠正多线程lemmatization,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56754251/

10-13 07:50