假期還有兩周左右就結束了,正巧,聯合天池發布了零基礎入門NLP的學習,于是報名參加了零基礎入門NLP-新聞文本分類。 本人之前剛接觸NLP沒多久,記錄一下學習的歷程,供和我一樣的小白參考~ 一、賽題數據
賽題數據為新聞文本,并按照字符級別進行匿名處理。整合劃分出14個候選分類類別:財經、彩票、房產、股票、家居、教育、科技、社會、時尚、時政、體育、星座、游戲、娛樂的文本數據。
賽題數據由以下幾個部分構成:訓練集20w條樣本,測試集A包括5w條樣本,測試集B包括5w條樣本。如下:
在數據集中標簽的對應的關系如下:
{'科技': 0, '股票': 1, '體育': 2, '娛樂': 3, '時政': 4, '社會': 5, '教育': 6, '財經': 7, '家居': 8, '游戲': 9, '房產': 10, '時尚': 11, '彩票': 12, '星座': 13}
先用numpy里的看一下數據情況:
二、評測標準
評價標準為類別的均值,選手提交結果與實際測試集的類別進行對比,結果越大越好。
可以通過完成計算:
from sklearn.metrics import f1_score
y_true = [0, 1, 2, 0, 1, 2]
y_pred = [0, 2, 1, 0, 0, 1]

f1_score(y_true, y_pred, average='macro')
三、解題思路 1、思路一:TF-IDF+機器學習分類器 什么是TF-IDF?
TF-IDF(term – )是一種用于信息檢索與數據挖掘的常用加權技術,常用于挖掘文章中的關鍵詞,而且算法簡單高效,常被工業用于最開始的文本數據清洗。
TF-IDF有兩層意思,一層是"詞頻"(Term ,縮寫為TF),另一層是"逆文檔頻率"( ,縮寫為IDF)。
當有TF(詞頻)和IDF(逆文檔頻率)后,將這兩個詞相乘,就能得到一個詞的TF-IDF的值。某個詞在文章中的TF-IDF越大,那么一般而言這個詞在這篇文章的重要性會越高,所以通過計算文章中各個詞的TF-IDF,由大到小排序,排在最前面的幾個詞,就是該文章的關鍵詞。
TF-IDF算法步驟
第一步,計算詞頻:
考慮到文章有長短之分,為了便于不同文章的比較,進行"詞頻"標準化。
第二步,計算逆文檔頻率:
這時,需要一個語料庫(),用來模擬語言的使用環境。
如果一個詞越常見,那么分母就越大,逆文檔頻率就越小越接近0。分母之所以要加1短文本分類算法優化,是為了避免分母為0(即所有文檔都不包含該詞)。log表示對得到的值取對數。
第三步,計算TF-IDF:
可以看到,TF-IDF與一個詞在文檔中的出現次數成正比,與該詞在整個語言中的出現次數成反比。所以,自動提取關鍵詞的算法就很清楚了,就是計算出文檔的每個詞的TF-IDF值,然后按降序排列,取排在最前面的幾個詞。
優缺點
TF-IDF的優點是簡單快速,而且容易理解。缺點是有時候用詞頻來衡量文章中的一個詞的重要性不夠全面,有時候重要的詞出現的可能不夠多,而且這種計算無法體現位置信息,無法體現詞在上下文的重要性。如果要體現詞的上下文結構,那么你可能需要使用算法來支持。
2、思路二: 的核心思想
將整篇文檔的詞及n-gram向量疊加平均得到文檔向量,然后使用文檔向量做多分類。這中間涉及到兩個技巧:字符級N-gram特征的引入以及分層分類。
字符級N-gram特征
N-gram是基于語言模型的算法,基本思想是將文本內容按照子節順序進行大小為N的窗口滑動操作,最終形成窗口為N的字節片段序列。
舉個例子:
我來到達觀數據參觀
相應的特征為:我來 來到 到達 達觀 觀數 數據 據參 參觀
相應的特征為:我來到 來到達 到達觀 達觀數 觀數據 數據參 據參觀
注意一點:n-gram中的gram根據粒度不同,有不同的含義。它可以是字粒度,也可以是詞粒度的。上面所舉的例子屬于字粒度的n-gram,詞粒度的n-gram看下面例子:
我 來到 達觀數據 參觀
相應的特征為:我/來到 來到/達觀數據 達觀數據/參觀
相應的特征為:我/來到/達觀數據 來到/達觀數據/參觀
n-gram產生的特征只是作為文本特征的候選集,你后面可能會采用信息熵、卡方統計、IDF等文本特征選擇方式篩選出比較重要特征。
分層分類
函數常在神經網絡輸出層充當激活函數,目的就是將輸出層的值歸一化到0-1區間,將神經元輸出構造成概率分布,主要就是起到將神經元輸出值進行歸一化的作用。
下圖是一個分層示例:
通過分層的,計算復雜度一下從|K|降低到log|K|。
3、思路三:+深度學習分類器
,是一群用來產生詞向量的相關模型。這些模型為淺而雙層的神經網絡,用來訓練以重新建構語言學之詞文本。網絡以詞表現,并且需猜測相鄰位置的輸入詞,在中詞袋模型假設下,詞的順序是不重要的。訓練完成之后,模型可用來映射每個詞到一個向量,可用來表示詞對詞之間的關系,該向量為神經網絡之隱藏層。【百度百科】
是 Word 的方法之一。他是 2013 年由谷歌的 提出了一套新的詞嵌入方法。
優化方法
為了提高速度, 經常采用 2 種加速方式:
1、 (負采樣)
2、
優缺點
優點:
1、由于 會考慮上下文,跟之前的 方法相比,效果要更好(但不如 18 年之后的方法)
2、比之前的 方 法維度更少,所以速度更快
3、通用性很強,可以用在各種 NLP 任務中
缺點:
1、由于詞和向量是一對一的關系,所以多義詞的問題無法解決。
2、 是一種靜態的方式,雖然通用性強短文本分類算法優化,但是無法針對特定任務做動態優化
4、思路四:Bert詞向量
BERT( from )詞向量模型,2018年10月在《BERT: Pre- of Deep for 》這篇論文中被提出,在11種不同nlp測試中創出最佳成績,包括將glue基準推至80.4%(絕對改進7.6%),準確度達到86.7% (絕對改進率5.6%)等。
特征
1、通過聯合調節所有層中的左右上下文來預訓練深度雙向表示
2、the first fine- based model that state-of-the-art on a large suite of -level and token-level tasks, many with task-
3、所需計算量非常大。Jacob 說:「 的 有 12 層、768 個隱藏單元,他們使用 8 塊 P100 在 8 億詞量的數據集上訓練 40 個 Epoch 需要一個月,而 BERT-Large 模型有 24 層、2014 個隱藏單元,它們在有 33 億詞量的數據集上需要訓練 40 個 Epoch,因此在 8 塊 P100 上可能需要 1 年?16 Cloud TPU 已經是非常大的計算力了。
4、預訓練的BERT表示可以通過一個額外的輸出層進行微調,適用于廣泛任務的state-of-the-art模型的構建,比如問答任務和語言推理,無需針對具體任務做大幅架構修改。
5、一詞多義問題
四、學習和實踐路徑參考資料
1、復旦大學邱錫鵬組實驗室新生一般完成的五個NLP練習上手實驗(NLP四大類任務:分類、序列標注、文本匹配、文本生成,都需要完整實現一遍)。
2自動化所宗成慶研究員:讀懂NLP的過去與現在(梳理的非常好,把各個概念之間的關系和NLP的發展都梳理清楚了)
3、中文自然語言處理入門實戰
4、自然語言處理全家福:縱覽當前NLP中的任務、數據、模型與論文
5、中文信息處理發展報告(綜述由中文信息學會統籌,國內各大NLP專家撰寫,非常適合入門了解NLP)
6、 NLP : A of [ ]
7、 : A
8、A of the of
9、鄧力和劉洋大神合著的圖書《Deep in 》
10、宗成慶研究員所著《統計自然語言處理》(經典之作)
11、 Bird所著《自然語言處理》(快速掌握開發nlp技術的各種能力)
12、機器學習 → 推薦周志華教授所著的《機器學習》
13、深度學習 → 推薦Ian 等人合著的《Deep 》
14、開發框架 → 首推,推薦陳云的《深度學習框架入門與實踐》或者廖星宇的《深度學習入門之》
15、學習 → 推薦黃文堅、唐源的《實戰》