用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])