如何使用 python 检查句子中的拼写错误

How to check spelling mistakes in sentence using python

我想检查拼写错误的数量。在句子

print(a)

输出为

myy nameq is xyz i am fromm abc cityy mycty is butful

我想知道是否有代码可以检查上面句子中的拼写错误和return拼写错误的数量。

我尝试了以下代码

from spellchecker import SpellChecker
spell = SpellChecker()
misspelled = spell.unknown(a)
for word in misspelled:
    print(spell.correction(word))
    print(spell.candidates(word))

但我得到的输出如下所示

i
{'cy', 'uc', 'ca', 'y', 'u', 'co', 'cu', 'ac', 'o', 'i', 'a', 'ec', 'ce', 'ci', 'e', 'oc', 'ic'}
i
{'ul', 'il', 'ly', 'el', 'al', 'le', 'i', 'y', 'u', 'ol', 'li', 'o', 'lu', 'a', 'lo', 'la', 'e', 'yl'}
i
{'ex', 'ox', 'xy', 'ix', 'y', 'u', 'xu', 'i', 'o', 'xe', 'xi', 'a', 'xa', 'xo', 'e', 'ax'}
i
{'ab', 'by', 'be', 'ub', 'bi', 'i', 'bu', 'y', 'u', 'bo', 'ba', 'o', 'ib', 'eb', 'a', 'ob', 'e'}
i
{'or', 'ur', 'ry', 'yr', 'i', 'er', 'y', 'u', 'ir', 'ro', 'ar', 'o', 'ra', 'ru', 'a', 'ri', 're', 'e'}
i
{'i', 'u', 'y', 'o', 'a', 'e'}
i
{'si', 'us', 'sa', 'sy', 'so', 'ys', 'as', 'es', 'y', 'os', 'u', 'su', 'i', 'o', 'is', 'a', 'e', 'se'}
i
{'ny', 'en', 'on', 'in', 'nu', 'un', 'no', 'na', 'i', 'y', 'ne', 'yn', 'u', 'o', 'an', 'a', 'ni', 'e'}
i
{'ot', 'ta', 'at', 'ti', 'to', 'et', 'y', 'u', 'te', 'it', 'i', 'o', 'a', 'ty', 'ut', 'tu', 'e'}
i
{'fa', 'ef', 'i', 'u', 'y', 'fe', 'o', 'fu', 'of', 'if', 'fy', 'a', 'af', 'uf', 'fi', 'e', 'fo'}
i
{'my', 'ym', 'mo', 'um', 'mu', 'i', 'y', 'u', 'ma', 'em', 'am', 'o', 'im', 'mi', 'me', 'a', 'om', 'e'}
i
{'oz', 'e', 'zi', 'ez', 'za', 'i', 'y', 'u', 'o', 'ze', 'az', 'a', 'zo', 'zu', 'iz'}
i
{'qo', 'iq', 'i', 'y', 'u', 'o', 'aq', 'qe', 'a', 'qa', 'eq', 'qu', 'e', 'qi'}

我的预期输出如下例所示

 number of spelling mistakes :- 6

我该怎么做 请建议

所以在做了一些事情之后我终于找到了解决方案,我们将使用 textblob 库而不是您使用的拼写检查库 让我们看看代码 -

from textblob import TextBlob

#function to convert string to list
def convert(lst):
    return ([i for item in lst for i in item.split()])
      
#add your string instead yor stng
lst =  ['yor stng']
#here we convert string to list using the function
lst = convert(lst)
#initislising the mistakes variable
mistakes = 0
#printing the list to show if text is correct
print(lst)
#here we take each item from list and correct it if it was not equal to original text that means that it has a mistake and if it is equal to old word then it does not have mistake
for x in lst:
  a = TextBlob(x)
  if (a.correct() != x):
    mistakes = mistakes + 1

#printing the number of mistakes
print(mistakes)

我得到的结果-

['yor', 'stng']
2

注意:如果句子中包含人名或地名,则会在其中添加一个错误