Kaggle比賽教你最快速度入門文本分類
本篇文章是自然語言處理系列的第一篇,介紹最基本的文本分類問題解決方案:Logistic Regression、TF-IDF。數據集使用的是Kaggle競賽中的Toxic評論分類挑戰賽。
文本分類的基本流程:
讀取數據
清洗數據
特徵提取
模型訓練
模型評估
讀取數據
Kaggle競賽的數據一般有train、test和sample_submission,我們用pandas來讀取需要的數據。
labels是我們需要將文本分為的六個類別。
清洗數據
機器學習工作中廣為流傳的一句話:「數據決定機器學習的上限,演算法讓我們不斷逼近這個上限」。
一個乾淨的數據集是我們在運用機器學習演算法取得成功的關鍵,因此,對文本進行合適的處理是非常關鍵的一步。
以下是我在清洗文本過程中主要完成的工作:
把你的文章分成一個個單獨的單詞。
將所有字元轉換為小寫。
刪除所有不相關的字元,例如任何非字母、數字字元。
恢復所有簡寫形式的單詞
考慮將「@$&」等字元轉換為「at,dollar,and」。
最後,有很多單詞是拼寫錯誤的,這個部分還需要想辦法來處理。
我們看看清洗前和清洗後的數據,效果還算是不錯。
提取TF-IDF特徵
自然語言處理的一個難點問題就是如何表示文本,機器學習模型都是以數值為輸入,所以我們需要找到一種很好的表達方式讓我們的演算法能夠理解文本數據。
為了幫助我們的模型更多地關注有意義的單詞,我們可以使用TF-IDF進行特徵提取。
這裡,我們使用了sklearn庫中的TfidfVectorizer來提取TF-IDF特徵。
模型訓練
本篇文章是第一篇,所以我們使用一個非常簡單的Logistic Regression模型來進行分類。
首先,將訓練數據劃分為訓練集和驗證集。
我們保留了訓練集中的0.1為驗證集,用來評估我們的模型性能。
對於分類問題,我們用準確率來評估演算法。
好了,我們用非常簡單的Logistics Regression演算法就在文本分類問題上獲得了98.2%的準確率,表現已經非常不錯。核心代碼已經放出來了,有興趣的同學可以在Kaggle上下載數據集,自己一步一步實現,印象會更深一些。
TAG:kaggle數據分析 |