深度學習|中文文本的分類(處理篇)

前言

之前我們通過樸素貝葉斯方法,做過英文文檔的分類(傳送門)。那使用中文文本,如何使用深度學習方法來進行分類了?這就是本文所講的。首先我們來看看中文文本和英文文本的不同。
在處理英文文本時,我們使用的是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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章