我想使用spacy将bs-it标记为"bs"," it“,就像我在rasa中使用它一样。我得到的输出是"bs-it“。有人能帮我一下吗?
发布于 2020-06-24 19:29:25
您可以向spaCy的标记器添加自定义规则。spaCy的标记器将连字符连接的单词视为单个token
。为了改变这一点,您可以添加自定义令牌化规则。在你的例子中,你想标记化一个infix
,即两个单词之间出现的东西,它们通常是连字符或下划线。
import re
import spacy
from spacy.tokenizer import Tokenizer
infix_re = re.compile(r'[-]')
def custom_tokenizer(nlp):
return Tokenizer(nlp.vocab,infix_finditer=infix_re.finditer)
nlp = spacy.load("en_core_web_sm")
nlp.tokenizer = custom_tokenizer(nlp)
doc = nlp("bs-it")
print([t.text for t in doc])
输出
['bs', '-', 'it']
https://stackoverflow.com/questions/62500973
复制