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

时间:2019-10-01 09:31:20

标签: python nlp textblob

我正在用代码提取文本中的错误单词,正在将Python与“ textblob”库一起使用。这个库中有一个函数correction(),但是它只是根据错误的短语返回正确的短语,例如:

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

我想计算更正的准确性,即基于原始文本获得更正的百分比,或者仅获取文本中错误词的数量。

有人可以帮我吗?

2 个答案:

答案 0 :(得分:1)

correct method不会返回置信度,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

答案 1 :(得分:0)

对于字符串比较,通常使用Levensthein距离。这对于单词的“错误程度”非常重要,对于更正的准确性,您需要语言数据来检查Correction()的输出是否正确,但是我想您只是想有一个数字来告诉您文本必须进行更正,这是对误报,真实肯定,真实否定和错误否定进行计数的直接统计信息。只是Google的“精度”,“召回率”和“ f得分”。