Home  >  Article  >  Backend Development  >  Python 在网页爬虫、数据挖掘、机器学习和自然语言处理领域的应用情况如何?

Python 在网页爬虫、数据挖掘、机器学习和自然语言处理领域的应用情况如何?

WBOY
WBOYOriginal
2016-06-06 16:11:061940browse

回复内容:

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(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来完成。
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn