使用lucce分词怎么_深度学习时代,分词真的有必要吗
前言
中文數據集是我一直盡量避免的問題,但生活所迫,畢竟咱還是要在國內混江湖的,于是,最近開始研究研究深度學習模型在中文數據集上的各種表現, 但隨之而來的一個問題是: 我真的需要分詞嗎? 香儂科技在 ACL2019 的一篇文章中告訴了我們這個答案,不一定適用于任何數據集,但具有很強的參考價值。
文章從語言模型、機器翻譯、句子匹配和文本分類四個任務上進行對比,得出了字往往要比詞更好的結論,這也與我同學前期做的一個文本分類項目的結果相符, 詞級別的表現往往差強人意,而字往往能夠給出較好的結果。
為何詞的表現往往較差?
詞級別之所以表現差往往有幾個原因:
- 首先,數據稀疏問題以及大量的OOV詞。我們知道,在實際落地中,數據集往往并不大,考慮到數據標注本身是一個費錢,費力的工作,數據量不大的情況下, 由于詞的數量十分巨大,且還在隨時增加, 這意味著大多數中文詞出現頻率都非常小,這使得數據稀疏問題以及OOV問題十分嚴重,這極大限制了模型的學習能力。舉例來說, 在CTB數據集中,通過jieba分詞后,不同的詞有50266個, 其中24458個詞僅出現一次,占整個數據集的4.0%; 有38889個詞出現不多于四次,占數據集的10.1%, 這表明,詞級別的數據十分稀疏,這使得模型很容易過擬合,這是因為單詞越多,參數量越多。此外,由于詞的數量實在太大,維護一個巨大的詞表有點得不償失,詞越大,意味著OOV詞的急劇增加,會極大限制模型的學習能力。
- 其次, 分詞會引入噪聲。 由于分詞工具和算法的局限性,并沒有人類那么高的準確率, 這會引入一些噪聲。 最重要的是,如果你的詞向量訓練時所用分詞工具與你在模型中使用的分詞工具不同,那么這個噪聲真的大了去了, 會把你的模型效果推入深淵。
- 最后,分詞所帶來的收益并不明確。 盡管從直覺上看, ”詞“的所攜帶的信息是比”字“更豐富,這是因為詞相當程度上減輕了一詞多義的情況, 但對于神經網絡而言,會如何呢?神經網絡能否根據復雜的過程來學習到這種字與字之間的組合方式, 如果可以,我們還有必要進行分詞嗎?
但分詞真的無用嗎?并非如此,在深度學習時代之前,有研究人員就探索了分詞對于IR(信息檢索)方面的作用,并提出,如果我們在 query 和 document 端都采用同樣的分詞手段,那么分詞是很有幫助的。 但在深度學習時代,這種提升是要打一個問號的, 如果看看 SQuAD 數據集或 MS MARCO數據集的話,就可以預見,其實通過閱讀理解任務在 IR 領域的應用是能夠獲得傳統的方法更佳的表現的, 而閱讀理解任務,需要分詞嗎?這依舊回到問題的起點。
字級別也并非完美無缺
在字級別中, 一個很關鍵的問題就是一字多義, 詞一定程度上減輕了這個問題,這也是在統計時代,分詞存在的必要性。
而在深度學習時代,如果一字多義的問題能夠通過預訓練語言模型等這種高深度網絡來解決,那么我個人認為,分詞的時代或許就將完全過去。而在預訓練語言模型上的探索將是大公司如Google, 百度等在接下來幾年一個很重大的課題。 其實,從 Bert 的表現上就可見一斑,Bert 完全舍棄了分詞的過程,而是采用字為劃分的粒度, 而 Bert 的表現大家有目共睹。
實驗說明
文章從語言模型、機器翻譯、文本分類和句子匹配四個方面來評估分詞在深度學習的意義。
在語言模型任務中,同維度下,字級別的模型要顯著優于詞級別的模型。 而如果采用 "字+詞" 的模型,效果反而不如字級別的模型,但優于詞級別的模型,這表明字級別的模型其實已經編碼了語言模型任務所需的語言信息,加入詞級別反而會損害表現。
在機器翻譯任務中,依舊是字級別 > 字+詞級別 > 詞級別。
在句子匹配任務中,字級別的表現依舊顯著優于詞級別的表現。
在分類任務中,值得一提的是在 ChinaNews數據集上,詞級別的表現略高于字級別的表現,且其余數據集效果相差也沒有上述任務那么大,文章并沒有給出解釋, 我個人認為這是因為分類問題更依賴于 n-grams 信息的原因。
最后
這篇文章通篇就告訴了我們一點: 字級別在大多數情況下要優于詞級別。但我更想從最新的預訓練語言模型來看,如果說預訓練語言模型能夠解決一字多義問題, 那么分詞真的是毫無必要了, 接下來或許就是探索如何融入先驗知識如成語,歇后語,詩句等信息了。
Reference
[1] Is Word Segmentation Necessary for Deep Learning of Chinese Representations?
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的使用lucce分词怎么_深度学习时代,分词真的有必要吗的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java类加载器_JAVA类加载器
- 下一篇: 指针变量和引用变量的区别_指针Ⅰ--变量