klearn 文本分类_GitHub - Lin-Dada/text_classification: 文本分类-深度学习课程大作业

本文介绍了使用Keras实现的文本分类任务,包括数据预处理、词向量训练、多种深度学习模型(如LSTM、LSTM-Attention、FastText、TextCNN等)的对比实验,特别探讨了BERT模型的性能和时间效率。实验结果显示,BERT模型虽然分类效果最佳,但训练时间过长,TextRCNN在效果和时间上达到良好平衡。
摘要由CSDN通过智能技术生成

text_classification

文本分类-深度学习课程大作业

程序运行说明

硬件

GPU: Tesla V100, 32GB显存

内存:32GB

系统:Linux(训练),Windows(展示)

软件

CUDA版本: 9.2

Pytorch:1.5

其他库:gensim,sklearn,tqdm,flask,numpy等

运行方法

如果直接使用,步骤为:

进入"Flask"文件夹,在cmd中执行以下命令:python NLP_flask.py,便可启动 flask 后台,然后在浏览器地址栏输入127.0.0.1:5000,即可看到分类系统界面。

如果需要训练,步骤为:

如果想要训练非bert的模型,需要先训练词向量:进入"src"目录下,在terminal中执行以下命令:python train_w2v.py,修改该文件的代码可以设置word2vec的窗口大小、词向量维度等。

(./src目录)在terminal中输入python run.py --model model_name --word True/False,即可启动相应模型的训练。model_name是选择的模型,word为True(默认)则进行词级别的训练,否则进行字级别的训练。word参数只针对非bert模型,因为bert是分字的。可选的模型会在后面介绍。

**注意:**训练之前请先下载数据集和bert的相关文件,在相应的文件夹内有README说明文档,内附有百度云盘下载链接。

代码文件说明

下面解释./src目录下的代码:

run.py 训练主程序

train_eval.py 具体的训练逻辑

utils.py 工具类函数

train_w2v.py 训练词向量

global_config.py 全局参数设置,如batch_size等

./model 下是不同模型的实现

./temp 下存放了预训练的词向量

运行截图

背景及任务定义

随着上世纪 90 年代互联网飞速发展,到现在我们已经进入了大数据时代。在当今的互联网中,容纳了大量的数据信息,其中包含了文本,声音,图片等。文本数据相较于图片和声音,占用网络资源少,使得在网络资源中,文本占据了相当大的一部分。为了能够将这些信息有效的组织和管理,使用户能够快速、准确、全面地获取需要的信息,就成了当今信息科学面临地一个大挑战。文本分类从知识工程到九十年代基于机器学习地分类系统,再到近

十年快速发展地基于深度学习地分类系统,现在地文本分类系统已经形成了一个较为完善的体系。

对于文本分类任务,可将其定义为一组输入到输出的映射。输入一般是包含一些原始文本的数据集,数据集由每个文档中的文本序列组成,如 $D = {X_1 ,X_2 ,…,X_n }$ ,其中 $X_i $为一个文本(每个文本包含 w 个单词),每个文本都用一个离散的数值来标注,代表该文本所在的类别。

我们做的是新闻分类任务,因此输入是一组新闻文本,输出则应该是该新闻对应的类别,如“军事”、“政治”等。我们的目的,就是训练一个模型,使其能完成自动分类的任务。

提出方法

我们把整个训练过程分为数据预处理和训练两个阶段。下面将一一介绍。

数据预处理

本系统采用了清华NLP组提供的THUCNews新闻文本分类数据集的子集。THUCNews是根据新浪新闻RSS订阅频道2005~2011年间的历史数据筛选过滤生成,包含74万篇新闻文档(2.19 GB),均为UTF-8纯文本格式。并在的原始新浪新闻分类体系的基础上,重新整合划分出14个候选分类类别:财经、彩票、房产、股票、家居、教育、科技、社会、时尚、时政、体育、星座、游戏、娱乐。

由于本地电脑计算资源有限我们在上述14个类中,每一类随机抽取了2万条数据,有三个类别数据量不足两万,我们全部使用。每个类别的使用数据量如图1,其中一条新闻样例如图2所示。

图1 每个类别新闻数:

图2 新闻样例(时政类):

分词

由于汉语不像英语一样有空格作为分隔符,所以我们在训练之前需要把句子分成一个个的单词。目前常用的是算法是HMM、CRF、SVM、深度学习等算法,比如Stanford、Hanlp分词工具是基于CRF算法。以CRF为例,基本思路是对汉字进行标注训练,不仅考虑了词语出现的频率,还考虑上下文,具备较好的学习能力,因此其对歧义词和未登录词的识别都具有良好的效果。

本系统中采用jieba分词对数据预处理。首先使用jieba分词将所有的文章中的单词分开&#

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值