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