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

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