本文**: 作為備份
總所周知,資料探勘模型中非常重要的部分是訓練模型,訓練集與測試集便是整個資料探勘過程中花費時間最多的過程。資料集通過有如下的一些途徑獲得:
經典資料集:python nltk 便提供了非常多經典的資料集。很多資料集都是手工標註而成,所以使用的時候不得不感嘆工程的浩大。例如nlp中使用的penn treebank,有興趣的同學可以看看他們的**《building a large annotated corpus of english: the penn treebank》,那簡直就是一部辛酸史啊!
從網頁上抓取:直接動手寫乙個爬蟲爬取特定的網頁不難,通過正規表示式就能夠將有效的內容提取出來;當然,發揚拿來主義精神的話,我們可以使用python中一些優秀的庫,比如scrapy,beautifulsoup 等等。
從日誌、已有檔案中分析:如果是海量資料的話可以使用hadoop這樣的系統。結合傳統sql中的一些特殊功能,例如partition,有時會有不錯的效果,不過最多壓縮空間、縮減特徵再用sql處理。
其他網路資料集:stanford large network dataset collectionm,100+ interesting data sets for statistics
如果是網頁內容,首先需要去掉html tag,lxml和html5lib是比較有名的python庫,beautifulsoup也對他們做了一層封裝。不過別忘了,python本身也自帶了sgmllib這樣的基本可擴充套件的解析器。如果是有特別的處理,其實正規表示式也是不錯的選擇。
處理編碼,由於我主要是處理英文的資料,這一步基本也跳過了。
將文件分割成句子(可選)。很多時候我們採用的是詞袋模型(bag of words),所以是否分割成句子也無所謂。比較簡單的方法就是python nltk中的sent_tokenize()函式,用的是punkt演算法,**在這裡。
將句子分割成詞。首先用正規表示式可以自己完成;如果要利用已有工具,python nltk中的word_tokenize(),這個方式就是前文提到的penn treebank語料庫所使用的分詞方法。聽起來是不是很高大上,我是不會告訴你其實它也是正規表示式實現的,想知道具體實現,戳這裡。分詞其實主要幹了這麼幾個事:1)將』分開. don't -> do n't, they'll -> they 'll; 2)將大部分標點當作單獨的乙個詞; 3)將後一位是逗號或者引號的詞分開; 4)單獨出現在一行的句號分開。中文分詞區別比較大,可以採用斯坦福或者ictclas(中科院背景)的方案。
拼寫錯誤糾正。推薦pyenchant,非常喜歡,因為簡潔到四句語句就能完成。windows 8中作業系統也直接提供了拼寫檢查的com埠,不過就得多花時間研究啦。
pos tagging(根據實際應用)。還是nltk,首頁就有介紹;斯坦福也提供了這類工具。這一塊屬於nlp的範疇,還是parsing等應用,要了解nlp原理推薦coursera上一門不錯的課程natural language processing
去掉標點。正規表示式即可,有的時間非常短的單詞也可以一起去掉,len<3的常見的選擇
去掉非英文本元的詞(根據實際應用決定)。
轉換成小寫。
去掉停用詞。就是在各種句子中都經常出現的一些詞,i、and什麼的。nltk有乙個stopwords。matthew l. jockers提供了乙份比機器學習和自然語言處理中常用的停詞表更長的停詞表。中文停用詞戳這裡。什麼?你問我停用詞怎麼找到的,我想大概是idf這樣的演算法吧。
詞型轉換。簡單來講,我們希望do、did、done都能統一的返回do。第一種方法叫stem,porter是比較常見的一種基於規則的演算法,網頁有snowball工具,也是它的**。porter的結果差強人意,單詞末尾有e、y的,基本上stem之後都不間了,例如replace->replac;末尾有重複單詞的,基本只剩乙個了,例如ill->il。nltk中也有stem庫,演算法應該是類似的。第二種方法叫lemmatization,就是基於詞典做詞型轉換,nltk的stem庫中便有wordnetlemmatizer可以使用。
去掉長度過小的詞(可選)。如果之前做了,這裡要再做一次,因為stem會改變詞型。
重新去停用詞。理由同上。
這個主題太大,不是這篇日誌的重點。簡單來講,python的
nltk和
scikit.learn是非常優秀的工具,另外,r也是不錯的一門語言。視覺化的工具可以採用weka、knime、tanagra、rapidminer 、orange、ggobi等。這方面最好的課程當屬andrew ng的
machine learning,那個識別貓臉的google brain(deep learning)便是他的功績。
文字挖掘預處理流程總結(2) 英文
目錄 1.英文文字挖掘預處理特點 2.英文文字挖掘預處理 2.1 預處理一 資料收集 2.2 預處理二 除去資料中非文字部分 2.3 預處理三 拼寫檢查更正 2.4 預處理四 詞幹提取 stemming 和詞形還原 lemmatization 2.5 預處理五 轉化為小寫 2.6 預處理六 引入停用...
文字語料預處理總結
import jieba import re eve list 測試 現power type check 依據bom和裝配圖,bom中沒有不用處理 記憶體問題反饋攻關組跟蹤 print list map lambda x re.sub s d a za z x eve list import jie...
資料探勘預處理
資料預處理的主要任務如下 1 資料清理 填寫空缺值,平滑雜訊資料,識別,刪除孤立點,解決不一致性 2 資料整合 整合多個資料庫,資料立方體,檔案 3 資料變換 規範化 消除冗餘屬性 和聚集 資料彙總 將資料從乙個較大的子空間投影到乙個較小的子空間 4 資料歸約 得到資料集的壓縮表示,量小,但可以得到...