0 小系列初衷
自己接觸的項目大都是初創,沒開始多久的項目,從0到1的不少,2020年快結束,感覺這個具有一定個人特色的技術經驗可以在和大家分享一下。
計劃篇章:
(已完成)文本分類篇。針對NLP文本分類任務。
序列標注(NER)篇。針對命名實體識別、序列標注任務。
文本匹配篇。針對語義相似度計算、向量匹配等問題。
人工特征學習篇。針對多特征的機器、深度學習方案。
1 序列標注的場景
文本分類是對整個句子的把握,而NER就是深入到句子內部,對句子的局部進行深入分析,這個粒度的分析往往更為精準詳盡,當然難度也會更高,下面列舉幾個比較常見的場景:
搜索、對話的實體、關系抽取。
搜索的關鍵詞抽取,詞權重問題。
糾錯的錯誤檢測。
總而言之,只要是抽取局部信息,那其實就可以抽象為序列標注了。
嚴謹起見,來個專業點的定義吧:
給定一個序列(含特征),預測一組和序列一一對應的結果,這種預測就是序列標注。
2 方案選型——通用方法
之所以把序列標注放一起,是因為問題類似,既然問題類似,那其實就可以找到通式通法來解決,所以先給大家說一些比較通用的方法。大家也把序列標注問題帶入來分析計算,其實很多的解法很類似。
2.1 非模型操作
常見的兩個非模型操作,直接通過規則或者詞典的模式:
通過配置句式,用正則表達式的方式來抽取。
運用詞典,用最大逆向匹配來完成。之前寫過文章:NLP.TM[29] | ner自動化打標方法
當然了這種非模型操作的優缺點點也是很明顯,之前也聊過不少了:
優點:
高準確。
方便快捷。
缺點:
召回低,泛化能力弱。
2.2 模型操作
模型往往是泛化能力較強的,規則和模板無法滿足召回的情況下,我們就需要模型來處理了。序列標注需要對序列依賴要求很高,所以比較推薦大家用抽取序列特征的模型來處理。
HMM、CRF。序列標注的經典操作,有關CRF,我之前還寫過長文討論過:NLP.TM[19] | 條件隨機場知識整理(超長文!)。
BiLSTM-CRF,之前也提到過,能上深度的情況下,這個的基線效果還是比較強的。NLP.TM | 命名實體識別基線 BiLSTM+CRF(上),NLP.TM | 命名實體識別基線 BiLSTM+CRF(下)
Bert-CRF。超級大的模型,整體效果是還不錯的。
和上次一樣,也是介紹3個,只要數據質量足夠好,準招七八十是沒什么大問題的,如果效果不好,往往是因為數據之類的原因導致的,此時我們該做的就是精煉數據集,只有足夠數量和質量的數據,模型的效果才會好。
而相比文本分類任務,NER的樣本往往更加難得,但是小樣本還是可以通過人工標注、挖掘等方式獲取,然后通過數據增強的方式來拓展出更多有代表性的query。
當然了,序列標注是一個很廣義的問題,有一些特異的任務需要有特異的方法。
2.3 關鍵詞抽取
有關關鍵詞抽取,其實我在原來的文章就講過,文章在這里:NLP.TM[20] | 詞權重問題,這里可以考慮這幾個方案:
預訓練的IDF詞典,例如jieba的。
很多關鍵詞抽取的任務都有場景特色,jieba那種通用的不適合,根據自己的數據自己訓一個,可能是最簡單的,自己手寫也不太累的模型訓練了。
如果數據和特征夠多,學美團的方案(前沿重器[2] | 美團搜索理解和召回)自己訓一個機器學習模型或者用深度學習整一個關鍵詞抽取的序列標注模型。
2.4 糾錯的錯誤檢測
在現在比較前沿的技術里,糾錯其實已經是一整個完整的模塊,被拆分為錯誤檢測、候選召回、召回排序三步,其中的錯誤檢測就是為了找到句子中可能出錯的部分,這里其實就可以抽象為序列標注問題,當然用模型的方式來處理肯定是可以的,不過這同樣需要大量的標注數據才能解決,相比之下,獲取一批正常的語料還是很簡單的,這些預料可以訓練語言模型,通過語言模型來判斷句子中是否存在通順程度異常的位點,這塊詳情大家可以看看我之前的文章,尤其是第一篇。
NLP.TM[33] | 糾錯:pycorrector的錯誤檢測
NLP.TM[34] | 糾錯:pycorrector的候選召回
NLP.TM[35] | 糾錯:pycorrector的候選排序
NLP.TM[37] | 深入討論糾錯系統
3 效果調優
有關效果調優,上面其實多多少少聊了很多,這里簡單總結一下吧。
無監督方案還是要多用,畢竟有監督方法需要足量,無論是數量還是質量,的數據。
如果實在需要有監督模型,但受限于數據,可以通過數據增強的方式挖掘到一批質量還行的數據。NLP.TM[32] | 淺談文本增強技術
從關鍵詞抽取和糾錯的錯誤檢測中其實可以看到,解決序列標注的思路還是很豐富的,大家要注意多積累。
4 其他想說的
在這次總結里,一方面是仍然強烈感受到對方案和數據把控的重要性,尤其在序列標注這個問題下,足量的標注數據是模型使用的先決條件,因此對數據的管理和優化非常重要。另外,序列標注需要對句子中的每個字/詞都要標注,這個標注數據是真的不好拿,因此需要我們對無監督、非模型的方法也有足夠的了解,如果排期足夠,這種無監督非模型的方案是可以作為有監督模型數據的標注的,沒有時間,無監督非模型的方法也可以作為基線直接上線,這個也很好。最后一點事,我感覺我對前沿方案的把控還需要提升,這一輪輸出完成后,我可能要開始對前沿方案重新調研升級,從而升級自己的武器庫。
責任編輯:xj
原文標題:任務方案思考:序列標注(NER)篇
文章出處:【微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
-
序列
+關注
關注
0文章
70瀏覽量
19555 -
自然語言處理
+關注
關注
1文章
618瀏覽量
13553 -
nlp
+關注
關注
1文章
488瀏覽量
22033
原文標題:任務方案思考:序列標注(NER)篇
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論