1.1 为什么要过滤
对于游戏研发商来说,如何有效规避或减少垃圾号在世界频道刷广告,是一个非常头疼的问题。如果采用游戏客户端直接屏蔽关键字的方式,会干扰到很多玩家的正常交流;如果采用游戏后台过滤关键字的方式,提取聊天记录之后再手动封号会很不及时;如果采用让玩家手动屏蔽、拉黑的方式,刷广告的问题依然没有治本;如果采用限制聊天等级,玩家又容易在新手期就流失……
-
垃圾信息,危害了游戏本身,影响玩家的体验
- 防止不良分子“拉人”,严重压缩游戏的盈利空间
1.2 朴素贝叶斯过滤器
1.2.1 朴素贝叶斯的原理
假设聊天记录的内容中包含的词汇为Wi,垃圾消息Spam,正常消息ham。判断一段聊天记录,内容包含的词汇为Wi,判断该聊天记录是否是垃圾消息,即计算P(S|Wi)这个条件概率。根据Bayes' theorem:
其中:
-
Pr(S|Wi) 出现词汇Wi的消息是垃圾消息的条件概率(即后验概率);
-
Pr(S) 训练阶段消息数据集中垃圾消息的概率,或实际调查的垃圾消息的概率(即先验概率);
-
Pr(Wi|S) 垃圾消息中词汇Wi出现的概率;
-
Pr(H) 训练阶段消息数据集中正常消息的概率,或实际调查的正常消息的概率;
- Pr(Wi|H) 正常消息中词汇Wi出现的概率;
对于聊天记录中出现的所有词汇,考虑每个词汇出现事件的独立性,计算Pr(S|Wi)的联合概率Pr(S|W),W={W1,W2,...Wn}:
其中:
-
P 即Pr(S|W),出现词汇W={W1,W2......Wn}的邮件是垃圾消息的条件概率;
- Pi 即Pr(S|Wi),出现词汇Wi的邮件是垃圾消息的条件概率;
注: 程序中,通过计算出Pr(S|W)和Pr(H|W),比较Pr(S|W)和Pr(H|W)的大小,判断是垃圾消息还是正常消息。我们发现Pr(S|W)和Pr(H|W)计算的分母相同,所以我们只需要比较分子即可。
但存在两个问题:
当词汇不存在时,即ni=0,此时Pr(S|Wi) = 0,会造成P=0,无法比较
当Pr(S|Wi)较小时,连乘操作会造成下溢出问题
解决方案:
计算P(Wi|S)和P(Wi|H)时,将所有词汇初始化出现的次数为1,并将分母初始化为2(或根据样本/实际调查结果调整分母的值)。
# 统计语料库中词汇在S和H中出现的次数
wordsInSpamNum = np.ones(numWords)
wordsInHealthNum = np.ones(numWords)
spamWordsNum = 2.0
healthWordsNum = 2.0
计算P(Wi|S)和P(Wi|H)时,对概率取对数
pWordsSpamicity = np.log(wordsInSpamNum /spamWordsNum)
pWordsHealthy = np.log(wordsInHealthNum /healthWordsNum)
所以最终比较的是,P(W1|S)P(W2|S)....P(Wn|S)P(S)和P(W1|H)P(W2|H)....P(Wn|H)P(H)的大小。
ps = sum(testWordsMarkedArray *pWordsSpamicity) + np.log(pSpam)
ph = sum(testWordsMarkedArray *pWordsHealthy) + np.log(1 - pSpam)
测试效果: 5574个样本,采用交叉验证,随机选取4574个作为训练样本,产生词汇列表(语料库),对1000个测试样本,分类的平均错误率约为:2.5%。
1.2.2 具体实现
有了贝叶斯模型之后,还不能立即应用,例如有些短语“Ø1~3!2@8@44#8z¥75@5”,里面含有一些特殊字符,可以把这些特殊字符过滤掉,过滤了之后还需要切词,然后才能应用贝叶斯模型,所以具体的实现过程如下:
特别注意的是上图中,当我们识别到一条消息是垃圾之后,很有可能这条消息中的某些短语也能加入到黑名单样本库中作为判断素材,所以我们把判断出来的垃圾消息和它的切词结果放在样本库中,后续再由人工标注出黑名单词汇,加入到贝叶斯模型的训练中。
另外贝叶斯模型在不断判断过程中,会对每一个样本得出一个“后验概率”,我们会定期淘汰掉后验概率比较小的词汇,以保证整个模型运行的高效。
1.3 游密IM智能过滤的价值
根据之前在端游、页游对玩家、客户的调研,游密通讯迅速响应,推出了一套高效智能的广告过滤系统,能够分析聊天内容,快速与过滤词库匹配,再结合消息发送者的帐号、设备、用户历史行为等信息,迅速准确的判定是否应该过滤。系统不受无效字符干扰、支持多种语言,而且还支持用户自定义过滤词库。另外,智能的系统还会自动学习,把新出现的广告内容添加到黑名单词库中,自动迅速打击垃圾信息。
采取这样的做法,一方面协助游戏运营高效地管理游戏内的社交系统,强力打击广告、脏字等各式各样敏感词汇,就连“+v①2叁泗五看#尕%簧&片”等各种变形也不在话下,确保每一位玩家都能享受到绿色的聊天环境。另一方面,游密的反垃圾系统还率先添加了“防拉人”过滤,阻止不良分子在游戏中影响玩家的去向,极大程度地减少玩家的流失。
而上述整个过滤过程都将在后台高效完成,在玩家毫无感知的情况下,以每秒超过500万字的分词速度,丝毫不会影响玩家间的正常交流。
不仅如此,游密通讯SDK还提供独有的举报、反馈等接口,支持玩家在游戏中直接举报其他有违规行为的玩家,而游戏监管运营人员只需在游密的运营管理平台上查看举报信息,并对违规玩家进行禁言等操作,实现技术与运营管理的完美结合,最大限度地保证游戏社交环境的健康性。
游密科技一直推崇“服务至上,与您共同提升用户体验”的服务理念,在一系列的定制化游戏通讯功能的道路上打造出了一支快速、积极、高质的服务团队。未来,游密科技将继续锤炼产品,为游戏研发商及玩家带来更优质、更具亲和力的服务体验,助力国内外精品游戏蓬勃发展!
编辑:小游
转载于:https://blog.51cto.com/13476288/2054727