回复内容:
python在网页爬虫、数据挖掘、机器学习和自然语言处理领域的应用情况如何?python的快速迭代能力让它收到青睐。按照楼主的问题一个个回答,结合我有限的经验:1)爬虫scrapy,简单易用。用rq-queue结合的话很容易构造一个分布式的爬虫。我曾经这样爬下了整个豆瓣的好友关系图。2)数据挖掘里常用的算法python里都有实现。肖智博提到的scikit learn可谓翘楚。不仅文档清晰,且几乎需要常用的算法均有实现。我们用scikit learn做了一个evemt detection的系统。整个系统用python写成,机器学习部分用python3)nlp部分不是特别了解。nltk很普遍的被很多大学课程用到。企业里:据我所知公司里的使用情况google:爬虫c++,数据挖掘c++,nlp c++。python用来处理数据。twitter:所有服务均用java和scala,python用来写快速迭代的工具。比如说做搜索引擎的算法的同事写了一个python客户端用于内部测试搜索质量,我自己用py写好了一个搜索词推荐系统,包括接口,算法和界面,通过测试后改写成java。一点感想:py强项在于,其他语言几百句做的事情py可以几十行,帮助开发者专注问题。而且综上各种工具包齐备,没有人会花时间写个svm(还要保证不写错)。但是py有个巨大的缺点,仍然是,慢。有人会说,算法优化才重要,常数优化没必要。但是现实状况是,大家都是在做常数优化,因为假设算法优化得下来,设计阶段就优化好了,这也是为什么在twitter把py译成java的原因。但是总的来说,即使用py开发完毕再译,也比直接用java来写来测快速得多。
python在这方面的package非常齐全:网页爬虫: scrapy(不太清楚)数据挖掘: numpy, scipy, matplotlib, pandas(头三个是业界标准,第四个模拟r)机器学习: scikit-learn, libsvm(极好)自然语言处理: nltk(极好)
既然是要问应用情况的话,这个还是邀请一些业界人士回答比较好。就自己平时看到的情况看,随着nltk, scikitlearn这些package越来越好,在相应的领域应用情况就越来越好。而且这几年的pycon上面,机器学习,自然语言处理相关的talk越来越多。pandas最近更新非常频繁,然后在2012年的pycon上pandas的作者不但做了talk还做了tutorial。目前制约python在上述领域大规模应用的瓶颈还是速度,不过随着pypy,cython近期的迅猛发展以及分布式、并行计算相关的包越来越多,python将来是可以在上述领域大展身手的。补充:如果是爬虫的话,scrapy(http://scrapy.org/) ,你值得拥有
自然语言处理上nltk的库好用,当然主要还是英文文本用起来比较方便。爬虫的话scrapy完全够用了,性能上其实我觉得够用了。机器学习的话libsvm支持python。海量数据处理的话,豆瓣的dpark,是spark的变种实现。信息检索的话hypy和whoosh在性能上并不逊色.另外还用matplotlib可以做数据可视化显示。
爬虫:我没用过现有的python爬虫工具,只是之前用python写过简单的爬虫爬有妖气的漫画。无奈有妖气的反爬机制太强大,只能作罢。但是爬虫本身没问题,python写的很快,beautiful soup这个网页解析工具很好用,总的代码量很少。数据挖掘、机器学习:这篇文章(人工智能和机器学习领域有哪些有趣的开源项目?)里提到的10个项目4个是python的。numpy, scipy, matplotlib三个是python科学计算的基础库。大部分其他的python机器学习库都建立在他们的基础上。比如主题模型gensim,机器学习工具包scikits.learn,自然语言处理工具包nltk。数学表达式模拟工具theano。不过最近在用theano,所以这个可以说多一点。theano能帮助你快速构建机器学习尤其是深度学习模型(你想直接用现有实现好的模型那就不必了)。theano有自动求导,gpu训练加速等功能,不过对我来说,最好用的还是自动求导。你定义好模型给定cost function,就能调用函数(grad)自动求导。因为现在尝试构建的模型算是各种神经网络模型的变形组合,数学没学好的孩子表示求导压力很大%>_