利用朴素贝叶斯算法实现新闻敏感词的屏蔽功能
敏感词检测步骤:
1.分词:对获取的评论进行分词处理,采用的是jieba分词
2.去除无意义词:采用的是哈工大的词表,遍历每一条评论,判断是否在无用词表(这里主要包含特殊字符,标点符号,感叹词等)中,从而达到去除无意词的效果
3.通过评论建立自己的词库,采用并集处理,达到词库中词的唯一性
4.建立向量:将去除无意词后的评论装换成稀疏矩阵,采用的是多项式模型,这里考虑到评论一般都比较短小,相对来说,几乎每一个词都会影响到最终的判断,所以采用多项式模型,而没有采用伯努利模型
5.划分训练集和测试集:采用random.shuffle()函数将数据随机排序,然后再通过切片处理划分数据,为了保证每条评论与其对应的标签保持一致,采用zip()函数将评论和标签绑定在一起
6.调用sklearn里面内置的贝叶斯算法接口
材料及源代码:
链接: https://pan.baidu.com/s/1B7eULxS7VpvvTeXdfQPq4w
提取码: hsua
里面有代码需要用的评论、无意词表、、特别明显的敏感词
代码实现
#导入需要的库
import random
import numpy as np
import jieba
import pandas as pd
import math
import sys
from sklearn.naive_bayes import MultinomialNB
# 分词
def JieBa(text):
temp_text = ' '.join(jieba.cut(text,cut_all=False))
return temp_text
# 去停用词
def Delet_stopword(text):
temp_text = ''
# 遍历分词后评论的每个词
for word in text:
# 判断是否在停用词表中,存在则删除
if word not in stopword:
temp_text += word
return temp_text
# 创建词库
def CreateVocablist(contents):
VocabSet = set([])
fenci_list = []
delet_list = [