深度学习|中文文本的分类(处理篇)

前言

之前我们通过朴素贝叶斯方法,做过英文文档的分类(传送门)。那使用中文文本,如何使用深度学习方法来进行分类了?这就是本文所讲的。首先我们来看看中文文本和英文文本的不同。
在处理英文文本时,我们使用的是TF-IDF方法,该方法当然也可以使用在中文文本中,但是我们都知道,中文的分词不像英文那样,每个词都是通过空格分开的,中文我们通过jieba来进行分词。

数据处理

我们数据来源于王老师的一篇文章的数据,是某商品的评价信息。我们处理的大概流程如下:

  • 数据情况
  • 中文文本分词
  • 建立token
  • token转换为列表
  • 统一长度

具体步骤见下。

数据情况

首先我们通过pandas读取我们的数据。数据就是评论文本和评论的情绪分类(0位消极,1位积极)。

import pandas as pd
data = pd.read_csv('dianping.csv')
data.head()
文本分词

这里我们使用jieba对数据进行分词。

import jieba

data['text'] = data.comment.apply(lambda x: " ".join(jieba.cut(x)))

我们保留text和sentiment即可。

建立token

文本数据电脑是没法识别的,电脑只知道数字信息,所以接下来我们就要把文本数据转换为数字,有很多方法,之前的TF-IDF就是其中一种方法。我们这次换一种方法:我们按照分词出现的次数排序建立字典,也就是所谓的token,我们通过keras来实现。

from keras.preprocessing.text import Tokenizer
from keras.preprocessing.sequence import pad_sequences
import numpy as np

tokenizer = Tokenizer(num_words=10000)
tokenizer.fit_on_texts(data.text)
tokenizer.word_index
转换为列表

接下来我们将其转换为列表,这样就是数字信息了。

sequences = tokenizer.texts_to_sequences(data.text)
统一长度

我们都知道,评论的长度不一样,数据也就不一样,我们截长补短。

seq = pad_sequences(sequences, maxlen=100)

划分数据集

最后,我们划分数据集,整个的处理过程也就结束了。

X = seq
Y = data['sentiment']

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.2, random_state=33)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • jieba分词,学习,为了全面了解该模块,,预设学习路线:官方文档——优秀博客文章——实践学习 官方文档部分 (文...
    竹林徒儿阅读 4,320评论 1 12
  • 1 文本分类 文本分类是自然语言处理领域最活跃的研究方向之一,目前文本分类在工业界的应用场景非常普遍,从新闻的分类...
    高永峰_GYF阅读 28,415评论 4 21
  • 常用概念: 自然语言处理(NLP) 数据挖掘 推荐算法 用户画像 知识图谱 信息检索 文本分类 常用技术: 词级别...
    御风之星阅读 9,357评论 1 25
  • 1.文本分类 转眼学生生涯就结束了,在家待就业期间正好有一段空闲期,可以对曾经感兴趣的一些知识点进行总结。 本文介...
    流川枫AI阅读 35,777评论 23 76
  • 系列文章综述 这个系列会包含两部分与金融数据处理有关的文章,第一部分分析数据,第二部分从已经分析的数据中进行信息提...
    吕不韦阅读 11,216评论 0 9