前言

使用Tensorflow,利用LSTM进行中文文本的分类。
数据集格式如下:
‘’’
体育 马晓旭意外受伤让国奥警惕 无奈大雨格外青睐殷家军记者傅亚雨沈阳报道 来到沈阳,国奥队依然没有摆脱雨水的困扰。…
‘’’
可以看出 label:体育,接着是一个 tab,最后跟随一段文字。
目标:传入模型一段文字,预测出这段文字所属类别。

数据集下载

中文文本分类数据集下载:https://download.csdn.net/download/missyougoon/11221027

文本预处理

  1. 中文分词
  2. 词语转化为 id ,embeding
    例如: 词语A 转化为 id(5)
    同时,将 label 转化 id
  3. 统计词频

代码演示

# -*- coding:utf-8 -*-import sys
import os
import jieba# 输入文件
train_file = './news_data/cnews.train.txt'
val_file = './news_data/cnews.val.txt'
test_file = './news_data/cnews.test.txt'# 分词结果
seg_train_file = './news_data/cnews.train.seg.txt'
seg_val_file = './news_data/cnews.val.seg.txt'
seg_test_file = './news_data/cnews.test.seg.txt'# 词语 和 label到id 的 映射
vocab_file = './news_data/cnews.vocab.txt'
category_file = './news_data/cnews.category.txt'#print(label)def generate_seg_file(input_file, output_seg_file):'''生成分词之后的文本数据:param input_file: 待分词的输入文件:param output_seg_file:  已经分词完毕的文本:return:'''with open(input_file, 'r') as f:lines = f.readlines()with open(output_seg_file, 'w') as f:for line in lines:label, content = line.strip('\n').split('\t')word_iter = jieba.cut(content)word_content = ''for word in word_iter:word = word.strip(' ')if word != '':word_content  += word + ' 'out_line = '%s\t%s\n'%(label, word_content.strip(' ')) # 将最后一个空格删除f.write(out_line)# 对 三个 文件 进行分词
#generate_seg_file(train_file, seg_train_file)
#generate_seg_file(val_file, seg_val_file)
#generate_seg_file(test_file, seg_test_file)def generate_vocab_file(input_seg_file, output_vocab_file):''':param input_seg_file: 已经分词的文件:param output_vocab_file: 输出的词表:return:'''with open(input_seg_file, 'r') as f:lines = f.readlines()word_dict = {}  # 统计 词频 信息,因为 我们只需要 关注的 是词频for line in lines:label, content = line.strip('\n').split('\t')for word in content.split(' '):word_dict.setdefault(word, 0) # 如果 没有这个 词语,就把给词语的默认值设为 0word_dict[word] += 1# dict.item() 将字典转化为列表# 详情参考:http://www.runoob.com/python/att-dictionary-items.htmlsorted_word_dict = sorted(word_dict.items(), key=lambda d:d[1], reverse=True)# 现在sorted_word_dict的格式为: [(word, frequency).....(word, frequency)]with open(output_vocab_file, 'w') as f:f.write('<UNK>\t1000000\n') # 因为不是所有词汇都有的,对于一些没有的词汇,就用 unk 来代替for item in sorted_word_dict:f.write('%s\t%d\n'%(item[0], item[1]))#generate_vocab_file(seg_train_file, vocab_file) # 从训练集中 统计 词表def generate_category_dict(input_file, category_file):with open(input_file, 'r') as f:lines = f.readlines()category_dict = {}for line in lines:label, content = line.strip('\n').split('\t')category_dict.setdefault(label, 0)category_dict[label] += 1category_number = len(category_dict)with open(category_file, 'w') as f:for category in category_dict:line = '%s\n' % category # 现在才知道,原来遍历字典,原来默认查出的是keyprint('%s\t%d' % (category, category_dict[category]))f.write(line)generate_category_dict(train_file, category_file)

数据预处理完毕,接下来进行模型的训练和测试,请参考: Tensorflow使用LSTM实现中文文本分类(二)

Tensorflow使用LSTM实现中文文本分类(1)相关推荐

  1. Tensorflow使用Char-CNN实现中文文本分类(1)

    前言 在之前的中文文本分类中,使用了LSTM来进行模型的构建(详情参考: Tensorflow使用LSTM实现中文文本分类(2).使用numpy实现LSTM和RNN网络的前向传播过程).除了使用LST ...

  2. TensorFlow使用CNN实现中文文本分类

    TensorFlow使用CNN实现中文文本分类 读研期间使用过TensorFlow实现过简单的CNN情感分析(分类),当然这是比较low的二分类情况,后来进行多分类情况.但之前的学习基本上都是在英文词 ...

  3. TensorFlow – 使用CNN进行中文文本分类

    使用卷积神经网络(CNN)处理自然语言处理(NLP)中的文本分类问题.本文将结合TensorFlow代码介绍: 词嵌入 填充 Embedding 卷积层 卷积(tf.nn.conv1d) 池化(poo ...

  4. 使用Tensorflow训练LSTM+Attention中文标题党分类

    这里用Tensorflow中LSTM+Attention模型训练一个中文标题党的分类模型,并最后用Java调用训练好的模型. 数据预处理 首先根据语料和实验数据训练词向量word2vec模型,这个有很 ...

  5. 【NLP】TensorFlow实现CNN用于中文文本分类

    代码基于 dennybritz/cnn-text-classification-tf 及 clayandgithub/zh_cnn_text_classify 参考文章 了解用于NLP的卷积神经网络( ...

  6. Tensorflow使用CNN卷积神经网络以及RNN(Lstm、Gru)循环神经网络进行中文文本分类

    Tensorflow使用CNN卷积神经网络以及RNN(Lstm.Gru)循环神经网络进行中文文本分类 本案例采用清华大学NLP组提供的THUCNews新闻文本分类数据集的一个子集进行训练和测试http ...

  7. 【NLP】BERT 模型与中文文本分类实践

    简介 2018年10月11日,Google发布的论文<Pre-training of Deep Bidirectional Transformers for Language Understan ...

  8. 万字总结Keras深度学习中文文本分类

    摘要:文章将详细讲解Keras实现经典的深度学习文本分类算法,包括LSTM.BiLSTM.BiLSTM+Attention和CNN.TextCNN. 本文分享自华为云社区<Keras深度学习中文 ...

  9. AI练手系列(四)—— cnews中文文本分类(RNN实现)

    数据集介绍 这个数据集是由清华大学根据新浪新闻RSS订阅频道2005-2011年间的历史数据筛选过滤生成的,数据集包含50000个样本的训练集,5000个样本的验证集,10000个样本的测试集,词汇表 ...

最新文章

  1. 【哈利波特】Sherbert Lemon对HP的解读之六
  2. android分辨率px跟dp,Android屏幕适配 px,dp,dpi及density的关系与深入理解
  3. java 外部类和内部类_java – 外部和内部类方法之间的锁定和同...
  4. 简单 python 小说爬虫 ultimate
  5. Mac的「预览」程序如何旋转图片
  6. plantUML 学习
  7. 三读《UNIX编程艺术》——UNIX哲学
  8. 基于R语言的数据分析报告
  9. 谷歌金山词霸合作版在PDF中不能取词
  10. (5)Spring框架----Bean作用域
  11. 单链表之首尾相连,成对输出
  12. Elastic Stack 开源的大数据解决方案
  13. Simscape物理网络建模的基本原理
  14. layui自定义工具栏
  15. 文件误删秒恢复!微软又发布了一款命令行神器!
  16. linux内核Kmalloc - GFP_ATOMIC - GFP_KERNEL - GFP_USER
  17. 实现一个简陋的MVC框架
  18. [转载]蛋白质相互作用数据库
  19. [转帖]三星F488E的JAVA安装方法
  20. 伪原创视频模糊 视频md5值查询

热门文章

  1. 2018 年全年详细工作日、周末、节假日数据json
  2. win32 打印机任务管理的 node 模块 (3)详解Win32 Spooler API 获取打印机列表及状态
  3. 计算机工作室名字大全,设计工作室名字(精选300个)
  4. 一文搞懂AWS EC2, IGW, RT, NAT, SG 基础篇下
  5. spring boot 2.0 官方文档 (一)
  6. 转不撞南墙不回头——树规总结
  7. 用while输出1到100的偶数python_用while语句,求1到100的偶数之和
  8. HTML网页设计期末课程大作业 ~中国茶文化5页面带轮播(HTML+CSS+JS)~ 学生网页设计作业源码...
  9. 一张图片告诉你win10各版本之间的主要区别
  10. 3D CV 论文调研