原來CNN也能運用於NLP中
當提及CNN一般普遍都會直覺聯想到在電腦視覺方面的應用。 而近幾年CNN也踏入自然語言處理,也有相當好的成績。 https://www.analyticsvidhya.com/blog/2022/03/basics-of-cnn-in-deep-learning/ 通常CNN要處裡應用於NLP的任務,往往需要以矩陣形式表達句子或文本。 (PS:因為CNN你要餵進去的格式要是矩陣) 矩陣中每一行對應一個分詞元素,通常會是一個單詞或是一個字符。 換言之,每一行都是一個詞或者字符的向量(比方word2vec) 假設共有10個詞,每個詞都用128維的vector表示,那就可得到一個10*128維度的矩陣。 如此一來這個矩陣就有點像是一幅影像。 Embedding層:一個7x5的矩陣,其中每row(橫列)是一個單詞的向量,即詞向量,詞向量的維度為5。(這邊用比較低的維度for好舉利用,通常可能用到128,256就會有128或256直行。) Convolution層:這里是一維卷積,卷積核寬度固定:即為詞向量維度(都是5個直行),卷積核的高度即一個窗口中包含的單詞的個數,這里的kernel_size=(2,3,4)即為一個窗口中分別可以包含2,3,4個單詞。然後每個kernel_size輸出2個通道,實際上是每類(包含單詞個數)卷積核的個數為2而已,再將卷積輸出的結果經過激活函數輸出 MaxPooling層(池化):每類卷積核輸出兩個通道,然後再取各個通道結果的最大值(MaxPooling),於是就得到了6個值。 FullConnection層:將MaxPooling層的輸出結果進行拼接構成一個全連接層的輸入,然後再根據分類類別數接上一個softmax層就可以得到分類結果了。 Ref: CNN在NLP的应用--文本分类 https://yxzf.github.io/2017/03/cnn-for-nlp-in-sentence-classification/ Convolutional Neural Network in Natural Language Processing https://towardsdatascience.com/convolutional-neural-network-in-natural-language-processing-96d67f912