八、朴素贝叶斯中文分类实战
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.朴素贝叶斯中文文本分类 中文分词 停用词 朴素贝叶斯中文分类举例:新闻文档分类 朴素贝叶斯中文分类的具体过程:加载停用词.中文分词.文本向量化.模型训练和保存.模型的加载和预测. 2 中文分词 2 ...
- 【NLP实战系列】朴素贝叶斯文本分类实战
实战是学习一门技术最好的方式,也是深入了解一门技术唯一的方式.因此,NLP专栏计划推出一个实战专栏,让有兴趣的同学在看文章之余也可以自己动手试一试. 本篇介绍自然语言处理中一种比较简单,但是有效的文本 ...
- 贝叶斯与朴素贝叶斯入门及实战
文章目录 什么是贝叶斯 朴素贝叶斯 原理 朴素贝叶斯优点 朴素贝叶斯缺点 贝叶斯模型 高斯分布朴素贝叶斯 多项式分布朴素贝叶斯 伯努利分布朴素贝叶斯 总结 贝叶斯实战 生成式模型和判别式模型的区别 什 ...
- 朴素贝叶斯实现分类_关于朴素贝叶斯分类及其实现的简短教程
朴素贝叶斯实现分类 Naive Bayes classification is one of the most simple and popular algorithms in data mining ...
- 朴素贝叶斯算法-分类算法
朴素贝叶斯算法-分类算法 1 概率基础 概率定义为一件事情发生的可能性 联合概率:包含多个条件,且所有条件同时成立的概率,记作P(A,B) 条件概率:事件A在另一个事件B已经发生条件下的发送概率,记作 ...
- r包调用legend函数_R语言实现基于朴素贝叶斯构造分类模型数据可视化
本文内容原创,未经作者许可禁止转载! 目录 一.前言 二.摘要 三.关键词 四.算法原理 五.经典应用 六.R建模 1.载入相关包(内含彩蛋): 1.1 library包载入 1.2 pacman包载 ...
- 从零开始学Python【38】--朴素贝叶斯模型(实战部分)
[前言] 在<从零开始学Python[37]--朴素贝叶斯模型(理论部分)>中我们详细介绍了朴素贝叶斯算法的基本概念和理论知识,在这一期我们继续介绍该算法的实战案例.将会对高斯贝叶斯.多项 ...
- 朴素贝叶斯算法及其实战
1.概率: 随机事件发生的可能性 2.定义 贝叶斯方法 贝叶斯方法是以贝叶斯原理为基础,使用概率统计的知识对样本数据集进行分类.由于其有着坚实的数学基础,贝叶斯分类算法的误判率是很低的.贝叶斯方法的特 ...
- 构造matlab决策树分类器,Matlab建立逻辑回归,决策树,SVM,KNN和朴素贝叶斯模型分类绘制ROC曲线...
尽管对于较高的阈值,SVM可以产生更好的ROC值,但逻辑回归通常更擅长区分不良雷达收益与良好雷达.朴素贝叶斯的ROC曲线通常低于其他两个ROC曲线,这表明样本内性能比其他两个分类器方法差. 比较所 ...
最新文章
- Fragment系列总结(一)Fragment概念与生命周期
- Python语言学习:复杂函数(yield/@property)使用方法、案例应用之详细攻略
- 如何获取字符的ASCII值
- Web开发笔记(一)
- HTML基础学习(二)—CSS
- 功夫小子实践开发-Menu家族学习及开始菜单场景的实现
- Java语言程序设计(基础篇)课后答案
- wps 打开xml格式乱码_Word和WPS打开文件乱码怎么办?
- Git(码云)如何把本地仓库提交到远程仓库
- nmos导通流向_MOS管类型-MOS管4种类型与工作原理解析
- WPF支持OneWay,TwoWay,OneTime,Default和OneWayToSource
- 2021年第十二届蓝桥杯A组省赛
- ORA-01400错误
- python bind_Python tkinter之Bind(绑定事件)的使用示例
- CUDA out of memory(CUDA显存不足)
- 机械加工工艺装备基本术语
- win10下samba提示windows无法访问
- “互联网+”谋定新业态-李玉庭:经信研究重整消费升级
- Verliog语法(程序)
- 收藏一个关于a4纸 dpi的知识
热门文章
- CATALINA_BASE和CATALINA_HOME,多实例tomcat与多版本tomcat运行
- 火爆背后的挑战:直播平台的高并发架构设计
- 一个野路子java程序员的自述
- 揭开互联网公司的神秘面纱,数据解读那些slay整个行业的互联网公司
- 反思找开瓶器的过程:预判选择方法的执行结果 充分主动积极的沟通
- HTTP一个 TCP 连接可以发多少个 HTTP 请求等面试题
- Bootstrap的form-group form-control input-group button-group
- Yii的各种render
- PHP生成唯一订单号
- 小米手机能用上鸿蒙吗,鸿蒙系统小米手机能用吗?鸿蒙系统支持第三方手机!