CNN用於文本分類本就是一個不完美的解決方案,因為CNN要求輸入都是一定長度的,而對於文本分類問題,文本序列是不定長的,RNN可以完美解決序列不定長問題,
因為RNN不要求輸入是一定長度的。那么對於CNN用於解決文本分類問題而言,可以判斷文本的長度范圍,例如如果大多數文本長度在100以下,極少數在100以上,那就
可以設定文本長度是100,不足100的文本用padding補齊,多於100的文本則截斷。具體過程如下圖:
首先把分詞之后的句子按照設定的維度展開,這里維度是9,每個單詞都會有一個向量表達,維度是6(word embedding),然后用一個一維卷積核(也可以是多個)對其進行卷積操作,注意,單詞的Embedding的長度就是原始輸入的通道數,也就是卷積核的通道數;卷積操作之后,再對其進行Pooling操作,有max-pool和average-pool操作兩種,注意,這里是對時間維度,也就是句子序列上做Pooling;最后再輸入到一個全連接神經網絡中,得到分類結果。
CNN和RNN用於解決文本分類問題的對比:
-
- CNN不能完美解決序列式問題
- CNN卷積相當於N-gram(使用一定長度的卷積核),LSTM可以提取更長的依賴
- 雙向RNN會增強效果
- CNN模型並行程度高,更快