【发布时间】:2020-10-03 09:09:01
【问题描述】:
使用 PyTesseract 后,我有一个带有单词的数据框(它们是希腊语,但没关系)。 我还创建了一个列表(words_list),这是我的自定义词典,包含我正在检查的主题的特定单词。
我想要做的是,将 df["no_punctuation"] 中的每个单词与列表中的每个单词进行比较,然后
- 如果这对单词之间的 levenshtein 距离小于 4,我想用列表中的相应单词替换数据框中的单词
- 否则,我想将单元格留空
基本上,这是我自己的拼写检查器的一个步骤,但是到目前为止我还不能让它工作。
附上数据框和列表的图像。
到目前为止我尝试过的是:
for j in range (0,len(df2)):
for word in words_list:
if (enchant.utils.levenshtein(df2["no_punctuation"][j],word)<4):
df2["new"][j]=word
else:
df2["new"][j]=""
正如它在数据帧图像中显示的那样,它只更正了“generali”这个词,并将所有其余单元格留空。但是,还有许多其他单元格也应该完成。
我也尝试了以下方法,但是它只产生空单元格。
df2['new']=df2["no_punctuation"].apply(lambda x:"" if (enchant.utils.levenshtein(text,word)>=4 for word in words_list) else word )
我想我已经接近了,但还是有问题。有什么想法吗?
【问题讨论】:
标签: python list-comprehension string-comparison spell-checking levenshtein-distance