大家好,今天要介紹的是簡單的文本分析,主要內容會包含處理html標籤、jieba斷詞、TF-IDF轉換與Logistic Regression和svm,其實最繁瑣的功夫都下在了資料的預處理上,剩下的部分都是找演算法,交給電腦放肆奔跑的過程了。
這次採用資料集是鏗鏗老師的學會學課程,抓取了2017~2021中課程各章節的討論區資料,保留了2021其中一個學期的資料做為Validation set,先給各位看一下目前的資料狀態。
發現message中的資料長得很醜,裡面有很多透過爬蟲取得的html標籤,待會會將文本進行處理,我們先將是否為熱門文章的標籤新增上去。
經過簡單計算發現瀏覽數的平均數為34,標準差44;留言數平均數則是0.4,標準差為0.99,我選擇了大於平均值兩倍標準差做為熱門文章的根據,插入[hit]欄位並根據上述方式訂下標籤內容。
透過上述程式碼可以輕鬆的移除html標籤,也可在程式碼內部增加、移除或置換其他符號內容。下一步便是進行斷詞過程。
上面的程式碼不只有斷詞,一開始還有進行除去停止詞的動作,可以在與專案檔案同個目錄中的資料夾新增stopWord.txt的檔案,並在檔案內用分行的方式新增停止詞如:我、妳、他、在、不、Youtube等等,在迴圈中會自動將這些字詞移除,透過上述資料處理的過程,我們得出最後的資料型態如下
接著透過TF-IDF將文本內容轉換為字頻數值,並分別透過羅吉斯迴歸與SVM建立模型並預測測試集資料是否為熱門文章。
結論,發現兩種演算法預測準確度都超過90%(灑花),但其實仔細查看資料會發現,絕大部的資料都是不會成為熱門文章的,即使電腦全都預測成非熱門文章,也會有(1288-97)(全部資料-熱門文章資料)/1288(全部資料)=92%的準確度,又遇到了資料不平衡的問題,而關於文本的oversampling也有許多辦法,未來文章也會提及相關作法。
喜歡這些內容麻煩幫我按讚,也可分享出去給更多人知道,學海無涯,這些只是一點點小知識,希望大家會喜歡!