Python 在網頁爬蟲、數據挖掘、機器學習和自然語言處理領域的應用情況如何? | 知乎問答精選

 

A-A+

Python 在網頁爬蟲、數據挖掘、機器學習和自然語言處理領域的應用情況如何?

2018年04月22日 知乎問答精選 暫無評論 閱讀 20 ℃ 次

【謝科的回答(49票)】:

python在網頁爬蟲、數據挖掘、機器學習和自然語言處理領域的應用情況如何?

Python的快速迭代能力讓它收到青睞。按照樓主的問題一個個回答,結合我有限的經驗:

1)爬蟲Scrapy,簡單易用。用rq-queue結合的話很容易構造一個分佈式的爬蟲。我曾經這樣爬下了整個豆瓣的好友關係圖。

2)數據挖掘裡常用的算法python裡都有實現。肖智博提到的scikit learn可謂翹楚。不僅文檔清晰,且幾乎需要常用的算法均有實現。我們用scikit learn做了一個evemt detection的系統。整個系統用python寫成,機器學習部分用python

3)nlp部分不是特別瞭解。nltk很普遍的被很多大學課程用到。

企業裡:

據我所知公司裡的使用情況

google:爬蟲C++,數據挖掘C++,nlp C++。python用來處理數據。

twitter:所有服務均用java和scala,python用來寫快速迭代的工具。比如說做搜索引擎的算法的同事寫了一個python客戶端用於內部測試搜索質量,我自己用py寫好了一個搜索詞推薦系統,包括接口,算法和界面,通過測試後改寫成java。

一點感想:

py強項在於,其他語言幾百句做的事情py可以幾十行,幫助開發者專注問題。而且綜上各種工具包齊備,沒有人會花時間寫個svm(還要保證不寫錯)。但是py有個巨大的缺點,仍然是,慢。有人會說,算法優化才重要,常數優化沒必要。但是現實狀況是,大家都是在做常數優化,因為假設算法優化得下來,設計階段就優化好了,這也是為什麼在twitter把py譯成java的原因。

但是總的來說,即使用py開發完畢再譯,也比直接用java來寫來測快速得多。

【周西的回答(7票)】:

google對python使用的比較多,而且python之父也在google,由此可以看出python在網頁爬蟲,數據挖掘等的地位了。python的優勢在於使用方便,可用的庫很多,當你打算做一件工作的時候,你會發現,你需要的東西都已經存在,你自己進行組裝就可以了,比如做網頁爬蟲,就可以使用scrapy來完成。

【何史提的回答(15票)】:

Python在這方面的package非常齊全:

網頁爬蟲: scrapy(不太清楚)

數據挖掘: numpy, scipy, matplotlib, pandas(頭三個是業界標準,第四個模擬R)

機器學習: scikit-learn, libsvm(極好)

自然語言處理: nltk(極好)

【肖智博的回答(10票)】:

既然是要問應用情況的話,這個還是邀請一些業界人士回答比較好。

就自己平時看到的情況看,隨著nltk, scikitlearn這些package越來越好,在相應的領域應用情況就越來越好。而且這幾年的pycon上面,機器學習,自然語言處理相關的talk越來越多。pandas最近更新非常頻繁,然後在2012年的pycon上pandas的作者不但做了talk還做了tutorial。

目前制約python在上述領域大規模應用的瓶頸還是速度,不過隨著pypy,cython近期的迅猛發展以及分佈式、並行計算相關的包越來越多,python將來是可以在上述領域大展身手的。

補充:如果是爬蟲的話,scrapy(scrapy.org/) ,你值得擁有

【知乎用戶的回答(8票)】:

自然語言處理上nltk的庫好用,當然主要還是英文文本用起來比較方便。

爬蟲的話Scrapy完全夠用了,性能上其實我覺得夠用了。

機器學習的話LibSVM支持Python。

海量數據處理的話,豆瓣的Dpark,是Spark的變種實現。

信息檢索的話Hypy和Whoosh在性能上並不遜色.

另外還用Matplotlib可以做數據可視化顯示。

【葉東傑的回答(8票)】:

網頁抓取:

python網頁抓取功能十分強大,眾多的標準庫,簡潔易上手,多種方法均可實現。

用Python做網頁抓取與解析入門筆記

我曾經做過urllib2+beautifulsoup、Xpath和scrapy三種的。前兩個可以借助mongodb數據庫能很好地抓取、解析並保存。scrapy能夠輸出json文件。ps:中文編碼比較頭疼。

數據挖掘:

Python 是一門適合做數據挖掘的語言嗎?

機器學習:

推薦一本書《機器學習實戰》,非常棒。python代碼簡單優雅,易於上手,科學計算軟件包眾多。高效可復用的python是一個不錯的選擇。

自然語言處理:

NLTK目前已經發展超過十年,擁有超過十萬行的代碼。但是在中文處理上並沒有很完整的發展。推薦《python自然語言處理》。python提供了較多的工具和技術。中文研究真的很少,希望更多的人能夠將自己研究的東西放出來給予參考,不像現在搜索一下全是《python自然語言處理》書上的內容。

python的nltk中文使用和學習資料匯總幫你入門提高

【知乎用戶的回答(1票)】:

爬蟲:Python原生的urllib其實已經很好用了,異步的請找Scrapy。

數據挖掘:這個沒有所謂統一的包,因為數據挖掘這個邊界本身就很不清晰。不過我覺得numpy和scipy能涵蓋大部分數據挖掘工具包所需要的usage case。大數據方面,Pig提供可以支持Python定義的UDF,Yelp的mrjob可以使用python直接寫MapReduce。

機器學習:Scikit Learn是公認的好用,大有成為行業標準的潛力。

NLP:nltk貌似不錯。瞭解不多,就不多說了。

【武博文的回答(1票)】:

Python簡潔、開源項目多,網絡處理能力強,所以適合做模型驗證、數據處理、網絡處理等內容,有cython、pypy等解決方案用以加速似的模型用於實際生產。

關於提到的幾個領域,簡單說下自己的見解吧:

網頁爬蟲:scrapy始終作為爬網頁的最佳選擇,使用過Java、C#的爬蟲,較scrapy有所差距。做一個爬蟲不會是整個項目的重點,因此簡潔的架構、python簡潔的代碼、scrapy強大的工具包總是可以用最少的代價很好的完成問題。

數據挖掘/機器學習:numpy、scipy、pandans、matploit、theano、pylearn2,各種工具包應該說應有盡有了,numpy和cython的結合還可以做出速度也不遜色的model,matploit作圖能力強,最新的技術如DP都有非常perfect的開源項目。只是scikit-learn中有些工具包的速度確實有點想讓人吐槽。另外有很多工具包封上了python的接口。

自然語言處理領域:nltk確實是最佳的工具,相比有時候還需要java的stanfordnlp,其他零零碎碎還有些不錯的語料相關的工具集,有了好的語料處理工具,其實nlp和ml也沒那麼大區別了。

總之,珍愛生命使用python不只是段子吧,當然語言總是有局限性的。

【裴威的回答(2票)】:

同問,目前在熟悉python的工具,準備系統學習下數據挖掘。用到的軟件包包括numpy,nltk,networkx,matplotlib

標籤:-Python -機器學習 -數據挖掘 -自然語言處理 -爬蟲(計算機網絡)


相關資源:





給我留言