當前位置:編程學習大全網 - 腳本源碼 - 白話自然語言處理(2)——文本分類

白話自然語言處理(2)——文本分類

話說兩年前我壹臉蒙圈地開始了自己文本挖掘的職業生涯,領導給我的第壹個任務就是文本分類任務。小夥伴手把手教我怎麽來做壹個三分類任務,上手還挺快,正能量爆炸,原來這就自然語言處理,也沒有那麽復雜嗎?無知者無畏。

自然語言處理博大精深,越到細節處越是難,壹不小心就從入門到放棄了。壹個好的新手任務是入門到深入的前提,而文本分類任務就是壹個很不錯的選擇,保準給妳打滿雞血,至於能不能堅持到最後?就暫時不是我們關心的問題。萬事開頭難,好的開頭有好結尾的概率會高壹點。不啰嗦,回歸正題開始胡說八道。

分類大家都知道吧?我且大膽地嘗試下個定義,把事物按某特性劃分為幾種類別。

生活處處是分類,前段時間上海風風火火地垃圾分類,就算壹種!按照垃圾的材質/是否可回收分類。垃圾分類出來沒多久,有聰明的小夥伴就說我們是不是可以搞壹個垃圾分類的模型,商機無限,我感嘆小夥伴這頭腦該去做ceo啊,也沒有太在意。不過沒多久市面上就有各種垃圾分類應用湧現,感覺錯過壹個億的商機。

上學的時候,對分類的認識是不夠的,覺得搞這麽多分類幹啥,有啥用啊。那時候文小剛大佬組裏的文章喜歡各種分類,奈何智商有限,每次都雲裏霧裏,大佬的世界我不懂。後來做了文本分類任務,才漸漸去想想為什麽要分類?我想最簡單的,分類意味著對事物認知,可以定位到更細的類別,可以進行篩選;分得越細,說明我們研究的越清楚,最終 …(原諒我淺薄的認知,故事編不下去了)

知道了分類也理解了分類的重要,再談文本分類就簡單了。所謂文本分類,說句廢話,就是對文本按照某種特性進行分類。比如情感分類,按照文本的情感極性進行分類;還有最近在聊天機器人中使用到的,情緒分類,把文本分為開心、憤怒、失望…balabala;垃圾文本分類,識別文本是否為垃圾… 還有壹些有意思的分類任務,比如去檢測壹句話的性別偏向,文本是否口語化的 … 都是我腦補的,大家也可以想想有哪些有意思的文本分類任務

從應用的層面來說,做文本分類,妳首先要知道妳的目標是什麽,要構建壹個什麽樣的分類模型?最好是梳理壹套明確的分類標準,這樣我們就可以去獲取數據。或用規則或用人肉,都是可行的。有了數據集合,就可以嘗試各種分類模型,可繁可簡,可騷可悶… (當然妳最終會認識到,模型並不是越復雜越好,簡簡單單或許才是最好的!)

此處假設我們已經明確了要做的分類任務,也有了壹部分數據集。那麽我們就可以說道說道文本分類的方法了,從簡單到高大上的都可以吹壹吹(反正吹牛逼又不用上稅,說錯了最多被打臉!我臉厚不怕)。

大家玩垃圾郵件識別任務的時候,可能會學到樸素貝葉斯吧,簡單來說通過判斷每個詞在垃圾郵件中出現的概率,最終判斷出整個文本是否為垃圾郵件。這時候大家會被反復灌輸貝葉斯公式,壹聽名字覺得高大上,很多同學可能被嚇退,但是當妳真的寫出來並理解之,簡單優美大方!(數學果然是不是我這種屌絲氣質的人可以搞的。)

不過樸素貝葉斯方法也太簡單了,要滿足條件獨立假設,表現往往壹般。這時我們可以上其他常規武器了,比如決策樹,決策樹的算法邏輯非常有意思,符合人們做決斷的邏輯!通過逐壹判斷特征是否滿足某些條件,來對文本進行分類。

如果妳覺得壹棵樹妥妥不足決斷,就可以上集成方法。所謂集成方法,就是單兵作戰不行,那我們就群毆啊,總有壹種辦法來幹死妳。集成方法可以分為兩類,壹類是bagging方法,就是分別用幾顆樹單獨來做決策,然後把它們的結果組合起來,隨機森林就是其中壹種;另壹類是boosting方法,大概是壹棵樹決策有誤差,那我再用壹顆樹來學習誤差,如果不行我再來…有沒有想到某公子子孫孫無窮盡也,當然我們作為凡人…

其他常規算法還有SVM(校招面試算法工程師感覺不會SVM都不好意思說自己懂機器學習),邏輯回歸, 感知機 …

常規武器說完,那開始高級武器吧——蛇精網絡。不過先慢慢鋪墊壹下,從我開始準備找工作的時候,深度學習就已經復蘇,開始大紅大紫,到處都是蛇精網絡,深度學習.. 當年nature還是science出了幾篇使用蛇精網絡做強聯量的,感覺整個物理圈子都躁動了,不過大佬們還是比較理性的指出蛇精網絡沒發總結出基本的物理定律。我們不是大佬,只興奮滴看到這次飯碗終於有著落了。

個人覺得文本分類最好用的蛇精網絡算法是fasttetxt,模型簡單效率,準確率也不錯,是眾屌絲的理想選擇。模型可以快速訓練和上線應用,分分鐘報告領導任務已經完成,請做下壹步指示。不過fasttext雖然好,有壹個問題啊,妳不好吹牛逼啊,到年終匯報,妳和各位大佬說我用fasttext完成某某任務,妳很大概率和升職加薪絕緣(開個玩笑)。

我們不僅要fasttext來兜底,我們還需要TextCNN(卷積來學習局部的n-gram特征)、RNN(文本就是序列)、遷移學習(雖然任務不壹樣,但是有***性,所以可以遷移。壹般壹個神經網絡越淺層的網絡越通用。預訓練什麽的也可以認為是在遷移,最近大紅大紫的BERT、GPT...)、主動學習(少樣本的時候是壹個不錯的選擇,當年我吹過牛逼,主動學習可以幫助我們自動標註出壹些沒有標註但是置信度高的數據,這壹批數據會包含更多的數據,可以逐漸擴展模型的能力)...

算法說多了容易飄,我們回到實際應用,那麽有哪些文本的任務呢?其實前面已經說過了,再重復壹下

當年壹不小心入了文本分類的坑,剛開始沾沾自喜,覺得還挺好玩,後來分類任務越來越復雜,有點招架不住了。做人要低調 ...

分類任務幾個要註意的問題,妳的數據不足的時候該怎麽辦?有幾個選擇使用簡單模型、遷移學習,主動學習,文本數據增強(不過文本的增強沒有圖片效果好;有通過多語種翻譯來獲得文本增強的,挺好玩)。模型怎麽選擇?我們前面介紹了很多方法,最終使用什麽模型呢?其實最終綜合效果+資源,效果好可能耗資源,我們在實際應用的時候,對誤差是有忍耐程度的,不壹定要十全十美,千萬不要強迫癥。有聰明的小夥伴,理解數據能幫助我們更好地選擇模型。其他問題還有但不限於類別數據分布不均、煉丹調參指南 ...

文本分類嘮叨到此,希望大家不要被誤導。

/u014248127/article/details/80774668

  • 上一篇:電視劇 大聲呼喊妳回來 主題曲叫什麽?不是沙寶亮唱的那個
  • 下一篇:QQ炫舞裏怎麽才能做情侶
  • copyright 2024編程學習大全網