增加序號列
本實驗的資料來源是以單個新聞為單元,需要增加id列來作為每篇新聞的唯一標識,方便下面演算法的計算。
分詞及詞頻統計
這兩步都是文字挖掘領域最常規的做法。
首先使用分詞元件對content欄位(新聞內容)進行分詞。去除過濾詞之後(過濾詞一般是標點符號及助語),再對詞頻進行統計。
停用詞過濾
停用詞過濾元件用於過濾輸入的停用詞詞庫,一般過濾標點符號以及對文章影響較小的助語等。
結果分析和評估
上面的步驟將文章從主題的維度表示成了乙個向量。下面就可以通過向量的距離實現聚類,從而實現文章分類。
cluster_index 表示的是每一類的名稱。
找到第0類,一共有 docid 為115,292,248,166四篇文章。
實驗效果並不十分理想,主要原因如下:
沒有進行細節的調優。
沒有對資料進行特徵工程處理。
資料量太小。
流程說明:
(1)要分類,首先要有乙個分好類的訓練語料庫來作為我們分類參考的標準。語料庫的構建可以通過爬蟲自己爬取但是測試發現爬取太過於費時而且爬下來的新聞還是未分好類的,還需後期自己手動分類因此為了縮短專案開發周期,
(2)拿到語料庫後,針對這些原始語料,需要提取它們的特徵,這樣才能知道具備哪些特徵的文字屬於哪種類別。文字的特徵主要是由一系列詞性的詞構成,所以要對文字進行分詞,通過後期提取相關詞性的詞來達到獲取文字特徵的目的。
(3)分詞之後,我們可以從整個原始語料庫中提取出一定數量的代表性詞彙(名詞),提取到的名詞可能包含停用詞,還需要在提取的名詞詞庫基礎上去除停用詞,獲得最終的名詞詞庫;
(4)統計詞頻,至於為什麼要統計詞頻,就不用說了吧,乙個詞在某類文字裡出現的次數越多,越能代表這一類文字。當然如果某個詞在這一類文字裡出現次數很多而在其他類文字裡根本不出現,就更能代表這一類文字了。
(5)計算特徵值,其實詞的頻率只是文字最重要的特徵之一,如果只靠詞的頻率去判斷文字的類別的話,顯然正確率是很低的。本專案使用tf-idf(是一種用於資訊檢索與資訊探勘的常用加權技術)來對文字進行更深層度的特徵提取。tf-idf綜合表徵了該詞在文件中的重要程度和文件區分度。但在文字分類中單純使用tf-idf來判斷乙個特徵是否有區分度是不夠的。它沒有考慮特徵詞在分類間的分布。如果乙個特徵詞,在各個類間分布比較均勻,這樣的詞對分類基本沒有貢獻;但是如果乙個特徵詞比較集中的分布在某個類中,而在其它類中幾乎不出現,這樣的詞卻能夠很好代表這個類的特徵,而tf-idf不能區分這兩種情況。沒有考慮特徵詞在類內部文件中的分布情況。在類內部的文件中,如果特徵詞均勻分布在其中,則這個特徵詞能夠很好的代表這個類的特徵,如果只在幾篇文件**現,而在此類的其它文件中不出現,顯然這樣的特徵詞不能夠代表這個類的特徵。這時就要通過卡方檢驗(chi-square)的計算方法得到資料字典。(卡方校驗如下圖)
(6)借助機器學習演算法庫(scikit-learn)中的函式對上面進行過資料探勘的語料庫進行自動拆分,拆分為訓練集(train)和測試集(test)。
新聞文字分類問題
新聞文字分類問題是典型的字元識別問題。賽題本質是乙個文字分類問題,需要根據每句的字元進行分類。但賽題給出的資料是匿名化的,不能直接使用中文分詞等操作 因此本次賽題的難點是需要對匿名字元進行建模,進而完成文字分類的過程。由於文字資料是一種典型的非結構化資料,因此可能涉及到特徵提取和分類模型兩個部分。思...
資料探勘 文字分類(五)
首先是取名詞,我們要把名詞取出來,是因為一篇文件,名詞最能夠代表這一篇文件屬於哪一類的,其他的形容詞,副詞之類的詞語並不能很好的代表某一類文件。所以要取名詞,這個當然是用正規表示式了。我們看一下分詞結果 名詞詞性的詞分詞工具會用n表示,那麼我們就用正規表示式去匹配n就好了。根據廖老師的python教...
Python文字挖掘練習(一) 新聞摘要
1 掌握讀取文件內容 文章分句 文字分詞的方法 2 掌握文字向量化,剔除停用詞 3 掌握用cosine方法計算文件相似度,並基於此提取文件摘要 4 將過程封裝成函式,方便呼叫 函式功能 實現文字摘要 引數說明 path 文件路徑 num summary 摘要長短 返回 result 摘要 impor...