美文网首页大数据 爬虫Python AI Sql机器学习与数据挖掘
深度学习|中文文本的分类(处理篇)

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

作者: 罗罗攀 | 来源:发表于2019-01-27 21:25 被阅读17次

    前言

    之前我们通过朴素贝叶斯方法,做过英文文档的分类(传送门)。那使用中文文本,如何使用深度学习方法来进行分类了?这就是本文所讲的。首先我们来看看中文文本和英文文本的不同。
    在处理英文文本时,我们使用的是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)
    

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/rmgjjqtx.html