Я работаю над классификацией текста и столкнулся с проблемой орфографии. Я пытаюсь решить эту проблему с помощью spacy_hunspell, но не могу понять, в чем суть свойства hunspell_spell, потому что оно всегда возвращает None.
for token in nlp('I can haz cheezeburger.'):
print(token._.hunspell_spell)
if not token._.hunspell_spell:
print(token.text, token._.hunspell_suggest)
Код, указанный выше, возвращает:
None
I ['I', 'Ia', 'In', 'Ir', 'It', 'Io', 'IE', 'IA', 'AI', 'IN', 'RI', 'IT', 'IL', 'ID', 'DI']
None
can ['Can', 'van', 'cab', 'cam', 'ca', 'an', 'cane', 'cans', 'scan', 'cant', 'clan', 'cyan', 'Scan', 'car', 'ran']
None
haz ['ha', 'haze', 'hazy', 'has', 'hat', 'had', 'hag', 'ham', 'hap', 'hay', 'haw', 'ha z']
None
cheezeburger ['cheeseburger', 'vegeburger']
None
. []
Вначале я думал, что это свойство возвращается с ошибкой токена или нет. Кто-нибудь знает, что означает свойство hunspell_spell? Как проверить, что слово написано с ошибкой с помощью spacy_hunspell (не соответствует морфологическим правилам)? Я думаю, что моя реализация не идеальна.
for token in nlp('I can haz cheezeburger.'):
is_correct = any([token.text == str.lower(suggest) for suggest in token._.hunspell_suggest])
is_correct = "correct" if is_correct else "misspeled"
print(f"{token.text} is {is_correct}")
Указанный выше код возвращает:
I is misspeled
can is correct
haz is misspeled
cheezeburger is misspeled
. is misspeled