regex 可以处理严重拼写错误的单词的正则表达式

f1tvaqid  于 2023-05-23  发布在  其他
关注(0)|答案(4)|浏览(157)

有没有一种方法可以创建一个正则表达式,确保在给定的字符范围内(例如20个字符),8个字符中有5个是按顺序出现的?
我正在处理可怕的OCR/扫描,我可以忍受误报。
有办法做到这一点吗?

**更新:**我想匹配例如“mshpeln”作为misspelling。我不想做OCR。OCR工作已经完成,但做得很差(即它最初说misspelling,但OCR的副本读作“mshpeln”)。我不知道我必须匹配的文本是什么(即。我不知道它是“mshpeln”,它可能是“mispel”或任何数量的其他组合)。

我并不想用它来做拼写检查,而只是找到一个捕获组的结尾。顺便说一句,我目前在获取all.css文件时遇到了麻烦,所以暂时无法进行评论。

xtupzzrd

xtupzzrd1#

我认为你不需要正则表达式,但数据库与所有有效的话和创造性的使用功能,如soundex()和/或levenshtein()
你可以这样做:用所有有效的单词(dictionary)创建表,用wordsnd(计算为soundex(word))这样的列填充它,为wordsnd列创建索引。例如,对于单词mispeling,您可以将snd填充为M214。如果你使用SQLite,它有soundex()implemented by default
现在,当你得到新的坏单词时,计算soundex()并在索引表中查找它。例如,对于单词mshpeln,它将是soundex('mshpeln') = M214。好了,这样你就能得到正确的单词了。
但这看起来不像正则表达式-对不起。

2uluyalo

2uluyalo2#

老实说,我认为这样的项目更适合真人来做,而不是电脑。如果项目太大,一两个人很难完成,你可能想看看亚马逊的Mechanical Turk,在那里你可以外包工作,每个解决方案只需要几分钱。

hmtdttj4

hmtdttj43#

这不能用正则表达式来完成,但可以用自定义算法来完成。
例如,要在文本正文中查找类似“拼写错误”的单词:
1)预处理。创建一个Set(在数学意义上,保证是唯一元素的集合),其中包含拼写错误的所有唯一字母-{e, i, g, l, m, n, p, s}
2)将正文拆分为单词。
3)对于每个单词,创建一个包含所有唯一字母的Set。然后,在这个集合和你要匹配的单词的集合上执行集合交集的操作-这将得到两个集合都包含的字母。如果这个集合中剩下5个或更多字符,则您在这里有一个可能的匹配。
如果OCR可以添加错误的空格,则考虑一次添加两个单词而不是单个单词。等等根据你的要求。

2skhul33

2skhul334#

我没有解决这个问题的办法,事实上,这里正好相反。
由于以下两个原因,无法通过编程方式更正OCR错误:
1.您无法量化OCR算法产生的错误,因为它可能在0到100%之间
1.要应用校正,您需要知道最大误差可能是多少,以便设置可接受的水平。
nello world 作为“hello world”的第一个猜测,这是非常相似的。然后,用另一种字体,写在“痛苦”黄色或什么,第二个猜测是 noiio verio 相同的表达。计算机如何知道这个词如果被更好地识别的话会是相似的呢?
否则,给定一个预定的误差,mvp的解决方案在我看来似乎是最好的。
更新:
经过一点挖掘,我发现了一个可能相关的参考:String similarity measures

相关问题