匯總整理一套Python網頁爬蟲,文本處理,科學計算,機器學習和數據挖掘的兵器譜。
1. Python網頁爬蟲工具集
一個真實的項目,一定是從獲取數據開始的。無論文本處理,機器學習和數據挖掘,都需要數據,除了通過一些渠道購買或者下載的專業數據外,常常需要大家自己動手爬數據,這個時候,爬蟲就顯得格外重要了,幸好,Python提供了一批很不錯的網頁爬蟲工具框架,既能爬取數據,也能獲取和清洗數據,也就從這里開始了:
1.1 Scrapy
鼎鼎大名的Scrapy,相信不少同學都有耳聞,課程圖譜中的很多課程都是依靠Scrapy抓去的,這方面的介紹文章有很多,推薦大牛pluskid早年的一篇文章:《Scrapy 輕松定制網絡爬蟲》,歷久彌新。
官方主頁:http://scrapy.org/
Github代碼頁: https://github.com/scrapy/scrapy
1.2 Beautiful Soup
客觀的說,Beautifu Soup不完全是一套爬蟲工具,需要配合urllib使用,而是一套HTML / XML數據分析,清洗和獲取工具。
官方主頁:http://www.crummy.com/software/BeautifulSoup/
1.3 Python-Goose
Goose最早是用Java寫得,后來用Scala重寫,是一個Scala項目。Python-Goose用Python重寫,依賴了Beautiful Soup。前段時間用過,感覺很不錯,給定一個文章的URL, 獲取文章的標題和內容很方便。
Github主頁:https://github.com/grangier/python-goose
2. Python文本處理工具集
從網頁上獲取文本數據之后,依據任務的不同,就需要進行基本的文本處理了,譬如對于英文來說,需要基本的tokenize,對于中文,則需要常見的中文分詞,進一步的話,無論英文中文,還可以詞性標注,句法分析,關鍵詞提取,文本分類,情感分析等等。這個方面,特別是面向英文領域,有很多優秀的工具包,我們一一道來。
2.1 NLTK ― Natural Language Toolkit
搞自然語言處理的同學應該沒有人不知道NLTK吧,這里也就不多說了。不過推薦兩本書籍給剛剛接觸NLTK或者需要詳細了解NLTK的同學: 一個是官方的《Natural Language Processing with Python》,以介紹NLTK里的功能用法為主,同時附帶一些Python知識,同時國內陳濤同學友情翻譯了一個中文版,這里可以看到:推薦《用Python進行自然語言處理》中文翻譯-NLTK配套書;另外一本是《Python Text Processing with NLTK 2.0 Cookbook》,這本書要深入一些,會涉及到NLTK的代碼結構,同時會介紹如何定制自己的語料和模型等,相當不錯。
官方主頁:http://www.nltk.org/
Github代碼頁:https://github.com/nltk/nltk
2.2 Pattern
Pattern由比利時安特衛普大學CLiPS實驗室出品,客觀的說,Pattern不僅僅是一套文本處理工具,它更是一套web數據挖掘工具,囊括了數據抓取模塊(包括Google, Twitter, 維基百科的API,以及爬蟲和HTML分析器),文本處理模塊(詞性標注,情感分析等),機器學習模塊(VSM, 聚類,SVM)以及可視化模塊等,可以說,Pattern的這一整套邏輯也是這篇文章的組織邏輯,不過這里我們暫且把Pattern放到文本處理部分。我個人主要使用的是它的英文處理模塊Pattern.en, 有很多很不錯的文本處理功能,包括基礎的tokenize, 詞性標注,句子切分,語法檢查,拼寫糾錯,情感分析,句法分析等,相當不錯。
官方主頁:http://www.clips.ua.ac.be/pattern
2.3 TextBlob: Simplified Text Processing
TextBlob是一個很有意思的Python文本處理工具包,它其實是基于上面兩個Python工具包NLKT和Pattern做了封裝(TextBlob stands on the giant shoulders of NLTK and pattern, and plays nicely with both),同時提供了很多文本處理功能的接口,包括詞性標注,名詞短語提取,情感分析,文本分類,拼寫檢查等,甚至包括翻譯和語言檢測,不過這個是基于Google的API的,有調用次數限制。TextBlob相對比較年輕,有興趣的同學可以關注。?
官方主頁:http://textblob.readthedocs.org/en/dev/
Github代碼頁:https://github.com/sloria/textblob?
2.4 MBSP for Python
MBSP與Pattern同源,同出自比利時安特衛普大學CLiPS實驗室,提供了Word Tokenization, 句子切分,詞性標注,Chunking, Lemmatization,句法分析等基本的文本處理功能,感興趣的同學可以關注。
官方主頁:http://www.clips.ua.ac.be/pages/MBSP
2.5 Gensim: Topic modeling for humans
Gensim是一個相當專業的主題模型Python工具包,無論是代碼還是文檔,我們曾經用《如何計算兩個文檔的相似度》介紹過Gensim的安裝和使用過程,這里就不多說了。?
官方主頁:http://radimrehurek.com/gensim/index.html
github代碼頁:https://github.com/piskvorky/gensim?
2.6 langid.py: Stand-alone language identification system
語言檢測是一個很有意思的話題,不過相對比較成熟,這方面的解決方案很多,也有很多不錯的開源工具包,不過對于Python來說,我使用過langid這個工具包,也非常愿意推薦它。langid目前支持97種語言的檢測,提供了很多易用的功能,包括可以啟動一個建議的server,通過json調用其API,可定制訓練自己的語言檢測模型等,可以說是“麻雀雖小,五臟俱全”。
Github主頁:https://github.com/saffsd/langid.py
2.7 Jieba: 結巴中文分詞
“結巴”中文分詞:做最好的Python中文分詞組件 “Jieba” (Chinese for “to stutter”) Chinese text segmentation: built to be the best Python Chinese word segmentation module.
好了,終于可以說一個國內的Python文本處理工具包了:結巴分詞,其功能包括支持三種分詞模式(精確模式、全模式、搜索引擎模式),支持繁體分詞,支持自定義詞典等,是目前一個非常不錯的Python中文分詞解決方案。
Github主頁:https://github.com/fxsjy/jieba
3. Python科學計算工具包
說起科學計算,大家首先想起的是Matlab,集數值計算,可視化工具及交互于一身,不過可惜是一個商業產品。開源方面除了GNU Octave在嘗試做一個類似Matlab的工具包外,Python的這幾個工具包集合到一起也可以替代Matlab的相應功能:NumPy+SciPy+Matplotlib+iPython。同時,這幾個工具包,特別是NumPy和SciPy,也是很多Python文本處理 & 機器學習 & 數據挖掘工具包的基礎,非常重要。最后再推薦一個系列《用Python做科學計算》,將會涉及到NumPy, SciPy, Matplotlib,可以做參考。
3.1 NumPy
NumPy幾乎是一個無法回避的科學計算工具包,最常用的也許是它的N維數組對象,其他還包括一些成熟的函數庫,用于整合C/C++和Fortran代碼的工具包,線性代數、傅里葉變換和隨機數生成函數等。NumPy提供了兩種基本的對象:ndarray(N-dimensional array object)和 ufunc(universal function object)。ndarray是存儲單一數據類型的多維數組,而ufunc則是能夠對數組進行處理的函數。
官方主頁:http://www.numpy.org/
3.2 SciPy:Scientific Computing Tools for Python
“SciPy是一個開源的Python算法庫和數學工具包,SciPy包含的模塊有最優化、線性代數、積分、插值、特殊函數、快速傅里葉變換、信號處理和圖像處理、常微分方程求解和其他科學與工程中常用的計算。其功能與軟件MATLAB、Scilab和GNU Octave類似。 Numpy和Scipy常常結合著使用,Python大多數機器學習庫都依賴于這兩個模塊。”―-引用自“Python機器學習庫”
官方主頁:http://www.scipy.org/
3.3 Matplotlib
matplotlib 是python最著名的繪圖庫,它提供了一整套和matlab相似的命令API,十分適合交互式地進行制圖。而且也可以方便地將它作為繪圖控件,嵌入GUI應用程序中。Matplotlib可以配合ipython shell使用,提供不亞于Matlab的繪圖體驗,總之用過了都說好。
官方主頁:http://matplotlib.org/
4. Python 機器學習 & 數據挖掘 工具包
機器學習和數據挖掘這兩個概念不太好區分,這里就放到一起了。這方面的開源Python工具包有很多,這里先從熟悉的講起,再補充其他來源的資料,也歡迎大家補充。
4.1 scikit-learn: Machine Learning in Python
首先推薦大名鼎鼎的scikit-learn,scikit-learn是一個基于NumPy, SciPy, Matplotlib的開源機器學習工具包,主要涵蓋分類,回歸和聚類算法,例如SVM, 邏輯回歸,樸素貝葉斯,隨機森林,k-means等算法,代碼和文檔都非常不錯,在許多Python項目中都有應用。例如在我們熟悉的NLTK中,分類器方面就有專門針對scikit-learn的接口,可以調用scikit-learn的分類算法以及訓練數據來訓練分類器模型。
官方主頁:http://scikit-learn.org/
4.2 Pandas: Python Data Analysis Library
Pandas也是基于NumPy和Matplotlib開發的,主要用于數據分析和數據可視化,它的數據結構DataFrame和R語言里的data.frame很像,特別是對于時間序列數據有自己的一套分析機制,非常不錯。這里推薦一本書《Python for Data Analysis》,作者是Pandas的主力開發,依次介紹了iPython, NumPy, Pandas里的相關功能,數據可視化,數據清洗和加工,時間數據處理等,案例包括金融股票數據挖掘等,相當不錯。
官方主頁:http://pandas.pydata.org/
4.3 mlpy ?C Machine Learning Python
官方主頁:http://mlpy.sourceforge.net/
4.4 PyBrain
“PyBrain(Python-Based Reinforcement Learning, Artificial Intelligence and Neural Network)是Python的一個機器學習模塊,它的目標是為機器學習任務提供靈活、易應、強大的機器學習算法。(這名字很霸氣)
PyBrain正如其名,包括神經網絡、強化學習(及二者結合)、無監督學習、進化算法。因為目前的許多問題需要處理連續態和行為空間,必須使用函數逼近(如神經網絡)以應對高維數據。PyBrain以神經網絡為核心,所有的訓練方法都以神經網絡為一個實例。”
4.5 Theano?
“Theano 是一個 Python 庫,用來定義、優化和模擬數學表達式計算,用于高效的解決多維數組的計算問題。Theano的特點:緊密集成Numpy;高效的數據密集型GPU計算;高效的符號微分運算;高速和穩定的優化;動態生成c代碼;廣泛的單元測試和自我驗證。自2007年以來,Theano已被廣泛應用于科學運算。theano使得構建深度學習模型更加容易,可以快速實現多種模型。PS:Theano,一位希臘美女,Croton最有權勢的Milo的女兒,后來成為了畢達哥拉斯的老婆。”
4.6? Pylearn2
“Pylearn2建立在theano上,部分依賴scikit-learn上,目前Pylearn2正處于開發中,將可以處理向量、圖像、視頻等數據,提供MLP、RBM、SDA等深度學習模型。”
官方主頁:http://deeplearning.net/software/pylearn2/
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
