1.朴素贝叶斯中文分类实战

文本分类的流程如下图所示

朴素贝叶斯中文分类的目录结构

  • 中文分类的目录机构包括停用词文件、训练集文件和和测试集文件,具体内容如下图所示:

2 数据准备与处理

2.1 数据集介绍

  • 案例中使用的数据是一些新闻数据,每条数据包含了新闻类型和新闻标题。
  • 类型有以下四种:财经类、娱乐类、健康类和体育类。

2.3 加载数据

  • load_data函数的功能是读取训练数据和测试数据:titles_list和labels_list中分别存放文本标题和对应的标签信息。
# 加载数据def load_data(_dir):file_list = os.listdir(_dir)titles_list = []labels_list = []for file_name in file_list:file_path = _dir + '/' + file_nametitles, labels = load_file(file_path)titles_list += titleslabels_list += labelsreturn titles_list, labels_list

2.4 中文分词

  • load_file()函数的功能是对文本数据进行分词,为实现文本向量化做准备,tiltes和labels存放标题和标签
# 分词def load_file(file_path):with open(file_path, encoding='utf-8') as f:lines = f.readlines()titles = [] # 样本数据labels = [] # 标签for line in lines:line = line.encode('unicode-escape').decode('unicode-escape')line = line.strip().rstrip('\n')_lines = line.split('---')if len(_lines) != 2:continuelabel, title = _lineswords = jieba.cut(title)s = ''for w in words:s += w + ' 's = s.strip()titles.append(s)labels.append(label)return titles, labels

3 模型的构建

步骤一:加载停用词

stop_words = load_stopwords('stop_word/stopword.txt')

步骤二:加载训练数据

train_datas, train_labels = load_data('train_data')

步骤三:文本向量表示

tf = CountVectorizer(stop_words=stop_words, max_df=0.5)
train_features = tf.fit_transform(train_datas)
train_features_arr = train_features.toarray()

步骤四:多项式贝叶斯分类器

clf = MultinomialNB(alpha=0.001).fit(train_features_arr, train_labels)test_datas, test_labels = load_data('test_data')
test_features = tf.transform(test_datas)

步骤五:模型的评估和保存

# 预测数据
predicted_labels = clf.predict(test_features)# 计算准确率
score = metrics.accuracy_score(test_labels, predicted_labels)
print(score)joblib.dump(clf, 'nb.pkl')
joblib.dump(tf, 'tf.pkl')

步骤六:模型的加载预测

def nb_predict(title):assert MODEL != None and TF != Nonewords = jieba.cut(title)s = ' '.join(words)test_features = TF.transform([s]) predicted_labels = MODEL.predict(test_features)return predicted_labels[0]if __name__ == '__main__':load_model('nb.pkl', 'tf.pkl')print (nb_predict('东莞市场采购贸易联网信息平台参加部委首批联合验收'))print (nb_predict('留在中超了!踢进生死战决胜一球,武汉卓尔保级成功'))print (nb_predict('陈思诚全新系列电影《外太空的莫扎特》首曝海报 黄渤、荣梓杉演父子'))print (nb_predict('红薯的好处 常吃这种食物能够帮你减肥'))

八、朴素贝叶斯中文分类实战相关推荐

  1. 七、朴素贝叶斯中文文本分类

    1.朴素贝叶斯中文文本分类 中文分词 停用词 朴素贝叶斯中文分类举例:新闻文档分类 朴素贝叶斯中文分类的具体过程:加载停用词.中文分词.文本向量化.模型训练和保存.模型的加载和预测. 2 中文分词 2 ...

  2. 【NLP实战系列】朴素贝叶斯文本分类实战

    实战是学习一门技术最好的方式,也是深入了解一门技术唯一的方式.因此,NLP专栏计划推出一个实战专栏,让有兴趣的同学在看文章之余也可以自己动手试一试. 本篇介绍自然语言处理中一种比较简单,但是有效的文本 ...

  3. 贝叶斯与朴素贝叶斯入门及实战

    文章目录 什么是贝叶斯 朴素贝叶斯 原理 朴素贝叶斯优点 朴素贝叶斯缺点 贝叶斯模型 高斯分布朴素贝叶斯 多项式分布朴素贝叶斯 伯努利分布朴素贝叶斯 总结 贝叶斯实战 生成式模型和判别式模型的区别 什 ...

  4. 朴素贝叶斯实现分类_关于朴素贝叶斯分类及其实现的简短教程

    朴素贝叶斯实现分类 Naive Bayes classification is one of the most simple and popular algorithms in data mining ...

  5. 朴素贝叶斯算法-分类算法

    朴素贝叶斯算法-分类算法 1 概率基础 概率定义为一件事情发生的可能性 联合概率:包含多个条件,且所有条件同时成立的概率,记作P(A,B) 条件概率:事件A在另一个事件B已经发生条件下的发送概率,记作 ...

  6. r包调用legend函数_R语言实现基于朴素贝叶斯构造分类模型数据可视化

    本文内容原创,未经作者许可禁止转载! 目录 一.前言 二.摘要 三.关键词 四.算法原理 五.经典应用 六.R建模 1.载入相关包(内含彩蛋): 1.1 library包载入 1.2 pacman包载 ...

  7. 从零开始学Python【38】--朴素贝叶斯模型(实战部分)

    [前言] 在<从零开始学Python[37]--朴素贝叶斯模型(理论部分)>中我们详细介绍了朴素贝叶斯算法的基本概念和理论知识,在这一期我们继续介绍该算法的实战案例.将会对高斯贝叶斯.多项 ...

  8. 朴素贝叶斯算法及其实战

    1.概率: 随机事件发生的可能性 2.定义 贝叶斯方法 贝叶斯方法是以贝叶斯原理为基础,使用概率统计的知识对样本数据集进行分类.由于其有着坚实的数学基础,贝叶斯分类算法的误判率是很低的.贝叶斯方法的特 ...

  9. 构造matlab决策树分类器,Matlab建立逻辑回归,决策树,SVM,KNN和朴素贝叶斯模型分类绘制ROC曲线...

    ​ 尽管对于较高的阈值,SVM可以产生更好的ROC值,但逻辑回归通常更擅长区分不良雷达收益与良好雷达.朴素贝叶斯的ROC曲线通常低于其他两个ROC曲线,这表明样本内性能比其他两个分类器方法差. 比较所 ...

最新文章

  1. Fragment系列总结(一)Fragment概念与生命周期
  2. Python语言学习:复杂函数(yield/@property)使用方法、案例应用之详细攻略
  3. 如何获取字符的ASCII值
  4. Web开发笔记(一)
  5. HTML基础学习(二)—CSS
  6. 功夫小子实践开发-Menu家族学习及开始菜单场景的实现
  7. Java语言程序设计(基础篇)课后答案
  8. wps 打开xml格式乱码_Word和WPS打开文件乱码怎么办?
  9. Git(码云)如何把本地仓库提交到远程仓库
  10. nmos导通流向_MOS管类型-MOS管4种类型与工作原理解析
  11. WPF支持OneWay,TwoWay,OneTime,Default和OneWayToSource
  12. 2021年第十二届蓝桥杯A组省赛
  13. ORA-01400错误
  14. python bind_Python tkinter之Bind(绑定事件)的使用示例
  15. CUDA out of memory(CUDA显存不足)
  16. 机械加工工艺装备基本术语
  17. win10下samba提示windows无法访问
  18. “互联网+”谋定新业态-李玉庭:经信研究重整消费升级
  19. Verliog语法(程序)
  20. 收藏一个关于a4纸 dpi的知识

热门文章

  1. CATALINA_BASE和CATALINA_HOME,多实例tomcat与多版本tomcat运行
  2. 火爆背后的挑战:直播平台的高并发架构设计
  3. 一个野路子java程序员的自述
  4. 揭开互联网公司的神秘面纱,数据解读那些slay整个行业的互联网公司
  5. 反思找开瓶器的过程:预判选择方法的执行结果 充分主动积极的沟通
  6. HTTP一个 TCP 连接可以发多少个 HTTP 请求等面试题
  7. Bootstrap的form-group form-control input-group button-group
  8. Yii的各种render
  9. PHP生成唯一订单号
  10. 小米手机能用上鸿蒙吗,鸿蒙系统小米手机能用吗?鸿蒙系统支持第三方手机!