人工智能專欄推薦
專欄
深度學習PyTorch極簡入門
26.6幣
162人已購
人工智能學習圈
71成員
專欄
每天五分鐘快速玩轉深度學習算法
26.6幣
607人已購
介紹
在語言中,一個單詞是有詞性的,比如動詞、形容詞、名詞等等,我們可以使用LSTM來做詞性的判斷。做詞性判斷可以有兩種方式:
第一種是把一句話當作是一個序列數據,然後這句話中的每個詞都是一個詞向量,對應RNN的一個時間步,我們將其輸入到神經網絡中,然後每一個時間步都會有一個輸出,每個輸出表示輸入到該時間步的單詞的詞性。
還有一種方式就是將詞拆分成一個一個的字母,每個時間步輸入到RNN中一個字母向量,然後在最後一個時間步輸出這個單詞的詞性是什麼
我們可以將這兩種方式來結合起來,完成整個詞性的判斷
數據處理
以上就是我們的訓練數據,DET、NN表示每個單詞的詞性,我們可以認為是對應詞的標籤
現在我們來生成字典,第一個字典是詞的字典word_to_idx,第二個字典是標籤的字典tag_to_idx
然後還要生成一個包含26個字母的字典
下面我們建立一個方法,這個方法就是當我們傳入這個方法中字母或者單詞的時候,就可以產生對應字典中的編號,就相當於對字符進行編碼了。我們要將這個編碼好的輸入到神經網絡中。
網絡模型的搭建
現在我們建立神經網絡,第一個神經網絡是每一個時間步輸入為一個單詞的字母,我們最後要最後一個時間步的輸出
x.shape為[4,1,10],其中4表示序列是4,1表示batch為1,10表示詞向量為10,out[-1]表示獲取最後一個時間步的輸出
其中參數n_word表示字典中詞的數量,n_char表示字母字典中詞的數量,char_dim表示字母向量的維度,word_dim表示詞向量的維度,char_hidden表示char的LSTM的輸出維度,word_hidden表示word的LSTM的輸出維度,n_tag表示詞性的類別。
這個神經網絡的運行過程就是先進行字母預測,也就是將一句話中的每個單詞進行字母預測,然後進行單詞級別的預測,然後將這兩者的預測輸出cat組合,然後輸入到全連接神經網絡中,然後做最終的預測
然後進行測試