Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何计算拼写更正的准确性?_Python_Nlp_Textblob - Fatal编程技术网

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

Python 如何计算拼写更正的准确性?,python,nlp,textblob,Python,Nlp,Textblob,我正在编写一个代码,用于在文本中提取错误的单词,我正在使用python和textblob库。在此库中有一个函数更正,但它只返回基于错误短语的正确短语,例如: in: b = TextBlob("I havv goood speling!") in: print(b.correct()) out: I have good spelling! 我想计算更正的准确性,即根据原文获得更正的百分比,或仅获得文本中错误单词的数量 有人可以帮我吗?对于字符串比较,您通常使用levensinterdistan

我正在编写一个代码,用于在文本中提取错误的单词,我正在使用python和textblob库。在此库中有一个函数更正,但它只返回基于错误短语的正确短语,例如:

in: b = TextBlob("I havv goood speling!")
in: print(b.correct())
out: I have good spelling!
我想计算更正的准确性,即根据原文获得更正的百分比,或仅获得文本中错误单词的数量


有人可以帮我吗?

对于字符串比较,您通常使用levensinterdistance。这对于单词的错误程度很重要,对于更正的准确性,您需要语言数据来检查更正的输出是否正确,但我认为您只需要一个数字来告诉您必须更正的文本比例,这是统计误报、真阳性的简单统计数据,真否定和假否定。只有谷歌的精确性、召回率和f分数。

不会恢复信心,会。然而,这并没有真正的帮助,因为正确的单词和那些被固定为最高置信度的单词有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

很容易获得大量已更改的单词。提取所有单词,得到正确的句子并从中提取单词,然后检查新列表中的哪些单词在原始列表中缺失。够了吗?顺便说一句,为什么要使用spacy标记?除非在原始字符串中至少出现一个拼写正确的单词,否则您的代码工作得非常好。例如,如果你用text='I havv good speling and you have good speling'来运行代码,结果是0而不是3。最好是逐字比较原始字符串和固定字符串,例如:printlen[x,y代表x,y代表ziporig_单词,fixed_单词如果x!=y]@jofrev你是对的,我被原始示例句子分心了。