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行代码实现文本分类(实战笔记),含代码详细说明及运行结果的更多相关文章

  1. 文本分类实战(十)—— BERT 预训练模型

    1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 te ...

  2. 文本分类实战(八)—— Transformer模型

    1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 te ...

  3. 文本分类实战(六)—— RCNN模型

    1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 te ...

  4. 文本分类实战(五)—— Bi-LSTM + Attention模型

    1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 te ...

  5. 文本分类实战(四)—— Bi-LSTM模型

    1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 te ...

  6. 文本分类实战(二)—— textCNN 模型

    1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 te ...

  7. 文本分类实战(九)—— ELMO 预训练模型

    1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 te ...

  8. 文本分类实战(七)—— Adversarial LSTM模型

    1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 te ...

  9. 文本分类实战(三)—— charCNN模型

    1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 te ...

随机推荐

  1. 2018.09.24 bzoj1016: [JSOI2008]最小生成树计数(并查集+搜索)

    传送门 正解是并查集+矩阵树定理. 但由于数据范围小搜索也可以过. 我们需要知道最小生成树的两个性质: 不同的最小生成树中,每种权值的边出现的个数是确定的 不同的生成树中,某一种权值的边连接完成后,形 ...

  2. 2018.07.30 bzoj4355: Play with sequence(线段树)

    传送门 维护区间覆盖成非负数,区间变成max(xi+a,0)" role="presentation" style="position: relative;&q ...

  3. 按条件设置gridcontrol 单元格属性

    等价代码设置:(注意这里使用都是FieldName, 即绑定对象的字段名) var cn = new StyleFormatCondition(FormatConditionEnum.Expressi ...

  4. 转一个Visual Stuido 快捷键

    http://www.shortcutworld.com/en/win/Visual-Studio_2010.html 快捷键分类很详细.

  5. IntelliJ IDEA 2017版 导入项目项目名称为红色

    1.导入的项目全部是红色的,原因是版本控制问题,所以修改如下:(File--->settings) 2.找到如图位置的字样,选中当前项目,选择铅笔位置 选择铅笔 弹出对话框(默认选择的是proj ...

  6. linxu ssh 双端认证 不成功之authorized_keys

    linxu ssh 双端认证 不成功之authorized_keys liunx双端认证可以让我们更简便的在两台服务器之间传输文件,配置暂且不说,网上有大部分的文章可以搜索到,今天我要说的是在不成功的 ...

  7. Lucene.net 性能《第八篇》

    一.IndexReader性能分析 IndexReader完成了打开所有索引文件和提供底层reader API等繁重的工作,而IndexSearch则要简单得多.由于打开一个IndexReader需要 ...

  8. HDU 3472 混合图欧拉回路 + 网络流

    九野的博客,转载请注明出处:http://blog.csdn.net/acmmmm/article/details/13799337 题意: T个测试数据 n串字符 能否倒过来用(1表示能倒着用) 问 ...

  9. java.util.Date与java.sql.Date的关系和转换方法(转)

    在ResultSet中我们经常使用的setDate或getDate的数据类型是java.sql.Date,而在平时java程序中我们一般习惯使用 java.util.Date. 因此在DAO层我们经常 ...

  10. 网友写的解决uniGUI限制的方法

    群友写的解决uniGUI试用版限制修改SessionTimeOut,思路很精巧,贴过来分享,感谢朋友的奉献.当然,如果真正用uniGUI实做项目,买份正版是正道! var   UniServerOpt ...