如何检查字符串是否随机化,或人类生成和发音?

Tim*_*ock 53 mysql algorithm nlp spam phonetics

用于识别[可能] bot生成的用户名.

假设您有一个像"bilbomoothof"这样的用户名..它可能是无稽之谈,但它仍然包含可发音的声音,所以看起来像人类生成的.

我接受它可能是从一个音节字典或单词部分中随机生成的,但让我们假设有问题的机器人有点垃圾.

  1. 假设您有一个像"sdfgbhm342r3f"这样的用户名,对于人来说,这显然是一个随机字符串.但这可以通过编程方式识别吗?
  2. 有没有可用的算法(类似于Soundex等),可以识别字符串中的可发音如此?

适用于PHP/MySQL的解决方案最受欢迎.

Mac*_*Mac 16

我想你能想到的东西一样,如果你能限制自己发音的声音在英语.对我来说(我是法国人),像szczepanwawrzyniec这样的是不可发音的,当然也有一定的随机性.

但他们实际上是波兰人的名字(意思是史蒂文劳伦斯)......


Cle*_*man 8

我同意Mac.但更重要的是,人们有时会使用不可发音的用户名,例如qwerty或rtfmorleave.

为什么要这么麻烦?

<过时和错误,但我不会因为评论而删除>

但更重要的是,没有机器人使用'zetztzgsd'作为用户名,他们有真实姓名,可能的昵称等字典,所以我认为这对你来说是浪费时间

</ absolete和false,但我不会因为评论而删除>

  • @clement不是真的.Twitter上的很多机器人用户名都有很差的自动生成名称,与"zetztzgsd"一样,对于有不可用的用户名的人来说也差.这很好,因为测试只是一个指标,它不会依赖于100%,其他的行为测试将被执行 (4认同)
  • 对于用户是否是真品,这可以添加到总体权重中的另一件事 - 它不是唯一使用的指标. (3认同)

Raf*_*ird 8

查找n-gram分析.它已成功用于自动检测文本语言,即使在非常短的文本上也能令人惊讶地工作.

在线演示(不再在线)将'bilbomoothof'识别为英语,将'sdfgbhm342r3f'识别为尼泊尔语.它可能总是返回最佳匹配,即使它是非常差的.我认为你可以训练它来辨别'可发音'和'随机'.


Art*_*ger 1

回复问题#1:

不幸的是,这是无法做到的,因为柯尔莫哥洛夫复杂度函数不可计算,因此您无法生成这样的算法,除非您将一些规则应用于可能的用户名域,然后您将能够执行启发式分析和决定,但即便如此,它实际上也是如此难做。

PS:发布此答案后,我遇到了一些服务,该服务提供了用户名域限制的示例,让用户使用众所周知的公共域的邮箱作为他们的用户名。