現如今,深度學習方法成了解決nlp任務的首選方案,比如textCNN、LSTM、GRU、BiLSTM、Attention、BERT等等。當然,有的nlp任務也可以用機器學習方法去解決,至於哪種任務用哪種方法,需要我們根據實際情況去選擇。就目前我接觸到的nlp賽題任務有,文本分類、情感分析、關系抽取、文本匹配、閱讀理解、問答系統等等,比如針對文本二分類任務,我們可以把CNN、LSTM、Attention進行各種排列組合來搭建網絡,也可以用BERT直接預測,或者使用機器學習方法,訓練出TF-IDF,然后使用lr去預測,甚至還可以使用一些騷操作,在搭建好的深度學習網絡上,加入各種文本特征,構成一個多輸入的網絡結構。因此,解決一個nlp的任務可能有多種方案,但是哪一個方案更合適需要我們不斷地去分析嘗試。
當我們拿到一個nlp賽題任務時,首先我們需要對賽題任務和給出的數據進行細致地分析,了解賽題任務具體是干什么的,並且要深入地分析理解數據,知道數據的含義,這樣可以有助於我們制定解決方案,同時也有利於我們進行數據預處理,比如我們分析知道數據中包含很多鏈接、#...#標簽和@人名這些信息,那么我們就該去考慮這些信息對於我們解決該任務是否有用,如果沒用是否該刪除這些信息,又比如我們分析知道一條樣本中的主要信息在前100個詞中,那么我們進行pad_sequences操作時,是否該考慮使截斷補齊后的文本長度為100等等,這些都需要我們對數據進行深入地分析后才能知道。然后我們需要去預處理數據,我個人認為這一步和前面的數據分析關系很強,很多預處理操作都是基於對數據的分析而來,一般我們對文本預處理包含分詞、去除停用詞、訓練詞向量、文本序列化等等,當然,對於有的任務還包含同義詞替換、訓練詞權重等等。再接着就是搭建模型,具體使用什么模型得根據具體任務來定。最后就是優化模型,常用的操作有調參、更改網絡結構、針對評價指標優化等等