有什么办法来检测像putjbtghguhjjjanikastring?

人们在我的网站上search,其中一些search是这些search:

tapoktrpasawe qweasd qwa as aıe qwo ıak kqw qwe qwe qwe a 

我的问题是有什么办法来检测类似于上面的string?

我想这是不可能的100%,但任何解决scheme将受到欢迎:)

编辑:我的意思是“乱码search”。 例如,有些人在我的search引擎中search“asdqweasdqw”,“paykaprkg”,“iwepr wepr ow”等string,我想检测乱码search。

search结果是0还是其他什么都没关系。 我不能使用这个逻辑。

如果我考虑“正规的话”,一些新的品牌或产品将被忽略。

感谢您的帮助

你可以build立一个字符模型,从一堆英文文本中转换字符。 例如,你会发现在't'之后有一个'h'(相当常见)有多普遍。 在英语中,你期望在“q”之后,你会得到一个“u”。 如果你得到一个“q”,然后是“u”以外的东西,那么这个概率就会很低,所以它应该是相当惊人的。 规范你的表中的计数,以便你有一个概率。 然后,对于查询,遍历matrix并计算所采用的转换的乘积。 然后通过查询的长度来规范化。 当数量很低时,您可能会有一个乱码查询(或其他语言的东西)。

如果你有一堆查询日志,你可以先制作一个普通的英文文本模型,然后在模型训练阶段对你自己的查询进行大量的加权。

为背景,阅读关于马尔可夫链 。

编辑,我在Python中实现这个:

https://github.com/rrenaud/Gibberish-Detector

和buggedcom重写它在PHP中:

https://github.com/buggedcom/Gibberish-Detector-PHP

 my name is rob and i like to hack True is this thing working? True i hope so True t2 chhsdfitoixcv False ytjkacvzw False yutthasxcvqer False seems okay True yay! True 

假设你的意思是乱七八糟的search…这将是比它的价值更麻烦。 你提供了一个searchfunction,让他们使用它,但他们请。 我确定有一些algorithm可以检测出奇怪的字符分组,但是这可能比仅仅返回没有结果的资源/劳动密集度更高。

你可以做Stackoverflow的工作,并计算string的熵 。

当然,这只是用来确定低质量答案的许多启发式方法之一,不应该依赖100%的准确性。

我认为你可以像检测“常规单词”一样检测这些string。 这只是模式匹配,不是?

至于为什么用户正在search这些string,这是一个更大的问题。 您可能能够以其他方式阻止乱七八糟的search。 例如,如果是人们(或脚本)正在查找的评论垃圾短语,则安装validation码。

编辑 :解释input的另一个最终解决方法是稍微调整一下。 每10秒钟左右进行一次search。 (我记得在论坛软件上看到这个,以及在SO上的各个地方)。这将花费一些反复searchsdfpjheroptuhdfj的乐趣,同时不会干扰正在search的用户find他们的东西。

正如有些人评论的,谷歌没有hitok tapoktrpasawe或putjbtghguhjjjanika(当然,现在,当然有),所以如果你有一个方法来通过API快速谷歌search,你可以扔掉任何search条件得到没有Google结果,也不是您的某个产品的名称。 为什么你想这样做是一个完整的其他问题 – 你想节省您的search库的努力吗? 让您对“热门search字词”更有意义的评论? 或者,你是否对大型互联网上的一些人的莫名其妙的行为感到沮丧? 如果是后者,我的build议就是放手,即使有办法阻止它。 一些其他的怪异会出现。

如果在产品上执行search,则可以在查询数据库之前caching它们的名称或代码,并根据该列表进行检查。 否则,如果您的网站是针对英文用户的,则可以创build一个未在英语中使用的string字典,如qwkfagsd。 与其他答案一致的是,如果不存在,资源密集度会更高。

我想检查一下是否有一个辅音,后面跟着一个元音或两个辅音,然后是一个元音,通常意味着一个可读的单词。 否则,它将成为垃圾(除了很less的话)。 我认为这将处理大约98%的垃圾和理智的单词检测。

来想一想。连续3个辅音也许可以立即报警垃圾文本。