El "Ejemplo de Python" está conmocionado, usando Python tan simple para implementar las palabras sucias del sistema de chat, detección de anuncios

¡Poco conocimiento, gran desafío! Este artículo está participando en el " Conocimiento Necesario de los Programadores "

Este artículo también participa en  el "Programa Estrella de Excavación" para ganar paquetes de regalos creativos y desafiar incentivos creativos

La función de chat en el juego es casi una función necesaria. Hay ciertos problemas con dicha función, es decir, hará que el canal mundial sea muy caótico. A menudo hay algunas palabras sensibles o algunos chats que los fabricantes de juegos no tienen. quiero ver. También existe ese problema. Nuestra empresa ha realizado informes y monitoreo de antecedentes, e implementaremos este tipo de monitoreo hoy.

1. Análisis de la demanda:

Debido a que el aprendizaje profundo no es muy bueno, aunque he escrito antes sobre el aprendizaje por refuerzo, pero los resultados del aprendizaje por refuerzo no son particularmente satisfactorios, por lo que estudiaré un método más simple para lograrlo.

Esta tarea de clasificación en realidad tiene soluciones preparadas. Por ejemplo, la clasificación de spam es el mismo problema. Aunque hay diferentes soluciones, sigo eligiendo la clasificación Naive Bayes más simple. Principalmente hacer algo de exploración,

Debido a que la mayoría de nuestros juegos están en chino, necesitamos segmentar el chino. Por ejemplo, soy un chico guapo y necesitamos dividirlo.

2. Principio del algoritmo:

El algoritmo bayesiano ingenuo es un algoritmo que juzga la categoría de una nueva muestra de acuerdo con la probabilidad condicional de las características existentes de la nueva muestra en el conjunto de datos; asume que (1) cada característica es independiente entre sí, y (2) cada característica es igualmente importante. También puede entenderse como juzgar la probabilidad cuando las características actuales se cumplen al mismo tiempo de acuerdo con la probabilidad pasada. La compañía matemática específica puede usar Baidu por sí misma. La fórmula de datos es demasiado difícil de escribir. Probablemente sea suficiente para entenderla.

Utilice el algoritmo adecuado en el momento adecuado.

Principio de segmentación de palabras de Jieba: la segmentación de palabras de Jieba pertenece a la segmentación de palabras del modelo de lenguaje probabilístico. La tarea de la segmentación del modelo de lenguaje probabilístico es encontrar un esquema de segmentación S en todos los resultados obtenidos de la segmentación completa, de modo que P(S) sea el más grande.

imagen.png

Puede ver que jieba viene con algunas frases, que se separarán de estas frases como la unidad básica durante la segmentación.

Nota: solo presento brevemente los principios de las dos tecnologías anteriores. Si desea comprender a fondo, tendrá que escribir un artículo extenso. Puede descargarlo en Baidu y encontrarlo en todas partes. Solo busque un artículo que pueda comprender. Úsalo primero si puedes.

3. Análisis técnico

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

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

python 是真不错,各种包,各种轮子。

安装命令:

pip install jieba
pip install nltk
复制代码

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

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

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

imagen.png

4、源码

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

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

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

3、对文本进行特征提取

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

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

#!/usr/bin/env python
# encoding: utf-8
import re
 
import 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 text
 
def 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 = 0
    yellow = 0
    for word in words:
     classResult = classifier.classify(word_feats(word))
     if classResult == 'ad':
        ad = ad + 1
     if 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))
复制代码

看下运行的结果

imagen.png

所有资源下载地址:download.csdn.net/download/pe…

5、扩展

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

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

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

4、可以使用玩家的举报,增加数据的积累

5、可以将这个思想用作敏感词的处理,提供敏感词字典,然后进行匹配,检测

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

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

6、遇到的问题

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

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

3. Al principio, quería usar el aprendizaje profundo para resolver el problema de la selección técnica, y también leí algunas soluciones, pero mi entrenamiento con la computadora es demasiado lento, así que elijo esta forma de practicar primero.

4. El código es muy simple, pero es difícil explicar la tecnología. El código ya está escrito, pero este artículo se escribió después de un fin de semana.

7. Resumen:

Si encuentra un problema, busque una solución técnica. Si conoce la solución, impleméntela. Si encuentra un error, verifíquelo. Si sigue pensando en ello, habrá repercusiones. Cualquier intento suyo es bueno. oportunidad de aprender

Supongo que te gusta

Origin juejin.im/post/7022108393947004941
Recomendado
Clasificación