Python 1行代码实现文本分类(实战笔记),含代码详细说明及运行结果
Python 1行代码实现文本分类(实战笔记),含代码详细说明及运行结果
一、详细说明及代码 tc.py
=================================================================
#coding=utf-8
__author__ = 'huangzhi'
#pip install textblob #需要安装
#python -m textblob.download_corpora #需要安装
from textblob.classifiers import NaiveBayesClassifier
from textblob import TextBlob
import pickle #训练数据
train = [
('ACACIA 骑行 服 套装 男 抓绒 长袖 山 车 秋冬 自行车 服 装备 骑行 裤 长裤', '服装'),
('自行车 行车 货架 货架 单车 货架 自行 自行车 行车 装备', '自行车配件'),
('acacia 骑行 裤 长裤 夏季 骑行 服饰 透气 防晒 自行车 裤 春秋 防风 裤', '服装'),
('ACACIA 自行车 LED 尾灯 骑行 警示灯 鞍座 灯 坐垫 灯 山 车 配件 尾灯', '自行车配件'),
('秋冬 加厚 打底 底裤 黑色 弹力 紧身 女裤 铅笔 裤子', '服装'),
('自行车 把 套 副 把 人体工学 把 套 羊角 把 套 套装 骑行 装备 山 车 配件', '自行车配件'),
("ACACIA 自行车 LED 尾灯 山 车 警示灯 骑行 车尾灯 自行车 装备 配件", '自行车配件'),
('acacia 山 车 挡泥板 山 自行车 挡泥板 挡雨板 快 拆 加长 全包 挡泥 配件', '自行车配件'),
('彩宝莉 春秋季 睡衣 女 长袖 长裤 针织 棉 可爱 卡通 pink 家居服 套装', '服装'),
("男士 保暖 裤加绒 秋冬 棉裤 男 绒裤 加厚 男士 打 底裤 冬 紧身 秋裤 单件 毛裤", '服装'),
('可外 穿 夏季 情侣 睡衣 女 格子裙 纯棉 短袖 家居服 套装 男士 全棉 夏款', '服装'),
('自行车 码表 磁头 扁 辐条 圆 辐条 磁头 码表 山 车 测速器 磁铁 强力', '自行车配件')
] #测试用例
test = [
('新款 纯棉 夏季 短袖 睡衣 蕾丝 可爱 爱家 家居 家居服 套装', '服装'),
('ACACIA 自行车 多功能 组合 工具 山 车 修车 工具 骑行 带 截连器 修车 套装', '自行车配件'),
("屏幕 自行车 码表 夜光 防水 温度 骑行 码表 有线 骑行 装备", '自行车配件'),
("秋冬 加厚 打底 底裤 黑色 弹力 紧身 女裤 铅笔 裤子", '服装'),
('秋季 新款 打底 底裤 蕾丝 仿皮 铅笔 长裤 裤子', '服装'),
("自行 自行车 行车 条形 彩色 支架 防盗 防盗锁 电动 电动车 动车 锁具 钢丝 骑行 行装 装备", '自行车配件')
] #训练
cl = NaiveBayesClassifier(train) # 文本分类
print(cl.classify("屏幕 自行车 码表 夜光 防水 温度 骑行 码表 有线 骑行 装备")) # "自行车配件"
print(cl.classify("男士 保暖 裤加绒 秋冬 棉裤 男 绒裤 加厚 男士 打 底裤 冬 紧身 秋裤 单件 毛裤")) # "服装"
# 段落分类
blob = TextBlob("奶奶的 一大早 我的 自行车 坐垫 破了. 赶紧 叫 小明 穿上 他的 新款 打底裤. "
"小明 骑上 他的 自行车 帮我买 自行车 坐垫.", classifier=cl) print(blob.classify()) for sentence in blob.sentences:
print(sentence) #段落中的句子
print(sentence.classify()) #句子分类
# 测试用例的精度
print("Accuracy: {0}".format(cl.accuracy(test)))
#
# 显示10条对比信息
cl.show_informative_features(10) #模型保存
f = open('D:/pyfenlei/Text_Classification/huangzhicl1.pickle', 'wb')
pickle.dump(cl, f)
f.close() #加载模型
f = open('D:/pyfenlei/Text_Classification/huangzhicl1.pickle', 'rb')
hzcl = pickle.load(f)
f.close() #用加载的模型测试用例数据
print("Accuracy: {0}".format(hzcl.accuracy(test)))
=================================================================
二、运行结果如下:
D:\Programs\Python\Python36-64\python.exe D:/pyfenlei/Text_Classification/tc1.py
自行车配件
服装
自行车配件
奶奶的 一大早 我的 自行车 坐垫 破了.
自行车配件
赶紧 叫 小明 穿上 他的 新款 打底裤.
服装
小明 骑上 他的 自行车 帮我买 自行车 坐垫.
自行车配件
Accuracy: 1.0
Most Informative Features
contains(山) = False 服装 : 自行车配件 = 3.7 : 1.0
contains(车) = False 服装 : 自行车配件 = 3.7 : 1.0
contains(山) = True 自行车配件 : 服装 = 3.7 : 1.0
contains(车) = True 自行车配件 : 服装 = 3.7 : 1.0
contains(自行车) = True 自行车配件 : 服装 = 2.6 : 1.0
contains(配件) = False 服装 : 自行车配件 = 2.6 : 1.0
contains(装备) = True 自行车配件 : 服装 = 2.3 : 1.0
contains(套装) = True 服装 : 自行车配件 = 2.3 : 1.0
contains(秋冬) = False 自行车配件 : 服装 = 1.9 : 1.0
contains(长裤) = False 自行车配件 : 服装 = 1.9 : 1.0
Accuracy: 1.0
Process finished with exit code 0
三、保存模型
f = open('D:/pyfenlei/Text_Classification/huangzhicl1.pickle', 'wb')
pickle.dump(cl, f)
f.close()
四、加载模型并用测试数据进行预测
f = open('D:/pyfenlei/Text_Classification/huangzhicl1.pickle', 'rb')
hzcl = pickle.load(f)
f.close()
#用加载的模型测试用例数据
print("Accuracy: {0}".format(hzcl.accuracy(test)))
本人原创,未经许可,可随意转载
Python 1行代码实现文本分类(实战笔记),含代码详细说明及运行结果的更多相关文章
- 文本分类实战(十)—— BERT 预训练模型
1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 te ...
- 文本分类实战(八)—— Transformer模型
1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 te ...
- 文本分类实战(六)—— RCNN模型
1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 te ...
- 文本分类实战(五)—— Bi-LSTM + Attention模型
1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 te ...
- 文本分类实战(四)—— Bi-LSTM模型
1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 te ...
- 文本分类实战(二)—— textCNN 模型
1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 te ...
- 文本分类实战(九)—— ELMO 预训练模型
1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 te ...
- 文本分类实战(七)—— Adversarial LSTM模型
1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 te ...
- 文本分类实战(三)—— charCNN模型
1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 te ...
随机推荐
- hdu-1142(记忆化搜索+dij)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1142 思路:1.不是求最短路径,而是求如果两个点A,B直接相连,且A到终点的距离大于B到终点的距离,求 ...
- 【Unity】2.3 项目浏览器和资源的组织
分类:Unity.C#.VS2015 创建日期:2016-03-29 一.Project-工程浏览器 前面我们说过,Unity中的Project View(称为工程浏览器)相当于VS2015中的解决方 ...
- C语言之接收方向键指令让屏幕上的输出能移动
首先,需要了解一下控制台坐标 #include <stdio.h> #include <stdlib.h> #include <conio.h> main() { ...
- 1) Spring_HelloWorld
1. Spring Tool Suite™ 方式一:下载对应eclipse版本的文件,离线安装 4.4.2 springsource-tool-suite-3.6.4.RELEASE-e4.4.2-u ...
- 老刘 Yii2 源码学习笔记之 Module 类
关系类图 从上图可以看出 Application 类继承了 Module,在框架中的是非常重要角色. 加载配置 public function setModules($modules) { forea ...
- 【Win10】一些零碎不好归档的小总结(原谅我这个该死的标题吧)
一.同步方式获取设备的屏幕分辨率 public static class ScreenResolution { /// <summary> /// 获取屏幕高度. /// </sum ...
- Windows Phone 8.1 生命周期调试
之前重装了机子,今天调试时突然找不到调试生命周期的菜单栏了.最后找了5分钟,终于找回来了,特此记录以免以后重装后再出现这种状况. 项目启动调试后: 这样是没有显示调试生命周期的,接下来在工具栏右键: ...
- jvm linux 时区设置
# 背景 在接入集团一个平台的时候,发现录制某个接口到测试环境回放,发现接口入参一致,一个start_day 一个end_day,但回放的时候会多调用一次数据库查询,很是奇怪: 查阅业务代码,发现确实 ...
- 设计模式之代理模式(Proxy Pattern)_补充篇
写在前面: 代理模式的内部原理,作用及远程代理的实现在上一篇博文中都做了详细解释,本文只是对其内容的补充,介绍其它代理 一.虚拟代理 首先,明确虚拟代理的作用:在巨大对象被真正创建出来之前,用虚拟代理 ...
- ADO.NET系列之DataAdapter对象
ADO.NET系列之Connection对象 ADO.NET系列之Command对象 ADO.NET系列之DataAdapter对象 ADO.NET系列之事务和调用存储过程 我们前两篇文章介绍了ADO ...