上個月看知乎的時候,復旦大學邱教授發布的一個NLP初學者入門項目,包括NLP四大任務類型:分類、序列標注、文本匹配、文本生成。
https://github.com/FudanNLP/nlp-beginner
當時看了一下,發現似乎有點難,需要從numpy開始造輪子,然后慢慢轉到深度學習,每個項目大概兩周時間。剛好我的課程已經結束了,接下來要做的就是文獻綜述和編程學習。自己的編碼能力依舊不行,所以還是從頭再來一遍吧。
一共五個項目,對應的是《神經網絡與深度學習》這本書,里面有ppt和相應的練習資源。涉及到的章節主要是2、3、6、7、11、15。我會閱讀章節內容,完成課后習題,閱讀參考論文,然后實現相應任務,看起來好頭疼啊……
目前來看,唯一走對的路就是選擇了pytorch……
六月份希望能夠完成前三個任務……
任務說明頁內容(https://github.com/FudanNLP/nlp-beginner)
任務一:基于機器學習的文本分類
實現基于logistic/softmax regression的文本分類
-
參考
數據集:Classify the sentiment of sentences from the Rotten Tomatoes dataset
實現要求:NumPy
-
需要了解的知識點:
- 文本特征表示:Bag-of-Word,N-gram
- 分類器:logistic/softmax regression,損失函數、(隨機)梯度下降、特征選擇
- 數據集:訓練集/驗證集/測試集的劃分
-
實驗:
- 分析不同的特征、損失函數、學習率對最終分類性能的影響
- shuffle 、batch、mini-batch
時間:兩周
任務二:基于深度學習的文本分類
熟悉Pytorch,用Pytorch重寫《任務一》,實現CNN、RNN的文本分類;
-
參考
- https://pytorch.org/
- Convolutional Neural Networks for Sentence Classification https://arxiv.org/abs/1408.5882
- https://machinelearningmastery.com/sequence-classification-lstm-recurrent-neural-networks-python-keras/
word embedding 的方式初始化
隨機embedding的初始化方式
用glove 預訓練的embedding進行初始化 https://nlp.stanford.edu/projects/glove/
-
知識點:
- CNN/RNN的特征抽取
- 詞嵌入
- Dropout
時間:兩周
任務三:基于注意力機制的文本匹配
輸入兩個句子判斷,判斷它們之間的關系。參考ESIM(可以只用LSTM,忽略Tree-LSTM),用雙向的注意力機制實現。
- 參考
- 《神經網絡與深度學習》 第7章
- Reasoning about Entailment with Neural Attention https://arxiv.org/pdf/1509.06664v1.pdf
- Enhanced LSTM for Natural Language Inference https://arxiv.org/pdf/1609.06038v3.pdf
- 數據集:https://nlp.stanford.edu/projects/snli/
- 實現要求:Pytorch
- 知識點:
- 注意力機制
- token2token attetnion
- 時間:兩周
任務四:基于LSTM+CRF的序列標注
用LSTM+CRF來訓練序列標注模型:以Named Entity Recognition為例。
- 參考
- 數據集:CONLL 2003,https://www.clips.uantwerpen.be/conll2003/ner/
- 實現要求:Pytorch
- 知識點:
- 評價指標:precision、recall、F1
- 無向圖模型、CRF
- 時間:兩周
任務五:基于神經網絡的語言模型
用LSTM、GRU來訓練字符級的語言模型,計算困惑度
- 參考
- 《神經網絡與深度學習》 第6、15章
- 數據集:poetryFromTang.txt
- 實現要求:Pytorch
- 知識點:
- 語言模型:困惑度等
- 文本生成
- 時間:兩周