为什么 spacy morphologizer 在我们使用自定义分词器时不起作用?

Why spacy morphologizer doesn't work when we use a custom tokenizer?

我不明白为什么我这样做

import spacy
from copy import deepcopy
nlp = spacy.load("fr_core_news_lg")

class MyTokenizer:
    def __init__(self, tokenizer):
        self.tokenizer = deepcopy(tokenizer)
    def __call__(self, text):
        return self.tokenizer(text)

nlp.tokenizer = MyTokenizer(nlp.tokenizer)
doc = nlp("Un texte en français.")

令牌没有分配任何变形

print([tok.morph for tok in doc])
> ['','','','','']

这种行为是预期的吗?如果是,为什么? (spacy v3.0.7)

管道期望 nlp.vocabnlp.tokenizer.vocab 引用完全相同的 Vocab 对象,但在 运行 deepcopy 之后并非如此。

我承认我不完全确定为什么你最终得到的是空分析而不是更具体的错误,但我认为 MorphAnalysis 对象集中存储在vocab.morphology 中的词汇,在两个词汇之间结束 out-of-sync。