如何修改 Spacy English 分词器,以便它能够分割并分开特定的标点符号对:
import spacy
nlp = spacy.load('en_core_web_md')
doc = nlp("running.(together")
# desired outcome
assert( [t.text for t in doc] == ["running", ".", "(", "together"])
目前得到的,只是一个token,
"running.(together"
。
通过修改,我的意思是:执行所有当前的英语标记化,但也拆分此连续案例。
就我个人而言,我会通过创建自定义标记器来解决这个问题。这是根据您共享的测试用例的代码。
import re
import spacy
from spacy.tokenizer import Tokenizer
infix_re = re.compile(r'''[(.]''') # it would split either on ( or .
def custom_tokenizer(nlp):
return Tokenizer(nlp.vocab, infix_finditer=infix_re.finditer)
nlp = spacy.load("en_core_web_md")
nlp.tokenizer = custom_tokenizer(nlp)
doc = nlp("running.(together")
assert( [t.text for t in doc] == ["running", ".", "(", "together"]) # passes
更新 是的,它将保留默认标记生成器以及您的连续案例的功能。
如果您想了解更多信息,请查看官方文档