python 单词纠错_Python 简单单词纠错识别

用Python找到错误单词的最可能的正确形式

首先使用dp,计算两个字符串的最长字串长度

然后将错误 单词和词库中的单词注意对比,找到相似度最为符合的单词,输出前6个单词供用户选择

相似度的计算目前没有找到更加合理的方法,只能用最长字串长度除以两个单词的最长的长度,感觉有点不太合理。。。

基本符合要求

# 最长单词长度

max_len = 33

dp = [

[0 for i in range(max_len)]

for j in range(max_len)

]

def getDegree(s1, s2):

s1 = s1.lower()

s2 = s2.lower()

len1 = len(s1)

len2 = len(s2)

for i in range(len1 + 1):

for j in range(len2 + 1):

if i == 0 or j == 0:

dp[i][j] = 0

else:

if s1[i - 1] == s2[j - 1]:

dp[i][j] = dp[i - 1][j - 1] + 1

else:

dp[i][j] = max(dp[i - 1][j], dp[i][j - 1])

return dp[len1][len2] / max(len1, len2)

with open('words.txt', encoding='utf8', mode='r') as f:

words = [line.strip() for line in f]

while True:

s = input('input your word\n')

# 相似度使用 最多相同字母 除以 最长单词长度 mether 和 mother 否则 altogether 相似的字母更多

res = [(w, getDegree(w, s)) for w in words]

res.sort(key=lambda item: item[1], reverse=True)

print(res[:6])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值