是否有一种方法来创建正则表达式,以确保在给定的字符范围(例如,20个字符)中有5个字符是按顺序排列的?
我正在处理可怕的OCR/扫描,我可以忍受假阳性。
有办法这样做吗?
更新:我想要将"mshpeln“匹配为misspelling。我不想做OCR。OCR工作已经完成,但是做得很糟糕(也就是说,它最初说的是misspelling,但是OCR的拷贝是"mshpeln")。我不知道我要与之匹配的文本将是什么(即我不知道它是"mshpeln“,它可能是"mispel”或任何其他组合)。
我不是试图用它作为拼写检查器,而只是找到捕获组的结尾。顺便说一句,我目前在获取all.css文件时遇到了问题,所以暂时不可能进行评论。
发布于 2013-06-04 03:55:52
我认为您不需要regex,而是包含所有有效单词的数据库,并创造性地使用像soundex()和/或levenshtein()这样的函数。
您可以这样做:使用所有有效单词创建表(字典),用word和snd (计算为soundex(word))等列填充表,为word和snd列创建索引。例如,对于word mispeling,您可以将snd填充为M214。如果您使用SQLite,它有soundex() 默认实现。
现在,当您得到新的坏单词时,计算它的soundex()并在索引表中查找它。例如,对于word mshpeln,它将是soundex('mshpeln') = M214。给你,这样你就能拿回正确的单词。
但这看起来一点也不像regex -对不起。
发布于 2013-06-04 04:06:28
老实说,我认为这样的项目对一个真正的人类来说更好,而不是一台计算机。如果这个项目规模太大,可以让1到2个人轻松完成,你可能会想看看亚马逊的“机械土耳其”这样的东西,在那里你可以外包,每个解决方案只需花一分钱。
发布于 2013-06-04 04:16:13
这不能用正则表达式完成,但可以通过自定义算法来完成。
例如,要在正文中查找与“拼写错误”类似的单词:
1)预处理。创建一个Set (从数学意义上讲,集合保证是唯一的元素),其中包含所有拼写错误的唯一字母- {e, i, g, l, m, n, p, s}。
( 2)将正文分割成文字。
3)为每个单词创建一个Set,其中包含其所有独特的字母。然后,在这个集合上执行set交集的操作,以及您所匹配的单词集--这将得到包含这两个集合的字母。如果这个集合中还有5个或更多的字符,那么这里可能有匹配的字符。
如果OCR可以添加错误的空格,那么每次考虑两个单词,而不是单个单词。等等,基于你的需求。
https://stackoverflow.com/questions/16909389
复制相似问题