"Python Example" está chocado, usando Python tão simples para implementar as palavras sujas do sistema de bate-papo, detecção de anúncios

Pouco conhecimento, grande desafio! Este artigo está participando do " Conhecimento Necessário de Programadores "

Este artigo também participa  do "Excavation Star Program" para ganhar pacotes de presentes criativos e desafiar incentivos criativos

A função de chat no jogo é quase uma função necessária. Existem certos problemas com tal função, ou seja, ela fará com que o canal mundial fique muito caótico. Muitas vezes existem algumas palavras sensíveis, ou alguns chats que os fabricantes de jogos não quer ver. Também existe esse problema. Nossa empresa tem feito relatórios e monitoramento de antecedentes, e vamos implementar esse tipo de monitoramento hoje.

1. Análise de demanda:

Porque o aprendizado profundo não é muito bom, embora eu já tenha escrito aprendizado por reforço antes, mas os resultados do aprendizado por reforço não são particularmente satisfatórios, então estudarei um método mais simples para alcançá-lo.

Essa tarefa de classificação na verdade tem soluções prontas. Por exemplo, a classificação de spam é o mesmo problema. Embora existam soluções diferentes, ainda escolho a classificação Naive Bayes mais simples. Principalmente fazer alguma exploração,

Como a maioria dos nossos jogos é em chinês, precisamos segmentar chinês, por exemplo, sou um cara bonito e precisamos dividi-lo.

2. Princípio do algoritmo:

O algoritmo Naive Bayesiano é um algoritmo que julga a categoria de uma nova amostra de acordo com a probabilidade condicional das características existentes da nova amostra no conjunto de dados; assume que (1) cada característica é independente uma da outra, e (2) cada recurso é igualmente importante. Também pode ser entendido como julgar a probabilidade quando as características atuais são satisfeitas ao mesmo tempo de acordo com a probabilidade passada. A empresa de matemática específica pode usar o próprio Baidu. A fórmula de dados é muito difícil de escrever. Provavelmente é o suficiente para entendê-la.

Use o algoritmo certo na hora certa.

Princípio de segmentação de palavras jieba: a segmentação de palavras jieba pertence à segmentação de palavras do modelo de linguagem probabilística. A tarefa da segmentação probabilística do modelo de linguagem é encontrar um esquema de segmentação S em todos os resultados obtidos da segmentação completa, de modo que P(S) seja o maior.

imagem.png

Você pode ver que jieba vem com algumas frases, que serão separadas dessas frases como unidade básica durante a segmentação.

Nota: Eu apenas apresento brevemente os princípios das duas tecnologias acima. Se você quiser entender completamente, você terá que escrever um artigo grande. Você pode baixá-lo no Baidu e encontrá-lo em qualquer lugar. Basta encontrar um artigo que você possa entender. Use-o primeiro, se puder.

3. Análise técnica

中文分词的包最出名的分词包是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)
复制代码

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

imagem.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))
复制代码

看下运行的结果

imagem.png

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

5、扩展

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

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

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

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

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

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

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

6、遇到的问题

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

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

3. No início, eu queria usar o aprendizado profundo para resolver o problema da seleção técnica, e também li algumas soluções, mas meu treinamento em informática é muito lento, então escolho essa forma de praticar primeiro.

4. O código é muito simples, mas é difícil explicar a tecnologia.O código já foi escrito, mas este artigo foi escrito depois de um final de semana.

7. Resumo:

Se você encontrar um problema, procure uma solução técnica. Se você conhece a solução, implemente-a. Se você encontrar um bug, verifique-o. Se você continuar pensando nisso, haverá repercussões. Qualquer tentativa sua é uma boa oportunidade de aprender.

Acho que você gosta

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