我正在用代码提取文本中的错误单词,正在将Python与“ textblob”库一起使用。这个库中有一个函数correction()
,但是它只是根据错误的短语返回正确的短语,例如:
in: b = TextBlob("I havv goood speling!")
in: print(b.correct())
out: I have good spelling!
我想计算更正的准确性,即基于原始文本获得更正的百分比,或者仅获取文本中错误词的数量。
有人可以帮我吗?
答案 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得分”。