使用我自己的Tokeniser创建Spacy管道?

使用我自己的Tokeniser创建Spacy管道?,spacy,Spacy,让我困惑的是,spacy“管道”是一系列处理步骤,但将原始数据转换为spacy文档的第一步是“隐藏”的。我认为,与所有其他步骤不同,它无法通过管道访问。 那么,如果我想替换它、更改它,或者用我自己的标记器创建一个管道,那么正确的方法是什么呢?标记器之所以不是常规管道的一部分,是因为它是“特殊的”:实际上只能有一个,而所有其他管道组件都会获取一个文档并返回它,标记器获取一个文本字符串,并将其转换为文档 但是,nlp.tokenizer是可写的,因此您可以创建自己的,甚至可以用。下面是一个超级简单的

让我困惑的是,spacy“管道”是一系列处理步骤,但将原始数据转换为spacy文档的第一步是“隐藏”的。我认为,与所有其他步骤不同,它无法通过管道访问。
那么,如果我想替换它、更改它,或者用我自己的标记器创建一个管道,那么正确的方法是什么呢?

标记器之所以不是常规管道的一部分,是因为它是“特殊的”:实际上只能有一个,而所有其他管道组件都会获取一个
文档并返回它,标记器获取一个文本字符串,并将其转换为
文档

但是,
nlp.tokenizer
是可写的,因此您可以创建自己的,甚至可以用。下面是一个超级简单的例子,展示了这个想法:

从spacy.lang.en导入英语
从spacy.tokens导入文档
nlp=英语()
def my_标记器(文本):
标记=text.split(“”)
doc=doc(nlp.vocab,words=tokens)
退货单
nlp.tokenizer=my_tokenizer
doc=nlp(“你好,世界!”)
打印([token.text表示文档中的token])#['Hello','world!']