我们运行一个联盟计划。注册的用户在成功招募其他用户时可以获得积分。但是,垃圾邮件发送者正在滥用该程序,并自动注册大量帐户。我们希望通过关闭明显由机器生成的帐户来防止这种情况发生。我的想法是编写一个程序来识别机器生成的帐户名称,或者至少选择一个子集进行手动检查。
到目前为止,我们发现异常id有两种:
第一个是有一些 id 看起来与其他的非常相似,例如:
- wss12345
- wss12346
- wss12347
- 测试1
- 测试2
- ...
第二个是有一些id看起来像是随机生成的,没有规则,例如:
- MiDjiSxxiDekiE
- NiMjKhJixLy
- DAFDAB7643
- ...
对于第一个,我使用 Levenshtein(edit) 距离。这个方法可以找出一些id,在type 1中说明了。(我做过这个,可以得到很好的性能)
对于第二个,我可以计算 id 的概率,就像:
id = "DAFDAB7643:
p(id) = p(D)*p(A|D)*p(F|A)*p(D|F)*...*p(3|4)
所以我可以用概率来过滤掉异常的id。(只是一个想法;我还没有尝试过。)
谁能给我关于这个话题的其他建议?我还能如何解决这个问题?你能看出我尝试中的缺陷或遗漏吗?