【謝科的回答(49票)】: python在網(wǎng)頁爬蟲、數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)和自然語言處理領(lǐng)域的應(yīng)用情況如何? Python的快速迭代能力讓它收到青睞。按照樓主的問題一個(gè)個(gè)回答,結(jié)合我有限的經(jīng)驗(yàn): 1)爬蟲Scrapy,簡單易用。用rq-queue結(jié)合的話很容易構(gòu)造一個(gè)分布式的爬蟲。我曾經(jīng)這樣爬下了整個(gè)豆瓣的好友關(guān)系圖。 2)數(shù)據(jù)挖掘里常用的算法python里都有實(shí)現(xiàn)。肖智博提到的scikit learn可謂翹楚。不僅文檔清晰,且?guī)缀跣枰S玫乃惴ň袑?shí)現(xiàn)。我們用scikit learn做了一個(gè)evemt detection的系統(tǒng)。整個(gè)系統(tǒng)用python寫成,機(jī)器學(xué)習(xí)部分用python 3)nlp部分不是特別了解。nltk很普遍的被很多大學(xué)課程用到。 企業(yè)里: 據(jù)我所知公司里的使用情況 google:爬蟲C++,數(shù)據(jù)挖掘C++,nlp C++。python用來處理數(shù)據(jù)。 twitter:所有服務(wù)均用java和scala,python用來寫快速迭代的工具。比如說做搜索引擎的算法的同事寫了一個(gè)python客戶端用于內(nèi)部測試搜索質(zhì)量,我自己用py寫好了一個(gè)搜索詞推薦系統(tǒng),包括接口,算法和界面,通過測試后改寫成java。 一點(diǎn)感想: py強(qiáng)項(xiàng)在于,其他語言幾百句做的事情py可以幾十行,幫助開發(fā)者專注問題。而且綜上各種工具包齊備,沒有人會(huì)花時(shí)間寫個(gè)svm(還要保證不寫錯(cuò))。但是py有個(gè)巨大的缺點(diǎn),仍然是,慢。有人會(huì)說,算法優(yōu)化才重要,常數(shù)優(yōu)化沒必要。但是現(xiàn)實(shí)狀況是,大家都是在做常數(shù)優(yōu)化,因?yàn)榧僭O(shè)算法優(yōu)化得下來,設(shè)計(jì)階段就優(yōu)化好了,這也是為什么在twitter把py譯成java的原因。 但是總的來說,即使用py開發(fā)完畢再譯,也比直接用java來寫來測快速得多。 【周西的回答(7票)】: google對(duì)python使用的比較多,而且python之父也在google,由此可以看出python在網(wǎng)頁爬蟲,數(shù)據(jù)挖掘等的地位了。python的優(yōu)勢在于使用方便,可用的庫很多,當(dāng)你打算做一件工作的時(shí)候,你會(huì)發(fā)現(xiàn),你需要的東西都已經(jīng)存在,你自己進(jìn)行組裝就可以了,比如做網(wǎng)頁爬蟲,就可以使用scrapy來完成。 【何史提的回答(15票)】: Python在這方面的package非常齊全: 網(wǎng)頁爬蟲: scrapy(不太清楚) 數(shù)據(jù)挖掘: numpy, scipy, matplotlib, pandas(頭三個(gè)是業(yè)界標(biāo)準(zhǔn),第四個(gè)模擬R) 機(jī)器學(xué)習(xí): scikit-learn, libsvm(極好) 自然語言處理: nltk(極好) 【肖智博的回答(10票)】: 既然是要問應(yīng)用情況的話,這個(gè)還是邀請一些業(yè)界人士回答比較好。 就自己平時(shí)看到的情況看,隨著nltk, scikitlearn這些package越來越好,在相應(yīng)的領(lǐng)域應(yīng)用情況就越來越好。而且這幾年的pycon上面,機(jī)器學(xué)習(xí),自然語言處理相關(guān)的talk越來越多。pandas最近更新非常頻繁,然后在2012年的pycon上pandas的作者不但做了talk還做了tutorial。 目前制約python在上述領(lǐng)域大規(guī)模應(yīng)用的瓶頸還是速度,不過隨著pypy,cython近期的迅猛發(fā)展以及分布式、并行計(jì)算相關(guān)的包越來越多,python將來是可以在上述領(lǐng)域大展身手的。 補(bǔ)充:如果是爬蟲的話,scrapy(http://scrapy.org/) ,你值得擁有 【知乎用戶的回答(8票)】: 自然語言處理上nltk的庫好用,當(dāng)然主要還是英文文本用起來比較方便。 爬蟲的話Scrapy完全夠用了,性能上其實(shí)我覺得夠用了。 機(jī)器學(xué)習(xí)的話LibSVM支持Python。 海量數(shù)據(jù)處理的話,豆瓣的Dpark,是Spark的變種實(shí)現(xiàn)。 信息檢索的話Hypy和Whoosh在性能上并不遜色. 另外還用Matplotlib可以做數(shù)據(jù)可視化顯示。 【葉東杰的回答(8票)】: 網(wǎng)頁抓?。?/p> python網(wǎng)頁抓取功能十分強(qiáng)大,眾多的標(biāo)準(zhǔn)庫,簡潔易上手,多種方法均可實(shí)現(xiàn)。 我曾經(jīng)做過urllib2+beautifulsoup、Xpath和scrapy三種的。前兩個(gè)可以借助mongodb數(shù)據(jù)庫能很好地抓取、解析并保存。scrapy能夠輸出json文件。ps:中文編碼比較頭疼。 數(shù)據(jù)挖掘: Python 是一門適合做數(shù)據(jù)挖掘的語言嗎? 機(jī)器學(xué)習(xí): 推薦一本書《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》,非常棒。python代碼簡單優(yōu)雅,易于上手,科學(xué)計(jì)算軟件包眾多。高效可復(fù)用的python是一個(gè)不錯(cuò)的選擇。 自然語言處理: NLTK目前已經(jīng)發(fā)展超過十年,擁有超過十萬行的代碼。但是在中文處理上并沒有很完整的發(fā)展。推薦《python自然語言處理》。python提供了較多的工具和技術(shù)。中文研究真的很少,希望更多的人能夠?qū)⒆约貉芯康臇|西放出來給予參考,不像現(xiàn)在搜索一下全是《python自然語言處理》書上的內(nèi)容。 python的nltk中文使用和學(xué)習(xí)資料匯總幫你入門提高 【知乎用戶的回答(1票)】: 爬蟲:Python原生的urllib其實(shí)已經(jīng)很好用了,異步的請找Scrapy。 數(shù)據(jù)挖掘:這個(gè)沒有所謂統(tǒng)一的包,因?yàn)閿?shù)據(jù)挖掘這個(gè)邊界本身就很不清晰。不過我覺得numpy和scipy能涵蓋大部分?jǐn)?shù)據(jù)挖掘工具包所需要的usage case。大數(shù)據(jù)方面,Pig提供可以支持Python定義的UDF,Yelp的mrjob可以使用python直接寫MapReduce。 機(jī)器學(xué)習(xí):Scikit Learn是公認(rèn)的好用,大有成為行業(yè)標(biāo)準(zhǔn)的潛力。 NLP:nltk貌似不錯(cuò)。了解不多,就不多說了。 【武博文的回答(1票)】: Python簡潔、開源項(xiàng)目多,網(wǎng)絡(luò)處理能力強(qiáng),所以適合做模型驗(yàn)證、數(shù)據(jù)處理、網(wǎng)絡(luò)處理等內(nèi)容,有cython、pypy等解決方案用以加速似的模型用于實(shí)際生產(chǎn)。 關(guān)于提到的幾個(gè)領(lǐng)域,簡單說下自己的見解吧: 網(wǎng)頁爬蟲:scrapy始終作為爬網(wǎng)頁的最佳選擇,使用過Java、C#的爬蟲,較scrapy有所差距。做一個(gè)爬蟲不會(huì)是整個(gè)項(xiàng)目的重點(diǎn),因此簡潔的架構(gòu)、python簡潔的代碼、scrapy強(qiáng)大的工具包總是可以用最少的代價(jià)很好的完成問題。 數(shù)據(jù)挖掘/機(jī)器學(xué)習(xí):numpy、scipy、pandans、matploit、theano、pylearn2,各種工具包應(yīng)該說應(yīng)有盡有了,numpy和cython的結(jié)合還可以做出速度也不遜色的model,matploit作圖能力強(qiáng),最新的技術(shù)如DP都有非常perfect的開源項(xiàng)目。只是scikit-learn中有些工具包的速度確實(shí)有點(diǎn)想讓人吐槽。另外有很多工具包封上了python的接口。 自然語言處理領(lǐng)域:nltk確實(shí)是最佳的工具,相比有時(shí)候還需要java的stanfordnlp,其他零零碎碎還有些不錯(cuò)的語料相關(guān)的工具集,有了好的語料處理工具,其實(shí)nlp和ml也沒那么大區(qū)別了。 總之,珍愛生命使用python不只是段子吧,當(dāng)然語言總是有局限性的。 【裴威的回答(2票)】: 同問,目前在熟悉python的工具,準(zhǔn)備系統(tǒng)學(xué)習(xí)下數(shù)據(jù)挖掘。用到的軟件包包括numpy,nltk,networkx,matplotlib 原文地址:知乎 |
|