Вы можете добавлять собственные правила в токенизатор 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']