如何计算拼写校正的准确性?

How can I calculate the accuracy of spelling correction?

我正在编写用于提取文本中错误单词的代码,我正在使用 python 和 "textblob" 库。在这个库中有一个函数 correction(),但它只是 returns 基于错误短语的正确短语,例如:

in: b = TextBlob("I havv goood speling!")
in: print(b.correct())
out: I have good spelling!

我想计算更正的准确率,即根据原文得到更正的百分比,或者只得到文中错字的数量。

有人可以帮我吗?

对于字符串比较,通常使用 Levensthein 距离。这对"how wrong"一个词很重要,为了更正的准确性,你需要语言数据来检查correction()的输出是否正确,但我想你只是想有一个数字告诉你什么比例文本必须更正,这是计算误报、真阳性、真阴性和假阴性的简单统计数据。只是 google "precision"、"recall" 和 "f-score".

correct method does not return confidence, Word.spellcheck 确实如此。但是,它并没有真正帮助,因为正确的单词和那些以最高置信度修复的单词具有 1.0 的置信度值,您无法推断出有多少单词得到了纠正。

您可以通过获取原始单词列表、固定单词列表然后使用列表理解来获取原始列表中缺少的单词来获取他们的编号:

from textblob import TextBlob
text = 'I havv goood speling!'
orig_words = text.split()
fixed_words = TextBlob(text).correct().split()
print(len([(x,y) for x,y in zip(orig_words, fixed_words) if x != y])) # => 3