常见的信息过滤与反垃圾手段有以下几种:
文本匹配
正则表达式:主要解决敏感词过滤的问题,一般使用正则表达式匹配。但正则表达式的效率一般较差。
Trie算法:当并发量较高时,就需要更合适的方法,一般是Trie树的变种,空间和时间复杂度都比较好的有双数组Trie算法等。
Trie算法的本质是确定一个有限状态自动机,根据输入数据进行状态转移。双数组Trie算法优化了Trie算法,利用两个稀疏数组存储树结构,base数组存储Trie树的节点,check数组进行状态检查。双数组Trie数需要根据业务场景和经验确定数组大小,避免数组过大或者冲突过多。
Hash表达式:更简单的实现是通过构造多级Hash表进行文本匹配。该方案处理速度较快,稍加变形,即可适应各种过滤场景,缺点是使用Hash表会浪费部分内存空间,如果网站敏感词数量不多,浪费部分内存还是可以接受的。
有时候,为了绕开敏感词检查,有些输入信息被做手脚,如“阿_拉_伯”,这时候还需要对信息做降噪预处理,然后再进行匹配。
分类算法
早期网站识别垃圾信息主要手段是人工方式,后台运营人员对信息进行人工审核。
自动化方法是采用分类算法。
以反垃圾邮件为例说明分类算法的使用,先将批量已分类的邮件样本输入分类算法进行训练,得到一个垃圾邮件分类模型,然后利用分类算法结合分类模型对待处理邮件进行识别。
比较简单的分类算法有贝叶斯分类算法,这是一种利用概率统计方法进行分类的算法。
《算法——贝叶斯》
黑名单
黑名单也可以用于信息去重,黑名单可以通过Hash表实现,该方法实现简单,时间复杂度小,满足一般场景使用。但是当黑名单列表非常大时,Hash表需要占据极大的内存空间。
在对过滤需求要求不完全精确的场景下,可用布隆过滤器代替Hash表。《Bloom Filter(布隆过滤器)的概念和原理》布隆过滤器是用它的发明者巴顿布隆的名字命名的,通过一个二进制列表和一组随机数映射函数实现
电子商务风险控制
风险
账户风险:账户被黑客盗用,恶意注册账号等。
买家风险:黄牛利用促销抢购低价商品;
卖家风险:货不对板,虚假发货,炒作信用等。
交易风险:信用卡盗刷,支付欺诈,洗钱套现。
风控:
机器自动风控的技术手段主要有规则引擎和统计模型。
规则引擎:
统计模型
规则引擎虽然技术监督,但是随着规则的逐渐增加,会出现规则冲突,难以维护等情况,而且规则越多,性能也越差。目前大型网站更倾向于使用统计模型进行风控。风控领域使用的统计模型使用前面提到的分类算法或者更复杂的机器学习算法进行智能统计。
如图所示,根据历史交易中的欺诈交易信息训练分类算法,然后将经过采集加工后的交易信息输入分类算法,即可得到交易风险分值。
经过充分训练后的统计模型,准确率不低于规则引擎。分类算法的实时计算性能更好一些,由于统计模型使用模糊识别,并不精确匹配欺诈类型规则,因此对新出现的交易欺诈还具有一定预测性。