Обычно библиотеки NLP, такие как Spacy и NLTK , хорошо справляются с преобразованием токенизации, например "It's"
в ["It", "'s"]
. но преобразовать что-то вроде what's
в ["what", "is"]
более проблематично, потому что у вас могут быть примеры, такие как "Эми балетная студия", где "s" не "is".
Вы можете отобразить все дела (он, я, что и т. Д.) И добавить новые правила для токенизатора, Spacy позволяет это:
import spacy
from spacy.symbols import ORTH, LEMMA, POS, TAG
nlp = spacy.load("en_core_web_sm")
doc = nlp(u"He's buying that") # phrase to tokenize
print([w.text for w in doc]) # ['He', "'s", "buying", 'that']
# add special case rule
special_case = [{ORTH: u"He'", LEMMA: u"He", POS: u"PRONOUM"}, {ORTH: u"is"}]
nlp.tokenizer.add_special_case(u"He's", special_case)
# check new tokenization
print([w.text for w in nlp(u"He's buying that")]) # ["He'", "is", "buying", "that"]
Этот gist проделывает большую работу по настройке этих правил.
Но я не уверен, стоит ли это делать, возможно, это не окажет большого влияния на задачу, которую вы выполняете.