通过与最近的单词比较进行拼写更正
Spelling correction by comparison with nearest words
我有两个列表(列表 A 和列表 B)。 List A
包含拼写错误的单词列表(几个字符),List B
包含所有拼写正确的单词列表。
List A
的大小小于 List B
- 任务是纠正
list A
中单词的拼写,将其替换为 List B
中最相似的单词。例如:如果List A
包含单词[kodarma,belgaum,ysr]
并且List B
包含[...,Koderma,Belagavi,y.s.r. kadapa,....]
,那么这些List A
的单词应该替换为List B
单词。
策略是什么?或者唯一的方法是手动完成:(
您可以使用模块 Levenshtein
来查找列表中单词之间的相似度,如果 word_similarity_factor
超出您定义的值(例如:0.50),您可以将其附加到新列表即 list_containing_similar_words
.
示例代码已重新创建并生成了所需的结果。
from Levenshtein import ratio
list1=['kodarma','belgaum','ysr', 'kedapa']
words=['Koderma','Belagavi','y.s.r', 'kadapa']
word_similarity_factor=0.5
for i in words:
for j in list1:
if ratio(i,j)>word_similarity_factor:
list1[list1.index(j)]=i
我们还可以计算最长公共子序列(LCS),比较List A和List B中的每一个元素。这里可以使用“pylcs”模块。请参阅此 link 以获取文档 - https://github.com/Meteorix/pylcs
import pylcs
wrong=['kodarma','belgaum','ysr', 'kedapa']
correct=['Koderma','Belagavi','y.s.r', 'kadapa']
replaced = []
for w in wrong:
lcs = 0
s = ""
for c in correct:
temp = pylcs.lcs(w, c)
if temp>lcs:
lcs = temp
s = c
replaced.append(s)
print(replaced)
我有两个列表(列表 A 和列表 B)。 List A
包含拼写错误的单词列表(几个字符),List B
包含所有拼写正确的单词列表。
List A
的大小小于List B
- 任务是纠正
list A
中单词的拼写,将其替换为List B
中最相似的单词。例如:如果List A
包含单词[kodarma,belgaum,ysr]
并且List B
包含[...,Koderma,Belagavi,y.s.r. kadapa,....]
,那么这些List A
的单词应该替换为List B
单词。
策略是什么?或者唯一的方法是手动完成:(
您可以使用模块 Levenshtein
来查找列表中单词之间的相似度,如果 word_similarity_factor
超出您定义的值(例如:0.50),您可以将其附加到新列表即 list_containing_similar_words
.
示例代码已重新创建并生成了所需的结果。
from Levenshtein import ratio
list1=['kodarma','belgaum','ysr', 'kedapa']
words=['Koderma','Belagavi','y.s.r', 'kadapa']
word_similarity_factor=0.5
for i in words:
for j in list1:
if ratio(i,j)>word_similarity_factor:
list1[list1.index(j)]=i
我们还可以计算最长公共子序列(LCS),比较List A和List B中的每一个元素。这里可以使用“pylcs”模块。请参阅此 link 以获取文档 - https://github.com/Meteorix/pylcs
import pylcs
wrong=['kodarma','belgaum','ysr', 'kedapa']
correct=['Koderma','Belagavi','y.s.r', 'kadapa']
replaced = []
for w in wrong:
lcs = 0
s = ""
for c in correct:
temp = pylcs.lcs(w, c)
if temp>lcs:
lcs = temp
s = c
replaced.append(s)
print(replaced)