NLP(十六)轻松上手文本分类

匿名 (未验证) 提交于 2019-12-02 23:54:01






# -*- coding: utf-8 -*- # time: 2019-08-13 11:16 # place: Pudong Shanghai  from kashgari.tasks.classification import CNN_LSTM_Model  # 获取数据集 def load_data(data_type):     with open('./data/cnews.%s.txt' % data_type, 'r', encoding='utf-8') as f:         content = [_.strip() for _ in f.readlines() if _.strip()]      x, y = [], []     for line in content:         label, text = line.split(maxsplit=1)         y.append(label)         x.append([_ for _ in text])      return x, y  # 获取数据 train_x, train_y = load_data('train') valid_x, valid_y = load_data('val') test_x, test_y = load_data('test')  # 训练模型 model = CNN_LSTM_Model() model.fit(train_x, train_y, valid_x, valid_y, batch_size=16, epochs=5)  # 评估模型 model.evaluate(test_x, test_y)  # 保存模型 model.save('text_classification_model')

输出的模型结果如下:

_________________________________________________________________ Layer (type)                 Output Shape              Param # ================================================================= input (InputLayer)           (None, 2544)              0 _________________________________________________________________ layer_embedding (Embedding)  (None, 2544, 100)         553200 _________________________________________________________________ conv1d (Conv1D)              (None, 2544, 32)          9632 _________________________________________________________________ max_pooling1d (MaxPooling1D) (None, 1272, 32)          0 _________________________________________________________________ cu_dnnlstm (CuDNNLSTM)       (None, 100)               53600 _________________________________________________________________ dense (Dense)                (None, 10)                1010 ================================================================= Total params: 617,442 Trainable params: 617,442 Non-trainable params: 0

数据集 accuracy loss
训练集 0.9661 0.1184
验证集 0.9204 0.2567

在测试集上的结果如下:

             precision    recall  f1-score   support            体育     0.9852    0.9970    0.9911      1000           娱乐     0.9938    0.9690    0.9813      1000           家居     0.9384    0.8830    0.9098      1000           房产     0.9490    0.9680    0.9584      1000           教育     0.9650    0.8820    0.9216      1000           时尚     0.9418    0.9710    0.9562      1000           时政     0.9732    0.9450    0.9589      1000           游戏     0.9454    0.9700    0.9576      1000           科技     0.8910    0.9560    0.9223      1000           财经     0.9566    0.9920    0.9740      1000      accuracy                         0.9533     10000    macro avg     0.9539    0.9533    0.9531     10000 weighted avg     0.9539    0.9533    0.9531     10000

text_classification_model,接着让我们利用该模型来对新的数据进行预测,预测的代码(model_predict.py)如下:

# -*- coding: utf-8 -*- # time: 2019-08-14 00:21 # place: Pudong Shanghai  import kashgari  # 加载模型 loaded_model = kashgari.utils.load_model('text_classification_model')  text = '华夏幸福成立于 1998 年,前身为廊坊市华夏房地产开发有限公司,初始注册资本 200 万元,其中王文学出资 160 万元,廊坊市融通物资贸易有限公司出资 40 万元,后经多次股权转让和增资,公司于 2007 年整体改制为股份制公司,2011 年完成借壳上市。'  x = [[_ for _ in text]]  label = loaded_model.predict(x) print('预测分类:%s' % label)

以下是测试结果:

原文1: 华夏幸福成立于 1998 年,前身为廊坊市华夏房地产开发有限公司,初始注册资本 200 万元,其中王文学出资 160 万元,廊坊市融通物资贸易有限公司出资 40 万元,后经多次股权转让和增资,公司于 2007 年整体改制为股份制公司,2011 年完成借壳上市。
分类结果:预测分类:['财经']

原文2: 现今常见的短袖衬衫大致上可以分为:夏威夷衬衫、古巴衬衫、保龄球衫,三者之间虽有些微分别,但其实有些时候,一件衬衫也可能包含了多种款式的特色。而‘古巴(领)衬衫’最显而易见的特点在于‘领口’,通常会设计为V领,且呈现微微的外翻,也因此缺少衬衫领口常见的‘第一颗钮扣’,衣服到领子的剪裁为一体成形,整体较宽松舒适。
分类结果:预测分类:['时尚']

原文3:周琦2014年加盟新疆广汇篮球俱乐部,当年就代表俱乐部青年队接连拿下全国篮球青年联赛冠军和全国俱乐部青年联赛冠军。升入一队后,周琦2016年随队出战第25届亚冠杯,获得冠军。2016-2017赛季,周琦为新疆广汇队夺得队史首座总冠军奖杯立下汗马功劳,他在总决赛中带伤出战,更是传为佳话。
分类结果:预测分类:['体育']

原文4: 周杰伦[微博]监制赛车电影《叱咤风云》13日释出花絮导演篇,不仅真实赛车竞速画面大量曝光,几十辆百万赛车在国际专业赛道、山路飙速,场面浩大震撼,更揭开不少
现场拍摄的幕后画面。监制周杰伦在现场与导演讨论剧本、范逸臣[微博]与高英轩大打出手、甚至有眼尖网友发现在花絮中闪过“男神”李玉玺[微博]的画面。
分类结果:预测分类:['娱乐']

原文5: 北京时间8月13日上午消息,据《韩国先驱报》网站报道,近日美国知识产权所有者协会( Intellectual Property Owners Association)发布的一份报告显示,在获得的
美国专利数量方面,IBM、微软和通用电气等美国企业名列前茅,排在后面的韩国科技巨头三星、LG与之竞争激烈。
分类结果:预测分类:['科技']




https://github.com/percent4/cnews_text_classification

注意:不妨了解下笔者的微信公众号: Python爬虫与算法(微信号为:easy_web_scrape), 欢迎大家关注~

来源: https://www.cnblogs.com/jclian91/p/11349543.html

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!