我正在研究文本分类并面临拼写错误的问题。我试图用 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