在游戏中聊天功能几乎是必备的功能,这样的功能存在一定的问题那就是会导致世界频道很乱,经常会有一些敏感词,或者一些游戏厂商不愿意看到的聊天,之前我们游戏中也有这样的问题,我们公司做了举报和后台监控,今天就来实现下这种监控。

1、需求分析:

因为深度学习用的不咋样,虽然之前写过强化学习,但是看强化学习的结果不是特别满意,所以研究下简单一些的方法实现。 这种分类任务其实有现成的解决方案,比如垃圾邮件的分类是同样的问题,虽然有不同的解法,但是我还是选择了最简单的朴素贝叶斯分类。主要做一些探索, 因为我们的游戏大都是中文,所以我们需要对中文进行分词,比如我是帅哥,要拆分

2、算法原理: 

朴素贝叶斯算法,是一种通过根据新样本的已有特征在数据集中的条件概率来判断新样本所属类别的算法;它假设①每个特征之间相互独立、②每个特征同等重要。也可以理解为根据过往的概率判断当前特征同时满足时的概率。具体的数学公司可以自己百度,数据公式太鸡儿难写了,大概懂得就好。

在恰当的时候使用恰当的算法。

jieba 分词原理 :jieba分词属于概率语言模型分词。概率语言模型分词的任务是:在全切分所得的所有结果中求某个切分方案S,使得P(S)最大。

​​

可以看到jieba 自带了一些词组,在切分时会从这些词组中为基础单位进行拆分。

注:以上两个技术的原理我只是简单的介绍,如果想彻底搞明白又得写一大篇文章,可以百度下,到处都是,找一篇能看懂的就可以了。如果能用就先用起来。

3、技术分析

中文分词的包最出名的分词包是jieba,至于是不是最好的我也不知道,我想火是有火的道理,先做起来。jieba的原理不用深究,优先解决问题,遇到了问题可以再以问题点进行学习,这样的学习模式才是最高效的。

因为最近在做语音相关的东西,有大佬推荐了库nltk,查阅了相关的资料,似乎是做语言处理方向很出名的库,很强大,功能很强大,我这里主要选择了他的分类算法,这样我就不用关注具体的实现,也不用重复造轮子了,况且还不如别人造的好,拿来用之就好。 python 是真不错,各种包,各种轮子。

安装命令:

pip install jieba
pip install nltk

分别输入以上两句代码,等运行完毕后,包就安装成功了,可以开心的测试了

"""
#Author: 香菜
@time: 2021/8/5 0005 下午 10:26
"""
import jiebaif __name__ == '__main__':result = " | ".join(jieba.cut("我爱北京天安门,very happy"))print(result)

看下分词结果,可以说非常好,果然专业就是专业。

​​

4、源码

简单的测试做了,可以发现我们要完成的基本上都有了,现在开始直接搞代码。

1、加载初始的文本资源。

2、去除文本中的标点符号

3、对文本进行特征提取

4、训练数据集,训练出模型(也就是预测的模型)

5、开始测试新输入的词语

#!/usr/bin/env python
# encoding: utf-8
import reimport jieba
from nltk.classify import NaiveBayesClassifier"""
#Author: 香菜
@time: 2021/8/5 0005 下午 9:29
"""
rule = re.compile(r"[^a-zA-Z0-9\u4e00-\u9fa5]")
def delComa(text):text = rule.sub('', text)return textdef loadData(fileName):text1 = open(fileName, "r", encoding='utf-8').read()text1 = delComa(text1)list1 = jieba.cut(text1)return " ".join(list1)# 特征提取
def word_feats(words):return dict([(word, True) for word in words])if __name__ == '__main__':adResult = loadData(r"ad.txt")yellowResult = loadData(r"yellow.txt")ad_features = [(word_feats(lb), 'ad') for lb in adResult]yellow_features = [(word_feats(df), 'ye') for df in yellowResult]train_set = ad_features + yellow_features# 训练决策classifier = NaiveBayesClassifier.train(train_set)# 分析测试sentence = input("请输入一句话:")sentence = delComa(sentence)print("\n")seg_list = jieba.cut(sentence)result1 = " ".join(seg_list)words = result1.split(" ")print(words)# 统计结果ad = 0yellow = 0for word in words:classResult = classifier.classify(word_feats(word))if classResult == 'ad':ad = ad + 1if classResult == 'ye':yellow = yellow + 1# 呈现比例x = float(str(float(ad) / len(words)))y = float(str(float(yellow) / len(words)))print('广告的可能性:%.2f%%' % (x * 100))print('脏话的可能性:%.2f%%' % (y * 100))

看下运行的结果

​​

5、扩展

1、数据源可以修改,可以用已经监控的数据存储到数据库中进行加载

2、可以多一些数据分类,方便客服进行处理,比如分为广告,脏话,对官方的建议等等,根据业务需求进行定义

3、可以对概率比较高的数据衔接其他系统进行自动处理,提高处理问题的处理速度

4、可以使用玩家的举报,增加数据的积累 5、可以将这个思想用作敏感词的处理,提供敏感词字典,然后进行匹配,检测

6、可以做成web服务,进行回调游戏

7、可以把模型做成边学习边预测,比如有些案例需要客服手动处理,标记好之后直接加入到数据集中,这样数据模型可以一直学习

6、遇到的问题

1、遇到的问题,标点符号问题,标点符号如果不去除会导致匹配的时候标点符号也算作匹配,不合理。

2、编码的问题,读出来的是二进制,搞了半天才解决

3、技术选型问题,在最初的时候想用深度学习解决,也看了一些解决方案,奈何自己的电脑训练实在太慢,先选择这样方式练习下

4、代码很简单,但是阐述技术很难,代码早都写好了,但是这篇文章还是过了一个周末才写好

7、总结:

遇到问题就去找技术方案,如果知道方案就去实现,遇到bug就去查,念念不忘必有回响,你的任何一次尝试都是学习的好机会。

⑥项目源码案例分享有
如果你用得到的话可以直接拿走,在我的QQ技术交流群里群号:754370353(纯技术交流和资源共享,广告勿入)以自助拿走
点击这里 领取

游戏是通过什么检测脏话的?Python带你搞清原理!相关推荐

  1. python识别人脸多种属性_人脸检测及识别python实现系列(4)——卷积神经网络(CNN)入门...

    人脸检测及识别python实现系列(4)--卷积神经网络(CNN)入门 上篇博文我们准备好了2000张训练数据,接下来的几节我们将详细讲述如何利用这些数据训练我们的识别模型.前面说过,原博文给出的训练 ...

  2. 传统运动物体检测方法的Python实现

    传统运动物体检测方法的Python实现 文章目录 传统运动物体检测方法的Python实现 一.目标跟踪算法综述 1. 传统方法:特征提取+滤波类搜索算法 2. 深度学习方法: 目标检测和相似度匹配 二 ...

  3. 抖音热门游戏Fill one-line puzzle game解法的Python代码实现

    抖音热门游戏Fill one-line puzzle game解法的Python代码实现 导语 思路 代码 验证 谢谢小李同学的提醒,加上了无解的判断,不然如果无解就进入死循环了! 版权声明:原创文章 ...

  4. 短代码的java打地鼠_女白领在家无聊玩打地鼠游戏,不经意间已经学会了Python编程...

    女白领在家无聊玩打地鼠游戏,不经意间已经学会了Python编程 玩打地鼠的游戏,因为有BUG,需要优化,于是无意间竟然学到了很多python的基础内容. 女白领说:在家玩了一个用python做的打地鼠 ...

  5. Python带你玩澳门赌场游戏

    Python带你玩澳门赌场游戏 1.开发环境:pycharm 2.完整代码: import random print('*'*40) print('欢迎进入澳门赌场') print('*'*40) u ...

  6. 基于opencv的人脸检测与识别(python)(1)

    基于opencv的人脸检测与识别(python语言)(1) 人脸检测和识别技术就目前而言,已经相对成熟,各类算法层出不穷,这都归功于各位奋斗在一线的大佬的努力(站在巨人的肩膀上的感觉就是爽).本文是参 ...

  7. 基于虚拟现实的游戏中的人工智能:如何使用Python和Pygame实现人工智能

    作者:禅与计算机程序设计艺术 <基于虚拟现实的游戏中的人工智能:如何使用Python和Pygame实现人工智能> 1. 引言 1.1. 背景介绍 随着虚拟现实 (VR) 和增强现实 (AR ...

  8. python对财务人员的帮助-还不熟练VBA的财务人,让Python带你弯道超车!

    原标题:还不熟练VBA的财务人,让Python带你弯道超车! 相信做财务的同学肯定对VBA这门编程语言并不感到陌生. VBA可以帮助我们快速的处理大量的数据,一些复杂的逻辑或需要重复操作的处理也可以用 ...

  9. 【功能开发篇】游戏中的时间系统修改Unity自带组件运行速度

    "功能开发篇"系列文章记录了我在平时工作中遇到的问题以及一些和游戏功能相关的项目经验. 目录 1. 插件介绍 2. 核心类功能拆解 3. Timeline深入 修改Rigidbod ...

最新文章

  1. android jks sha1,Android 获取签名文件jks的SHA1值或者SHA256的值
  2. 8086之8253芯片仿真
  3. What‘s new in dubbo-go v1.5.6
  4. python:小心类实例的属性动态绑定机制
  5. 跨平台开发框架 Lynx 初探
  6. 西南交通大学计算机组成原理,西南交通大学计算机组成原理课程设计报告
  7. 量子计算机西南交大,交大量子光电实验室
  8. cgo 解决 error while loading shared libraries: xxx.so.x
  9. CCNA实验:实验一:思科设备基本配置
  10. 深度解析ElasticSearch的分布式架构原理
  11. 计算机的表格如何加边框,技巧:三种快速添加Excel表格边框的方法
  12. 恒星结构和演化-学习记录3-第三章-物态方程2
  13. bootstrap3 文件上传插件fileinput中文说明文档
  14. 认知科学早期的计算机隐喻理论是什么,相对于认知科学,首先我们得从这六个问题着手...
  15. 【转】微信小程序日期时间选择器(年月日时分秒)
  16. 14个python就业前景_python普通人学有什么用 就业前景和工资待遇怎么样
  17. 【JS】1067- 一个神奇的交叉观察 API Intersection Observer
  18. Koa2常用的一些中间件
  19. 原生Deta(日期)的各种格式以及其转换方法
  20. 史上最短命 Windows 系统!比尔盖茨研发,用过几乎都是差评...

热门文章

  1. [git] fatal: Exiting because of an unresolved conflict.
  2. 注销公司是否需要办理注销呼叫中心许可证?
  3. 如何把苹果文件APP里的Word文档传到手机备忘录
  4. 倡导低碳低成本出行,神州租车用实力说话
  5. 基于WEB多媒体电子贺卡平台
  6. SEO优化 TDK的写法思路
  7. 流程控制语句swtch
  8. MySql (4)-储存引擎、索引、锁、集群
  9. 西安长安茶馆/金领女子书院环境怎么样?路线怎么走?
  10. 教师节我用Python做了个学生点名系统送给老师当礼物,这回毕业稳了