第八屆泰迪杯數據挖掘賽C題總結

泰迪杯已經過去了,我感覺泰迪杯的新題更像是一道考爬蟲能力的題啊。聽說獲獎了還有去XXX研究院工作的機會,顯然這個出題的老師水平不怎麼樣嘛~~
比起這道題,我感覺還是C題更有挑戰性一些。看過A題和B題,A題感覺是普通的數據題,它的數據預處理比較難,而且需要結合比較專業的知識來解決,這一點比較棘手。而B題呢?更像是一道計算機視覺的題目。這種題目實際上不難,網絡上開源的網絡有很多,真心不是很難。
而C題,更是一道漢語言處理的問題了,漢語言處理又是一塊比較新的領域。所謂風險越大,收益越大,因此我覺得C題比較有機會,比較適合我這種混世魔王。

C題第一題是怎麼做的?

所謂C題,是一道文本分類問題。我看了一些論文,好像不進行分詞,訓練出來的分類器會更加精確。怎麼做呢?我只考慮留言詳情,因爲它的信息量比較大。然後,把留言詳情進行分詞,而是用二元語法,也就是連續的兩個漢字作爲特徵。
可能有人會問,這麼做,特徵數量不是太多了嗎?是的,因此我需要將其進行降維。怎麼降維?不是採用PCA,而是根據留言的分類,用統計檢驗的方法——卡方檢驗,進行降維。這也是根據我所讀的論文做的。
得到特徵之後,我使用的是統計詞頻詞袋模型,將非結構化的文本,轉換爲結構化的特徵向量。
之後,再根據模型,訓練出一個機器學習模型就可以了。我訓練了幾乎所有常見的機器學習模型,從中挑選出最好的機器學習模型。他們分別是——貝葉斯分類器、邏輯迴歸、SVC。

第二題是怎麼做的?

第二題,我將其理解爲聚類問題、綜合評價問題了。因爲要挖掘出熱門問題,首先找出問題,如何找?聚類!!
這次,因爲聚類沒有分類標籤了,所以不能再用卡方檢驗了。卡方檢驗其實好處很多,能夠順帶把停用詞之類的也給刷了。因此,如果繼續使用二元語法提取特徵,然後再使用PCA降維,那麼肯定不能過濾掉停用詞了。
因此,本次提取特徵,就只能老老實實地用分詞器先進行分詞了。
要想分詞,首先訓練一個分詞器。我用的是MSR開源語料庫,使用條件隨機場來訓練一個分詞性模型的。條件隨機場將分詞問題轉換爲序列標註問題,此是其基本原理。
進行分詞之後,不要直接進行降維,因爲一些製表符、空格什麼東西都要過濾掉,再進行PCA降維不遲。因此,我使用 hanlp 的開源字典——stopword,再向裏面添加進換行、製表符等,來過濾掉這些停用、常見詞。
之後,就可以進行 PCA 降維了。考慮到特徵個數比較多的情況下,樣本一般呈現出線性可分的狀態。因此,我使用的是無核函數的 的PCA降維。
得到特徵之後,我仍舊使用的是統計詞頻詞袋模型,將非結構化的文本,轉換爲結構化的特徵向量。有人可能爲問我爲什麼,因爲TF-IDF會破壞數據的稀疏性,要花費幾乎20個GB,才能讀取得了。我的電腦只有 8G的內存,要讀取他,肯定要依靠文件管理系統不停的緩存、釋放,這樣的代價太大了。這也是爲什麼第一次問題我是這麼做的原因(實際上論文也是這麼做的)。
之後,再用 DBSCAN 聚類,將相似的文本進行聚類。其實我有想過用 k-means,或者 高斯混合模型對文本進行聚類的。然而,由於聚類簇數需要人工選擇,因此就放棄了這種方法。可能有人會擡槓說, k可以有折臂圖之類地推出,但是這麼做太麻煩了,這是因爲樣本數十分多的緣故。於是我還是用 DBSCAN 了,只不過調參麻煩了點。
之後,我再根據 點贊數、反對數和時間跨度,找出了熱門問題。這個熱度指數,根據點贊數、反對數和留言數算出來的,而時間跨度,用於對每條留言的衰減。這種衰減,我還設置了一個 指數函數
但最後,我看了聚類效果,不堪入目~
後來我想了想,其實,這樣的聚類,只是對的聚類,而不是對漢字背後意思的聚類。因此,要想聚類,還是以詞向量作爲特徵比較妥當。但是,搭進詞向量後,對於每一條留言,將會是一個特徵矩陣。雖然可以對其取平均,但是,我沒有嘗試過。
最後,爲了提取出問題描述,我使用關鍵句提取算法。這樣做,能夠從字數爲幾百多的留言詳情,壓縮到幾十個字。這樣,提取關鍵句時,就不會太累。

第三個問是怎麼做的?

第三個問比較簡答,就是一個評價留言答覆的問題。其實問題已經描述得很清楚了,從相關度、完整性和可讀性來評價留言答覆。相關性,我的想法是從留言答覆、留言詳情中,分別提取出關鍵句。根據關鍵句的詞向量平均向量的相似度(平均詞向量的夾角餘弦值),作爲相關性。
至於完整性和可讀性,我本來考慮使用詞性分析,根據詞性分析的結果來判斷。但是,奈何手頭上沒有相關的語料庫。並且完整讀、可讀性是一個迴歸問題哦,這種語料庫實在沒有。於是,我就只能像問題一一樣,將兩兩的漢字,作爲一個特徵,並在某部二元語法詞典中,看是否有沒有相應的匹配詞。然後,如果沒有,就扣一點點分,按這樣的方式來解決。

結束了,這就是 C 題的做法,不知道對不對,能不能拿個二等或者一等獎,感謝大家聽我說了這麼多廢話,希望能夠對萌新們有一點啓發。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章