有没有办法检测像putjbtghguhjjjanika这样的字符串?

2022-08-30 08:53:42

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

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

我的问题有没有办法检测与上面类似的字符串?

我想不可能检测到100%的它们,但任何解决方案都将受到欢迎:)

编辑:我的意思是“胡言乱语的搜索”。例如,有些人在我的搜索引擎中搜索“asdqweasdqw”,“paykaprkg”,“iwepr wepr ow”等字符串,我想检测抖动的搜索。

搜索结果是否为 0 或其他任何内容都无关紧要。我不能使用这个逻辑。

如果我考虑“常规词语”,一些新品牌或产品将被忽略。

感谢您的帮助


答案 1

您可以从一堆英文文本构建字符到字符转换的模型。例如,您会发现在“t”之后有一个“h”是多么普遍(很常见)。在英语中,你期望在“q”之后,你会得到一个“u”。如果你得到一个“q”,后面跟着一个“u”以外的东西,这将以非常低的概率发生,因此它应该非常令人担忧。规范化表中的计数,以便获得概率。然后,对于查询,遍历矩阵并计算所采用的转换的乘积。然后按查询的长度进行规范化。当数字较低时,您可能有一个乱码查询(或其他语言的查询)。

如果您有一堆查询日志,则可以首先创建一般英语文本的模型,然后在该模型训练阶段对自己的查询进行大量加权。

有关背景信息,请阅读马尔可夫链

编辑,我在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

答案 2

你可以做Stackoverflow做的事情,并计算字符串的熵

当然,这只是SO用于确定低质量答案的众多启发式方法之一,不应依赖其100%准确。


推荐