匯總整理一套Python網(wǎng)頁爬蟲,文本處理,科學(xué)計算,機器學(xué)習(xí)和數(shù)據(jù)挖掘的兵器譜。
1. Python網(wǎng)頁爬蟲工具集
一個真實的項目,一定是從獲取數(shù)據(jù)開始的。無論文本處理,機器學(xué)習(xí)和數(shù)據(jù)挖掘,都需要數(shù)據(jù),除了通過一些渠道購買或者下載的專業(yè)數(shù)據(jù)外,常常需要大家自己動手爬數(shù)據(jù),這個時候,爬蟲就顯得格外重要了,幸好,Python提供了一批很不錯的網(wǎng)頁爬蟲工具框架,既能爬取數(shù)據(jù),也能獲取和清洗數(shù)據(jù),也就從這里開始了:
1.1 Scrapy
鼎鼎大名的Scrapy,相信不少同學(xué)都有耳聞,課程圖譜中的很多課程都是依靠Scrapy抓去的,這方面的介紹文章有很多,推薦大牛pluskid早年的一篇文章:《Scrapy 輕松定制網(wǎng)絡(luò)爬蟲》,歷久彌新。
官方主頁:http://scrapy.org/
Github代碼頁: https://github.com/scrapy/scrapy
1.2 Beautiful Soup
客觀的說,Beautifu Soup不完全是一套爬蟲工具,需要配合urllib使用,而是一套HTML / XML數(shù)據(jù)分析,清洗和獲取工具。
官方主頁:http://www.crummy.com/software/BeautifulSoup/
1.3 Python-Goose
Goose最早是用Java寫得,后來用Scala重寫,是一個Scala項目。Python-Goose用Python重寫,依賴了Beautiful Soup。前段時間用過,感覺很不錯,給定一個文章的URL, 獲取文章的標(biāo)題和內(nèi)容很方便。
Github主頁:https://github.com/grangier/python-goose
2. Python文本處理工具集
從網(wǎng)頁上獲取文本數(shù)據(jù)之后,依據(jù)任務(wù)的不同,就需要進(jìn)行基本的文本處理了,譬如對于英文來說,需要基本的tokenize,對于中文,則需要常見的中文分詞,進(jìn)一步的話,無論英文中文,還可以詞性標(biāo)注,句法分析,關(guān)鍵詞提取,文本分類,情感分析等等。這個方面,特別是面向英文領(lǐng)域,有很多優(yōu)秀的工具包,我們一一道來。
2.1 NLTK — Natural Language Toolkit
搞自然語言處理的同學(xué)應(yīng)該沒有人不知道NLTK吧,這里也就不多說了。不過推薦兩本書籍給剛剛接觸NLTK或者需要詳細(xì)了解NLTK的同學(xué): 一個是官方的《Natural Language Processing with Python》,以介紹NLTK里的功能用法為主,同時附帶一些Python知識,同時國內(nèi)陳濤同學(xué)友情翻譯了一個中文版,這里可以看到:推薦《用Python進(jìn)行自然語言處理》中文翻譯-NLTK配套書;另外一本是《Python Text Processing with NLTK 2.0 Cookbook》,這本書要深入一些,會涉及到NLTK的代碼結(jié)構(gòu),同時會介紹如何定制自己的語料和模型等,相當(dāng)不錯。
官方主頁:http://www.nltk.org/
Github代碼頁:https://github.com/nltk/nltk
2.2 Pattern
Pattern由比利時安特衛(wèi)普大學(xué)CLiPS實驗室出品,客觀的說,Pattern不僅僅是一套文本處理工具,它更是一套web數(shù)據(jù)挖掘工具,囊括了數(shù)據(jù)抓取模塊(包括Google, Twitter, 維基百科的API,以及爬蟲和HTML分析器),文本處理模塊(詞性標(biāo)注,情感分析等),機器學(xué)習(xí)模塊(VSM, 聚類,SVM)以及可視化模塊等,可以說,Pattern的這一整套邏輯也是這篇文章的組織邏輯,不過這里我們暫且把Pattern放到文本處理部分。我個人主要使用的是它的英文處理模塊Pattern.en, 有很多很不錯的文本處理功能,包括基礎(chǔ)的tokenize, 詞性標(biāo)注,句子切分,語法檢查,拼寫糾錯,情感分析,句法分析等,相當(dāng)不錯。
新聞熱點
疑難解答