Как токенизировать слово дефисом в Spacy - PullRequest
1 голос
/ 21 июня 2020

Я хочу токенизировать bs-it в ["bs", "it"], используя spacy, так как я использую его с rasa. Результат, который я получил, - ["bs-it"]. Кто-нибудь может мне с этим помочь?

1 Ответ

1 голос
/ 24 июня 2020

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