Python 在网页爬虫、数据挖掘、机器学习和自然语言处理领域的应用情况如何?
作者:可爱的天使keven_464 | 2021-09-08 08:59
回复内容:python在网页爬虫、数据挖掘、机器学习和自然语言处理领域的应用情况如何?Python的快速迭代能力让它收到青睐。按照楼主的问题一个个回答,结合我有限的经验:1)爬虫Scrapy,简单易用。用rq-queue结合的话很容易构造一个分布式的爬虫。我曾经这样爬下了整个豆瓣的好友关系图。2)数
回复内容:
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来写来测快速得多。
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)自动求导。因为现在尝试构建的模型算是各种神经网络模型的变形组合,数学没学好的孩子表示求导压力很大%>_<%,而且也容易写错。
但是,缺点也挺明显,最麻烦的是很不好debug,因为构建模型用的都是符号表达式(symbolic),符号表达式本身是无法运行的,根本无法debug!你需要编译,然后在编译的时候指定debug mode或者启用monitor机制,但感觉也不好用啊。。。而且不用GPU速度也慢。。。
自然语言处理(NLP):NLP算是众多CS研究方向中非常重视实践的了,各种文本处理的杂活非常多。之前前辈都会用perl脚本,但后来基本上都被python替代了,因为python代码可读性强,更加规范,开发效率也高。去年实验室有个博士师兄去NYU读博士后,老板要求他们实验室全体必须都用python。
后来出现NLP工具包NLTK,python基本上就是NLPer第一脚本(甚至是开发)语言了。NLTK配合
《用Python进行自然语言处理》真的是最好的NLP入门实践教程。
学习python是几年前。当时在linux下做个小东西本来只打算写写shell脚本,但后来觉得shell语法实在是太乱了,根本不适合写任何需要维护的东西,所以就学了python,据说google现在的脚本基本上都是python(待求证~)
我觉得python开发效率高(交互式的机制也很赞有木有~),而且和其他语言都能较好的结合。所以作为快速开发和胶水语言都是非常好的选择~
先说这么多,以后想到再来补充~
python的爬虫还是很棒的~
这是我的新浪微博爬虫,欢迎指教~~
毕业设计 – 偏执狂
爬虫:Python原生的urllib其实已经很好用了,异步的请找Scrapy。
数据挖掘:这个没有所谓统一的包,因为数据挖掘这个边界本身就很不清晰。不过我觉得numpy和scipy能涵盖大部分数据挖掘工具包所需要的usage case。大数据方面,Pig提供可以支持Python定义的UDF,Yelp的mrjob可以使用python直接写MapReduce。
机器学习:Scikit Learn是公认的好用,大有成为行业标准的潜力。
NLP:nltk貌似不错。了解不多,就不多说了。
网页抓取:
python网页抓取功能十分强大,众多的标准库,简洁易上手,多种方法均可实现。
用Python做网页抓取与解析入门笔记
我曾经做过urllib2+beautifulsoup、Xpath和scrapy三种的。前两个可以借助mongodb数据库能很好地抓取、解析并保存。scrapy能够输出json文件。ps:中文编码比较头疼。
数据挖掘:
Python 是一门适合做数据挖掘的语言吗?
机器学习:
推荐一本书《机器学习实战》,非常棒。python代码简单优雅,易于上手,科学计算软件包众多。高效可复用的python是一个不错的选择。
自然语言处理:
NLTK目前已经发展超过十年,拥有超过十万行的代码。但是在中文处理上并没有很完整的发展。推荐《python自然语言处理》。python提供了较多的工具和技术。中文研究真的很少,希望更多的人能够将自己研究的东西放出来给予参考,不像现在搜索一下全是《python自然语言处理》书上的内容。
python的nltk中文使用和学习资料汇总帮你入门提高
python这些年发现迅猛,尤其在数据这一块,强大的软件包,采集(scrapy、pyspider)、分词(jieba)、搜索(whoosh)、数据分析(numpy)、自然语言处理(NLTK)、机器学习(scikit-learn)。不论是Hadoop还是spark都有python的高级接口。因此,python在数据领域的呼声越来越高。另外python在web端也在逐步发力,丰富的web架构,使python的工程性能逐步提升。
google对python使用的比较多,而且python之父也在google,由此可以看出python在网页爬虫,数据挖掘等的地位了。python的优势在于使用方便,可用的库很多,当你打算做一件工作的时候,你会发现,你需要的东西都已经存在,你自己进行组装就可以了,比如做网页爬虫,就可以使用scrapy来完成。
推荐阅读
-
如何解决《为什么AppDelegate.swift窗口是可选的?》经验,为你挑选了2个好方法。 ...
[详细]
-
如何解决《Webpack错误-无法解析文件或目录》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《指定的LocalDB实例不存在》经验,为你挑选了0个好方法。 ...
[详细]
-
如何解决《Q_OBJECT和moc进行继承》经验,为你挑选了0个好方法。 ...
[详细]
-
如何解决《如何在目录中的所有文件中搜索字符串?我出现了内存异常》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《在Swift中讨论,将来会有新的声明语法吗?》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《无法从iframe中找到FileHiddenName》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《错误:当我尝试创建签名APK时,可疑命名空间和前缀组合[NamespaceTypo]》经验,为你挑选了2个好方法。 ...
[详细]
-
如何解决《推断PandasDataFrame》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《Facebook应用程序是否有通用URI方案,适用于所有移动设备?》经验,为你挑选了0个好方法。 ...
[详细]
-
如何解决《铁路支付通过payumoney》经验,为你挑选了0个好方法。 ...
[详细]
-
如何解决《Java获取下一个枚举值或从第一个开始》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《使用cmp在Python中排序()》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《X不是Y的成员类型》经验,为你挑选了2个好方法。 ...
[详细]
-
如何解决《在bash中将大块二进制分割为8位块》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《MongoDB-计算对象属性的嵌套数组的平均值》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《从左侧CSS动画中滑入》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《修改函数内的点()》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《使用角度常数》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《在Terminal/iTerm中使用HotKey切换不透明度》经验,为你挑选了2个好方法。 ...
[详细]
可爱的天使keven_464
这个屌丝很懒,什么也没留下!