约瑟夫·奈:中美有机会建成新型大国关系

香港中美聚焦网3月10日刊登名为《美中关系的未来》的文章,作者是哈佛大学教授约瑟夫·奈。他在文章中称,当习近平今年秋天访美时,他的议事日程中必将包括他之前所说的“新型大国关系”。该表述仍不够清楚,一些美国人担心它是搅乱美国联盟关系的工具。中国学者则回应说它是一种真诚的努力,旨在避免让一个崛起中大国和一个既有大国发生危险的碰撞,正是这种碰撞导致了伯罗奔尼撒战争和第一次世界大战。

文章称,展望未来,悲观主义者预测随着中国日益强大并谋求将美国逐出西太平洋,一场冲突近在眼前。一些人说,各方接纳各自的势力范围可以预先阻止这场冲突,美国应将其活动范围主要局限在东太平洋。但用这种方式应对中国崛起将毁掉美国的可信度,并导致地区内国家追随中国而非与之抗衡。相反,如果美国继续在西太平洋发挥影响,那么就能加强地区各国自发的抗衡反应,并有助于用一种鼓励中国采取负责任行为的方式来塑造环境。

文章说,对中国崛起的恰当政策反应必须在现实主义和融合之间找到平衡。当克林顿政府在上世纪90年代首次考虑如何应对中国崛起时,一些批评人士曾主张在中国变得过于强大之前采取遏制政策。这一建议遭到拒绝,原因有二。首先,结成一个反华联盟是不可能的,因为当时的大多数地区内国家都希望(并且现在仍然希望)与美国和中国都搞好关系。更重要的是,这种政策将不必要地造成今后与中国的敌对关系。正如我在五角大楼负责东亚事务时所说过的,如果把中国视为敌人,那它肯定会成为敌人。

相反,美国选择了一种可以称之为“融合与保障”的政策。美国欢迎中国加入世界贸易组织,但是美日安保条约也得到重新定义,以确保中国不会成为横行霸道的国家。如果中国到处耀武扬威,那邻国就将设法制衡中国的力量。从这个角度看,只有中国能够遏制中国。

这是在评价美中相对实力时的关键一点。正如阎学通在有关中国如何击败美国的著述中所写的:“要想为自己的崛起营造融洽的国际环境,北京必须发展比华盛顿质量更高的外交和军事关系。没有任何一个领先的大国能与世界上所有国家交好,因此中美竞争的核心将是看谁拥有更高质量的朋友。”在这一点上,美国处于从这种网络和联盟中获益的更有利位置。华盛顿有大约60个条约盟友,中国则仅有几个。

作者说,一些分析人士将中国视为随着国力增强、急于推翻既定国际秩序的修正主义国家。但中国并非像上世纪的纳粹德国或苏联那样是完全的修正主义国家。虽然中国参与创建了金砖国家开发银行并发起了一些适合其需求的地区组织,但中国从联合国、国际货币基金组织和世界贸易组织等现有国际组织中获益颇多,而且并不希望毁掉这些组织。美国的盟友在帮助营造鼓励负责任行为的环境,中国也关心自己的声誉。

文章说,此外,技术和社会变化正在为全球的议事日程增添一些重要的跨国问题。这些问题不仅代表着权力在各国之间转移,而且代表着权力从政府扩散开去。应对这些全球威胁将需要加强包括中国、欧洲和美国在内的各方合作。

中国渴望在东亚扮演更重要角色,美国则有一众需要它肩负防御责任的亚洲盟友。误判总是可能发生的,但冲突远非不可避免。此外,中国也承受不起像皇帝统治下的德国所采取的那种政策。政策太冒险就会使国内外的收益和稳定性承受风险。

文章说,换言之,与一个世纪前的英国相比,美国有更多时间来管理与崛起中大国的关系,中国则比当年的德国有更多的动力来约束自己。这提供了一个建立新型大国关系的机会,如果美国继续避免采取遏制战略、中国也接受美国在西太平洋的合法地位的话。美国和中国是否会设法发展这样一种关系就是另外一个问题了。人为错误和误判总是可能发生的。但只要作出正确选择,冲突就不是无法避免的。

转载:Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱

基本全乎了。
======
曾经因为NLTK的缘故开始学习Python,之后渐渐成为我工作中的第一辅助脚本语言,虽然开发语言是C/C++,但平时的很多文本数据处理任务都交给了Python。离开腾讯创业后,第一个作品课程图谱也是选择了Python系的Flask框架,渐渐的将自己的绝大部分工作交给了Python。这些年来,接触和使用了很多Python工具包,特别是在文本处理,科学计算,机器学习和数据挖掘领域,有很多很多优秀的Python工具包可供使用,所以作为Pythoner,也是相当幸福的。其实如果仔细留意微博,你会发现很多这方面的分享,自己也Google了一下,发现也有同学总结了“Python机器学习库”,不过总感觉缺少点什么。最近流行一个词,全栈工程师(full stack engineer),作为一个苦逼的创业者,天然的要把自己打造成一个full stack engineer,而这个过程中,这些Python工具包给自己提供了足够的火力,所以想起了这个系列。当然,这也仅仅是抛砖引玉,希望大家能提供更多的线索,来汇总整理一套Python网页爬虫,文本处理,科学计算,机器学习和数据挖掘的兵器谱。

一、Python网页爬虫工具集

一个真实的项目,一定是从获取数据开始的。无论文本处理,机器学习和数据挖掘,都需要数据,除了通过一些渠道购买或者下载的专业数据外,常常需要大家自己动手爬数据,这个时候,爬虫就显得格外重要了,幸好,Python提供了一批很不错的网页爬虫工具框架,既能爬取数据,也能获取和清洗数据,我们也就从这里开始了:

1. Scrapy

Scrapy, a fast high-level screen scraping and web crawling framework for Python.

鼎鼎大名的Scrapy,相信不少同学都有耳闻,课程图谱中的很多课程都是依靠Scrapy抓去的,这方面的介绍文章有很多,推荐大牛pluskid早年的一篇文章:《Scrapy 轻松定制网络爬虫》,历久弥新。

官方主页:http://scrapy.org/
Github代码页: https://github.com/scrapy/scrapy

2. Beautiful Soup

You didn’t write that awful page. You’re just trying to get some data out of it. Beautiful Soup is here to help. Since 2004, it’s been saving programmers hours or days of work on quick-turnaround screen scraping projects.

读书的时候通过《集体智慧编程》这本书知道Beautiful Soup的,后来也偶尔会用用,非常棒的一套工具。客观的说,Beautifu Soup不完全是一套爬虫工具,需要配合urllib使用,而是一套HTML/XML数据分析,清洗和获取工具。

官方主页:http://www.crummy.com/software/BeautifulSoup/

3. Python-Goose

Html Content / Article Extractor, web scrapping lib in Python

Goose最早是用Java写得,后来用Scala重写,是一个Scala项目。Python-Goose用Python重写,依赖了Beautiful Soup。前段时间用过,感觉很不错,给定一个文章的URL, 获取文章的标题和内容很方便。

Github主页:https://github.com/grangier/python-goose

二、Python文本处理工具集

从网页上获取文本数据之后,依据任务的不同,就需要进行基本的文本处理了,譬如对于英文来说,需要基本的tokenize,对于中文,则需要常见的中文分词,进一步的话,无论英文中文,还可以词性标注,句法分析,关键词提取,文本分类,情感分析等等。这个方面,特别是面向英文领域,有很多优秀的工具包,我们一一道来。

1. NLTK — Natural Language Toolkit

NLTK is a leading platform for building Python programs to work with human language data. It provides easy-to-use interfaces to over 50 corpora and lexical resources such as WordNet, along with a suite of text processing libraries for classification, tokenization, stemming, tagging, parsing, and semantic reasoning, and an active discussion forum.

搞自然语言处理的同学应该没有人不知道NLTK吧,这里也就不多说了。不过推荐两本书籍给刚刚接触NLTK或者需要详细了解NLTK的同学: 一个是官方的《Natural Language Processing with Python》,以介绍NLTK里的功能用法为主,同时附带一些Python知识,同时国内陈涛同学友情翻译了一个中文版,这里可以看到:推荐《用Python进行自然语言处理》中文翻译-NLTK配套书;另外一本是《Python Text Processing with NLTK 2.0 Cookbook》,这本书要深入一些,会涉及到NLTK的代码结构,同时会介绍如何定制自己的语料和模型等,相当不错。

官方主页:http://www.nltk.org/
Github代码页:https://github.com/nltk/nltk

2. Pattern

Pattern is a web mining module for the Python programming language.

It has tools for data mining (Google, Twitter and Wikipedia API, a web crawler, a HTML DOM parser), natural language processing (part-of-speech taggers, n-gram search, sentiment analysis, WordNet), machine learning (vector space model, clustering, SVM), network analysis and canvas visualization.

Pattern由比利时安特卫普大学CLiPS实验室出品,客观的说,Pattern不仅仅是一套文本处理工具,它更是一套web数据挖掘工具,囊括了数据抓取模块(包括Google, Twitter, 维基百科的API,以及爬虫和HTML分析器),文本处理模块(词性标注,情感分析等),机器学习模块(VSM, 聚类,SVM)以及可视化模块等,可以说,Pattern的这一整套逻辑也是这篇文章的组织逻辑,不过这里我们暂且把Pattern放到文本处理部分。我个人主要使用的是它的英文处理模块Pattern.en, 有很多很不错的文本处理功能,包括基础的tokenize, 词性标注,句子切分,语法检查,拼写纠错,情感分析,句法分析等,相当不错。

官方主页:http://www.clips.ua.ac.be/pattern

3. TextBlob: Simplified Text Processing

TextBlob is a Python (2 and 3) library for processing textual data. It provides a simple API for diving into common natural language processing (NLP) tasks such as part-of-speech tagging, noun phrase extraction, sentiment analysis, classification, translation, and more.

TextBlob是一个很有意思的Python文本处理工具包,它其实是基于上面两个Python工具包NLKT和Pattern做了封装(TextBlob stands on the giant shoulders of NLTK and pattern, and plays nicely with both),同时提供了很多文本处理功能的接口,包括词性标注,名词短语提取,情感分析,文本分类,拼写检查等,甚至包括翻译和语言检测,不过这个是基于Google的API的,有调用次数限制。TextBlob相对比较年轻,有兴趣的同学可以关注。

官方主页:http://textblob.readthedocs.org/en/dev/
Github代码页:https://github.com/sloria/textblob

4. MBSP for Python

MBSP is a text analysis system based on the TiMBL and MBT memory based learning applications developed at CLiPS and ILK. It provides tools for Tokenization and Sentence Splitting, Part of Speech Tagging, Chunking, Lemmatization, Relation Finding and Prepositional Phrase Attachment.

MBSP与Pattern同源,同出自比利时安特卫普大学CLiPS实验室,提供了Word Tokenization, 句子切分,词性标注,Chunking, Lemmatization,句法分析等基本的文本处理功能,感兴趣的同学可以关注。

官方主页:http://www.clips.ua.ac.be/pages/MBSP

5. Gensim: Topic modeling for humans

Gensim是一个相当专业的主题模型Python工具包,无论是代码还是文档,我们曾经用《如何计算两个文档的相似度》介绍过Gensim的安装和使用过程,这里就不多说了。

官方主页:http://radimrehurek.com/gensim/index.html
github代码页:https://github.com/piskvorky/gensim

6. langid.py: Stand-alone language identification system

语言检测是一个很有意思的话题,不过相对比较成熟,这方面的解决方案很多,也有很多不错的开源工具包,不过对于Python来说,我使用过langid这个工具包,也非常愿意推荐它。langid目前支持97种语言的检测,提供了很多易用的功能,包括可以启动一个建议的server,通过json调用其API,可定制训练自己的语言检测模型等,可以说是“麻雀虽小,五脏俱全”。

Github主页:https://github.com/saffsd/langid.py

7. Jieba: 结巴中文分词

“结巴”中文分词:做最好的Python中文分词组件 “Jieba” (Chinese for “to stutter”) Chinese text segmentation: built to be the best Python Chinese word segmentation module.

好了,终于可以说一个国内的Python文本处理工具包了:结巴分词,其功能包括支持三种分词模式(精确模式、全模式、搜索引擎模式),支持繁体分词,支持自定义词典等,是目前一个非常不错的Python中文分词解决方案。

Github主页:https://github.com/fxsjy/jieba

8. xTAS

xtas, the eXtensible Text Analysis Suite, a distributed text analysis package based on Celery and Elasticsearch.

感谢微博朋友 @大山坡的春 提供的线索:我们组同事之前发布了xTAS,也是基于python的text mining工具包,欢迎使用,链接:http://t.cn/RPbEZOW。看起来很不错的样子,回头试用一下。

Github代码页:https://github.com/NLeSC/xtas

三、Python科学计算工具包

说起科学计算,大家首先想起的是Matlab,集数值计算,可视化工具及交互于一身,不过可惜是一个商业产品。开源方面除了GNU Octave在尝试做一个类似Matlab的工具包外,Python的这几个工具包集合到一起也可以替代Matlab的相应功能:NumPy+SciPy+Matplotlib+iPython。同时,这几个工具包,特别是NumPy和SciPy,也是很多Python文本处理 & 机器学习 & 数据挖掘工具包的基础,非常重要。最后再推荐一个系列《用Python做科学计算》,将会涉及到NumPy, SciPy, Matplotlib,可以做参考。

1. NumPy

NumPy is the fundamental package for scientific computing with Python. It contains among other things:
1)a powerful N-dimensional array object
2)sophisticated (broadcasting) functions
3)tools for integrating C/C++ and Fortran code
4) useful linear algebra, Fourier transform, and random number capabilities

Besides its obvious scientific uses, NumPy can also be used as an efficient multi-dimensional container of generic data. Arbitrary data-types can be defined. This allows NumPy to seamlessly and speedily integrate with a wide variety of databases.

NumPy几乎是一个无法回避的科学计算工具包,最常用的也许是它的N维数组对象,其他还包括一些成熟的函数库,用于整合C/C++和Fortran代码的工具包,线性代数、傅里叶变换和随机数生成函数等。NumPy提供了两种基本的对象:ndarray(N-dimensional array object)和 ufunc(universal function object)。ndarray是存储单一数据类型的多维数组,而ufunc则是能够对数组进行处理的函数。

官方主页:http://www.numpy.org/

2. SciPy:Scientific Computing Tools for Python

SciPy refers to several related but distinct entities:

1)The SciPy Stack, a collection of open source software for scientific computing in Python, and particularly a specified set of core packages.
2)The community of people who use and develop this stack.
3)Several conferences dedicated to scientific computing in Python – SciPy, EuroSciPy and SciPy.in.
4)The SciPy library, one component of the SciPy stack, providing many numerical routines.

“SciPy是一个开源的Python算法库和数学工具包,SciPy包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。其功能与软件MATLAB、Scilab和GNU Octave类似。 Numpy和Scipy常常结合着使用,Python大多数机器学习库都依赖于这两个模块。”—-引用自“Python机器学习库”

官方主页:http://www.scipy.org/

3. Matplotlib

matplotlib is a python 2D plotting library which produces publication quality figures in a variety of hardcopy formats and interactive environments across platforms. matplotlib can be used in python scripts, the python and ipython shell (ala MATLAB®* or Mathematica®†), web application servers, and six graphical user interface toolkits.

matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。Matplotlib可以配合ipython shell使用,提供不亚于Matlab的绘图体验,总之用过了都说好。

官方主页:http://matplotlib.org/

4. iPython

IPython provides a rich architecture for interactive computing with:

1)Powerful interactive shells (terminal and Qt-based).
2)A browser-based notebook with support for code, text, mathematical expressions, inline plots and other rich media.
3)Support for interactive data visualization and use of GUI toolkits.
4)Flexible, embeddable interpreters to load into your own projects.
5)Easy to use, high performance tools for parallel computing.

“iPython 是一个Python 的交互式Shell,比默认的Python Shell 好用得多,功能也更强大。 她支持语法高亮、自动完成、代码调试、对象自省,支持 Bash Shell 命令,内置了许多很有用的功能和函式等,非常容易使用。 ” 启动iPython的时候用这个命令“ipython –pylab”,默认开启了matploblib的绘图交互,用起来很方便。

官方主页:http://ipython.org/

四、Python 机器学习 & 数据挖掘 工具包

机器学习和数据挖掘这两个概念不太好区分,这里就放到一起了。这方面的开源Python工具包有很多,这里先从熟悉的讲起,再补充其他来源的资料,也欢迎大家补充。

1. scikit-learn: Machine Learning in Python

scikit-learn (formerly scikits.learn) is an open source machine learning library for the Python programming language. It features various classification, regression and clustering algorithms including support vector machines, logistic regression, naive Bayes, random forests, gradient boosting, k-means and DBSCAN, and is designed to interoperate with the Python numerical and scientific libraries NumPy and SciPy.

首先推荐大名鼎鼎的scikit-learn,scikit-learn是一个基于NumPy, SciPy, Matplotlib的开源机器学习工具包,主要涵盖分类,回归和聚类算法,例如SVM, 逻辑回归,朴素贝叶斯,随机森林,k-means等算法,代码和文档都非常不错,在许多Python项目中都有应用。例如在我们熟悉的NLTK中,分类器方面就有专门针对scikit-learn的接口,可以调用scikit-learn的分类算法以及训练数据来训练分类器模型。这里推荐一个视频,也是我早期遇到scikit-learn的时候推荐过的:推荐一个Python机器学习工具包Scikit-learn以及相关视频–Tutorial: scikit-learn – Machine Learning in Python

官方主页:http://scikit-learn.org/

2. Pandas: Python Data Analysis Library

Pandas is a software library written for the Python programming language for data manipulation and analysis. In particular, it offers data structures and operations for manipulating numerical tables and time series.

第一次接触Pandas是由于Udacity上的一门数据分析课程“Introduction to Data Science” 的Project需要用Pandas库,所以学习了一下Pandas。Pandas也是基于NumPy和Matplotlib开发的,主要用于数据分析和数据可视化,它的数据结构DataFrame和R语言里的data.frame很像,特别是对于时间序列数据有自己的一套分析机制,非常不错。这里推荐一本书《Python for Data Analysis》,作者是Pandas的主力开发,依次介绍了iPython, NumPy, Pandas里的相关功能,数据可视化,数据清洗和加工,时间数据处理等,案例包括金融股票数据挖掘等,相当不错。

官方主页:http://pandas.pydata.org/

=====================================================================
分割线,以上工具包基本上都是自己用过的,以下来源于其他同学的线索,特别是《Python机器学习库》,《23个python的机器学习包》,做了一点增删修改,欢迎大家补充
=====================================================================

3. mlpy – Machine Learning Python

mlpy is a Python module for Machine Learning built on top of NumPy/SciPy and the GNU Scientific Libraries.

mlpy provides a wide range of state-of-the-art machine learning methods for supervised and unsupervised problems and it is aimed at finding a reasonable compromise among modularity, maintainability, reproducibility, usability and efficiency. mlpy is multiplatform, it works with Python 2 and 3 and it is Open Source, distributed under the GNU General Public License version 3.

官方主页:http://mlpy.sourceforge.net/

4. MDP:The Modular toolkit for Data Processing

Modular toolkit for Data Processing (MDP) is a Python data processing framework.
From the user’s perspective, MDP is a collection of supervised and unsupervised learning algorithms and other data processing units that can be combined into data processing sequences and more complex feed-forward network architectures.
From the scientific developer’s perspective, MDP is a modular framework, which can easily be expanded. The implementation of new algorithms is easy and intuitive. The new implemented units are then automatically integrated with the rest of the library.
The base of available algorithms is steadily increasing and includes signal processing methods (Principal Component Analysis, Independent Component Analysis, Slow Feature Analysis), manifold learning methods ([Hessian] Locally Linear Embedding), several classifiers, probabilistic methods (Factor Analysis, RBM), data pre-processing methods, and many others.

“MDP用于数据处理的模块化工具包,一个Python数据处理框架。 从用户的观点,MDP是能够被整合到数据处理序列和更复杂的前馈网络结构的一批监督学习和非监督学习算法和其他数据处理单元。计算依照速度和内存需求而高效的执行。从科学开发者的观点,MDP是一个模块框架,它能够被容易地扩展。新算法的实现是容易且直观的。新实现的单元然后被自动地与程序库的其余部件进行整合。MDP在神经科学的理论研究背景下被编写,但是它已经被设计为在使用可训练数据处理算法的任何情况中都是有用的。其站在用户一边的简单性,各种不同的随时可用的算法,及应用单元的可重用性,使得它也是一个有用的教学工具。”

官方主页:http://mdp-toolkit.sourceforge.net/

5. PyBrain

PyBrain is a modular Machine Learning Library for Python. Its goal is to offer flexible, easy-to-use yet still powerful algorithms for Machine Learning Tasks and a variety of predefined environments to test and compare your algorithms.

PyBrain is short for Python-Based Reinforcement Learning, Artificial Intelligence and Neural Network Library. In fact, we came up with the name first and later reverse-engineered this quite descriptive “Backronym”.

“PyBrain(Python-Based Reinforcement Learning, Artificial Intelligence and Neural Network)是Python的一个机器学习模块,它的目标是为机器学习任务提供灵活、易应、强大的机器学习算法。(这名字很霸气)

PyBrain正如其名,包括神经网络、强化学习(及二者结合)、无监督学习、进化算法。因为目前的许多问题需要处理连续态和行为空间,必须使用函数逼近(如神经网络)以应对高维数据。PyBrain以神经网络为核心,所有的训练方法都以神经网络为一个实例。”

官方主页:http://www.pybrain.org/

6. PyML – machine learning in Python

PyML is an interactive object oriented framework for machine learning written in Python. PyML focuses on SVMs and other kernel methods. It is supported on Linux and Mac OS X.

“PyML是一个Python机器学习工具包,为各分类和回归方法提供灵活的架构。它主要提供特征选择、模型选择、组合分类器、分类评估等功能。”

项目主页:http://pyml.sourceforge.net/

7. Milk:Machine learning toolkit in Python.

Its focus is on supervised classification with several classifiers available:
SVMs (based on libsvm), k-NN, random forests, decision trees. It also performs
feature selection. These classifiers can be combined in many ways to form
different classification systems.

“Milk是Python的一个机器学习工具箱,其重点是提供监督分类法与几种有效的分类分析:SVMs(基于libsvm),K-NN,随机森林经济和决策树。它还可以进行特征选择。这些分类可以在许多方面相结合,形成不同的分类系统。对于无监督学习,它提供K-means和affinity propagation聚类算法。”

官方主页:http://luispedro.org/software/milk

http://luispedro.org/software/milk

8. PyMVPA: MultiVariate Pattern Analysis (MVPA) in Python

PyMVPA is a Python package intended to ease statistical learning analyses of large datasets. It offers an extensible framework with a high-level interface to a broad range of algorithms for classification, regression, feature selection, data import and export. It is designed to integrate well with related software packages, such as scikit-learn, and MDP. While it is not limited to the neuroimaging domain, it is eminently suited for such datasets. PyMVPA is free software and requires nothing but free-software to run.

“PyMVPA(Multivariate Pattern Analysis in Python)是为大数据集提供统计学习分析的Python工具包,它提供了一个灵活可扩展的框架。它提供的功能有分类、回归、特征选择、数据导入导出、可视化等”

官方主页:http://www.pymvpa.org/

9. Pyrallel – Parallel Data Analytics in Python

Experimental project to investigate distributed computation patterns for machine learning and other semi-interactive data analytics tasks.

“Pyrallel(Parallel Data Analytics in Python)基于分布式计算模式的机器学习和半交互式的试验项目,可在小型集群上运行”

Github代码页:http://github.com/pydata/pyrallel

10. Monte – gradient based learning in Python

Monte (python) is a Python framework for building gradient based learning machines, like neural networks, conditional random fields, logistic regression, etc. Monte contains modules (that hold parameters, a cost-function and a gradient-function) and trainers (that can adapt a module’s parameters by minimizing its cost-function on training data).

Modules are usually composed of other modules, which can in turn contain other modules, etc. Gradients of decomposable systems like these can be computed with back-propagation.

“Monte (machine learning in pure Python)是一个纯Python机器学习库。它可以迅速构建神经网络、条件随机场、逻辑回归等模型,使用inline-C优化,极易使用和扩展。”

官方主页:http://montepython.sourceforge.net

11. Theano

Theano is a Python library that allows you to define, optimize, and evaluate mathematical expressions involving multi-dimensional arrays efficiently. Theano features:
1)tight integration with NumPy – Use numpy.ndarray in Theano-compiled functions.
2)transparent use of a GPU – Perform data-intensive calculations up to 140x faster than with CPU.(float32 only)
3)efficient symbolic differentiation – Theano does your derivatives for function with one or many inputs.
4)speed and stability optimizations – Get the right answer for log(1+x) even when x is really tiny.
5)dynamic C code generation – Evaluate expressions faster.
6) extensive unit-testing and self-verification – Detect and diagnose many types of mistake.
Theano has been powering large-scale computationally intensive scientific investigations since 2007. But it is also approachable enough to be used in the classroom (IFT6266 at the University of Montreal).

“Theano 是一个 Python 库,用来定义、优化和模拟数学表达式计算,用于高效的解决多维数组的计算问题。Theano的特点:紧密集成Numpy;高效的数据密集型GPU计算;高效的符号微分运算;高速和稳定的优化;动态生成c代码;广泛的单元测试和自我验证。自2007年以来,Theano已被广泛应用于科学运算。theano使得构建深度学习模型更加容易,可以快速实现多种模型。PS:Theano,一位希腊美女,Croton最有权势的Milo的女儿,后来成为了毕达哥拉斯的老婆。”

12. Pylearn2

Pylearn2 is a machine learning library. Most of its functionality is built on top of Theano. This means you can write Pylearn2 plugins (new models, algorithms, etc) using mathematical expressions, and theano will optimize and stabilize those expressions for you, and compile them to a backend of your choice (CPU or GPU).

“Pylearn2建立在theano上,部分依赖scikit-learn上,目前Pylearn2正处于开发中,将可以处理向量、图像、视频等数据,提供MLP、RBM、SDA等深度学习模型。”

官方主页:http://deeplearning.net/software/pylearn2/

其他的,欢迎大家补充,这里也会持续更新这篇文章。

注:原创文章,转载请注明出处“我爱自然语言处理”:www.52nlp.cn

本文链接地址:http://www.52nlp.cn/python-网页爬虫-文本处理-科学计算-机器学习-数据挖掘

转载: 布热津斯基谈中华帝国一可怕特征

布热津斯基还特别指出,中国有很大的和居于统治地位的种族核心,这就使中国有可能每过一段时间间就能恢复其帝国。在这方面中国与别的帝国大为不同。其他帝国中人口数量少但受霸权主义驱使的民族,能够在一个时期内对人数比之多得多的异族居民强行统治并维系这种统治。可是,这类核心小的帝国的通知一旦被推翻,再要恢复帝国就不可能了。

柳如是,余秀华还有浅颦

看完了《柳如是》的电影,脑子里映射出余秀华以及浅颦。都是绝佳的女子,按照钱牧斋的说法(或应是牧斋借如是的诗句)———— “桃花得气没人中”。还想起了我在金陵的日子,秦淮河畔和昆曲小调。 钱牧斋的思想是深厚的,不是任一个激进的爱国主义者所能够理解,特别是当时的情境,恐柳如是对他降清的做法同是一百个想不明白。陈子龙想的是前朝,而钱牧斋念的是传承文道。子龙以身殉国在当世留得美名,而牧斋降清遭人唾骂,位“江南四不肖”之首,但从捍守文脉的角度来讲,功不可没。

附:黄梨洲和钱牧斋是好友,我也有幸浅尝梨洲的文章,2010年亲赴余姚吊唁过先生,图若干:


Spark and Hadoop 比较

袁满很早(2012年?)就跟我介绍过spark的威力,以及中科院计算机所有人在利用spark进行空间并行计算。相比hadoop强于多节点的树形工作,Spark强于迭代性的空间邻域运算。从空间思维的角度来说,hadoop来做大数据的空间索引更优秀,而spark在进行邻域计算,比方说插值、kernal density等运算会更好。下面转载了一篇spark和hadoop对比的文章,学习。

对了两者都可以用python来wrapped up, 故编程会更加容易上手。
———

Spark的中间数据放到内存中,对于迭代运算效率比较高。

Spark aims to extend MapReduce for iterative algorithms, and interactive low latency data mining. One major difference between MapReduce and Sparkis that MapReduce is acyclic. That is, data flows in from a stable source, isprocessed, and flows out to a stable filesystem. Spark allows iterative computation on the same data, which would form a cycle if jobs were visualized. (旨在延长MapReduce的迭代算法,和互动低延迟数据挖掘的。 MapReduce和Sparkis的一个主要区别,MapReduce是非周期性。也就是说,数据流从一个稳定的来源,加工,流出到一个稳定的文件系统。“Spark允许相同的数据,这将形成一个周期,如果工作是可视化的迭代计算。)

Spark更适合于迭代运算比较多的ML和DM运算。因为在Spark里面,有RDD的概念。

Resilient Distributed Dataset (RDD) serves as an abstraction to rawdata, and some data is kept in memory and cached for later use. This last pointis very important; Spark allows data to be committed in RAM for an approximate20x speedup over MapReduce based on disks. RDDs are immutable and created through parallel transformations such as map, filter, groupBy and reduce. (弹性分布式数据集(RDD)作为原始数据的抽象,和一些数据保存在内存中缓存供以后使用。最后这点很重要;星火允许在RAM致力于为近似20X基于加速了MapReduce的磁盘上的数据。RDDs是不可改变的,并通过并行转换,如地图,过滤器,GroupBy和减少创建的。)

RDD可以cache到内存中,那么每次对RDD数据集的操作之后的结果,都可以存放到内存中,下一个操作可以直接从内存中输入,省去了MapReduce大量的磁盘IO操作。这对于迭代运算比较常见的机器学习算法来说,效率提升比较大。但是由于Spark目前只是在UC Berkeley的一个研究项目,目前看到的最大规模也就200台机器,没有像Hadoop那样的部署规模,所以,在大规模使用的时候还是要慎重考虑的。

Spark比Hadoop更通用

Spark提供的数据集操作类型有很多种,不像Hadoop只提供了Map和Reduce两种操作。比如map, filter, flatMap,sample, groupByKey, reduceByKey, union, join, cogroup, mapValues, sort,partionBy等多种操作类型,他们把这些操作称为Transformations。同时还提供Count, collect, reduce, lookup, save等多种actions。

这些多种多样的数据集操作类型,给上层应用者提供了方便。各个处理节点之间的通信模型不再像Hadoop那样就是唯一的Data Shuffle一种模式。用户可以命名,物化,控制中间结果的分区等。可以说编程模型比Hadoop更灵活。

不过论文中也提到,Spark不适用那种异步细粒度更新状态的应用,例如web服务的存储或者是增量的web爬虫和索引。就是对于那种增量修改的应用模型,当然不适合把大量数据拿到内存中了。增量改动完了,也就不用了,不需要迭代了。

容错性

从Spark的论文《Resilient Distributed Datasets: AFault-Tolerant Abstraction for In-Memory Cluster Computing》中没看出容错性做的有多好。倒是提到了分布式数据集计算,做checkpoint的两种方式,一个是checkpoint data,一个是logging the updates。貌似Spark采用了后者。但是文中后来又提到,虽然后者看似节省存储空间。但是由于数据处理模型是类似DAG的操作过程,由于图中的某个节点出错,由于lineage chains的依赖复杂性,可能会引起全部计算节点的重新计算,这样成本也不低。他们后来说,是存数据,还是存更新日志,做checkpoint还是由用户说了算吧。相当于什么都没说,又把这个皮球踢给了用户。所以我看就是由用户根据业务类型,衡量是存储数据IO和磁盘空间的代价和重新计算的代价,选择代价较小的一种策略。

关于Spark和Hadoop的融合

不知道Apache基金会的人怎么想的,我看Spark还是应该融入到Hadoop生态系统中。从Hadoop 0.23把MapReduce做成了库,看出Hadoop的目标是要支持包括MapReduce在内的更多的并行计算模型,比如MPI,Spark等。毕竟现在Hadoop的单节点CPU利用率并不高,那么假如这种迭代密集型运算是和现有平台的互补。同时,这对资源调度系统就提出了更高的要求。有关资源调度方面,UC Berkeley貌似也在做一个Mesos的东西,还用了Linux container,统一调度Hadoop和其他应用模型。

转载自:http://tech.it168.com/a2012/0401/1333/000001333287.shtml
同时,推荐:
http://tech.it168.com/d/2008-01-18/200801180027277.shtml (列举了hadoop相关构架的模型)

吕晓宁:西安近代三次大移民

转载自:http://www.inxian.com/20120113/38384  作者:吕晓宁

我在西安生活了多半辈子,户口和身份证都写着我在西安的居住处,我其实已经是西安人了。

尽管在西安生活了四十余年,但我仍然不能完全融入这个城市。

首先,我的西安话就不地道,哄哄外地人还可以,本地人一听就知你是外来户。前些日子在广州,问起我的西安话为什么不地道。我说,陕西话或西安话,和任何地方的方言一样,都有一个根,虽然我的陕西话不地道,但我都能分辨出来别人说的是关中哪儿的话。

正宗的西安话,是西大街的话,就是坊上的话。城南,特别是长安县的话,就与西安城里的话不一样。陕西关中以西安为界,分西府宝鸡和东府渭南,这两地的话也与西安话不一样。地道的陕西人都有一个明确的出生或生活地,他的话有一个具体地方的根。而我的话,却是西安和陕西关中各处话的一个大杂绘,地道的西安人一听就知道你的话没根,不是正宗的西安人或老陕。 继续阅读吕晓宁:西安近代三次大移民

中国战略与管理研究会

  中国战略与管理研究会(简称中战会),也叫中国战略研究委员会,是全国性的综合战略研究机构。中战会为国家提供决策咨询和政策建议,与国内外有关政府机构、学术团体、非政府组织等建立有良好的合作关系,在国际社会享有“中国的战略智囊库”之称,在民间外交领域发挥着重要作用。其主办的《战略与管理》杂志,被国际社会誉为“东方的《外交事务》”。
  中战会名誉会长为开国上将萧克,会长为前副总理谷牧,高级顾问包括袁宝华、杜润生、澳洲前总理霍克、菲律宾前总统拉莫斯、日本前首相羽田孜、意大利前总理德米凯利斯等。中战会委员不但有大量权威、学术专家,还有中国各行业的优秀企业家,比如饮料行业的娃哈哈老总宗庆后、IT行业的阿里巴巴主席马云、电器行业的海尔CEO张润敏、化妆品行业的中佳信集团总裁良也、乳作品行业蒙牛主席牛根生、培训界的新东方总裁俞敏洪等等,目前,中战会课题组研究人员已发展到400余人,重大课题130余个,与海内外政治、经济和文化高层精英建立了广泛合作关系。
  中战会通过活跃的学术实践、立法提案、民间外交推动社会的改革与进步,对中国的经济发展、现代化进程、司法体制改革和政治体制进步发挥过重要作用。成功举办过“未来十年东亚合作与发展”、“未来东亚合作与安全”等国际研讨会,发起多次北京及全国历史文化名城保护活动。2005年8月,为纪念反法西斯战争胜利六十周年,与美国大使馆共同举办了“中美民间外交与战略同盟关系回顾学术研讨会”,积极增进中美互信。2006年2月,与人民日报海外版联合主办了“21世纪中国城镇化发展战略论坛”。产生的影响遍及海内外。

http://www.cssm.org.cn/html/index_gyzzh.html

全球十六条战略水道

冷战结束后,世界各国海军日益壮大,美国实施“全面制海”战略已十分困难。于是,自20世纪80年代开始,美军寻求“海上控制”,以图掌握全球16条海上要道,确保战时能封锁他国海上航运和海军力量,维护美军的航道,进而挤压、威胁敌国。 美国对海洋的控制,是通过庞大的军事基地网实现的。目前,美军在太平洋区域有完整的三线基地网,在大西洋区域建有完备的二线基地网。美军的意图是,战时通过控制全球16条海上要道,赢得对各大洋的控制权。

全球十六条战略要道:

在全球16条海上咽喉要道中,大西洋有7条:加勒比海和北美的航道、佛罗里达海峡、斯卡格拉克海峡、卡特加特海峡、好望角航线、巴拿马运河、格陵兰—冰岛—联合王国海峡;地中海有两条:直布罗陀海峡和苏伊士运河;印度洋有两条:霍尔木兹海峡和曼德海峡。

位于挪威与丹麦之间的斯卡格拉克海峡和位于瑞典与丹麦之间的卡特加特海峡是波罗的海通往北海和大西洋的门户,也是俄罗斯波罗的海舰队出入大西洋的惟一通道。一旦控制了这两个海峡,也就等于掐住了俄波罗的海舰队的命脉,迫使其成为一支内海防御型舰队。格陵兰—冰岛—联合王国海峡包括丹麦海峡和冰岛与英伦三岛之间的水道,是俄罗斯实力最为强大的北方舰队进入大西洋的必经之地。美军在它附近建有多个大型海、空军基地,战时可以有效地封锁俄北方舰队,使其很难进入大西洋。 继续阅读全球十六条战略水道

任正非:一江春水向东流

千古兴亡多少事,一江春水向东流。

小时候,妈妈给我们讲希腊大力神的故事,我们崇拜得不得了。少年不知事的时期我们崇拜上李元霸、宇文成都这种盖世英雄,传播着张飞“杀”(争斗)岳飞的荒诞故事。在青春萌动的时期,突然敏感到李清照的千古情人是力拔山兮的项羽。至此“生当作人杰,死亦为鬼雄”又成了我们的人生警句。当然这种个人英雄主义,也不是没有意义,它迫使我们在学习上争斗,成就了较好的成绩。

当我走向社会,多少年后才知道,我碰到头破血流的,就是这种不知事的人生哲学。我大学没入了团,当兵多年没入了党,处处都处在人生逆境,个人很孤立,当我明白团结就是力量这句话的政治内涵时,已过了不惑之年。想起蹉跎了的岁月,才觉得,怎么会这么幼稚可笑,一点都不明白开放、妥协、灰度呢? 继续阅读任正非:一江春水向东流

保罗•肯尼迪:给奥巴马上一堂历史课

统治就是选择。

这是17、18世纪法国外交官留下的具有讽刺意味的名言。在他们看来,在一个混乱无序的国际社会里,选择重点相当不易。各国的统治者们——即使他们看似强大且处于优势地位——常常发现,自己不得不做出艰难选择。因此,及早考虑自己能够承受多大的重担,或许是更为聪明的做法。一位即将上任的亲王,或者一位议会制政府的新任首脑,或许会得到这样的建议:不宜一边全力追击国外恶势力,一边又在国内实施太多改革计划。决定取消——或者至少显著淡化——自己继承的某项政策,其实可能起到强化领导力的作用,因为它为推行其它雄心勃勃的计划留出了空间和精力。选择你的战斗和战场吧。

战线不宜太长

换句话说,不宜把战线铺得太开。在奥巴马任期的第一年,我常想到这条具有普遍意义的审慎原则。奥巴马难道真的认为,他可以在医疗、教育、气候变化、国家财政和税收领域推行重大改革,同时赢得伊拉克和阿富汗战争的胜利?如果由于华盛顿分散精力,导致了一无所长、各方面都很薄弱——或者大打折扣,或者目标仅实现了一半,甚或遭到失败——的惨淡结局,那该如何是好呢? 继续阅读保罗•肯尼迪:给奥巴马上一堂历史课

战略机遇期:回顾与反思

2001年的“9•11”事件,除去被赋予的其他若干历史意义,也是中国“和平崛起”过程中的一个重要的时间坐标。在此之前,如前“美国全球领导地位项目”负责人罗伯特•卡恩后来透露的,“美国战略圈已经把矛头对准了中国。”我们都还记得,克林顿总统任内,美军(北约)1999年5月7日轰炸中国驻南联盟使馆。小布什上任之初,对中国的敌意正浓,宣称武力保护台湾,2001年4月1日,中美南海撞机,两国关系骤然紧张。
5个多月后,基地组织袭击美国,美国随即将矛头调转中东,国际局势也由此进入一个新的阶段。在这个背景下,2002年的中共16大提出,21世纪头20年“是一个必须紧紧抓住并且可以大有作为的重要战略机遇期”。2010年,十七届五中全会延续这一判断,认为“我国发展仍处于可以大有作为的重要战略机遇期”。
过去10年,中国埋头发展经济,“和平崛起”,可以说取得了巨大成就。但今天,是时候提出这两个问题了:中国的战略机遇期结束了吗?中国抓住了这难得的战略机遇期了吗?
“9•11”之后,美国在中东打了两场仗,阿富汗战争和伊拉克战争。这是两场都没真正打赢的战争,但美国已经决意从中抽身出来,将乱局留在了当地。枪口重又调转,美国高姿态重返亚太,直接地说,又瞄准了中国。2011年10月,美国国务卿希拉里•克林顿在《外交政策》杂志发表长文《美国的太平洋世纪》,亮出立场:“未来的政治将决定于亚洲,而不是阿富汗或伊拉克。美国将置身于行动的中心……今后10 年美国外交方略的最重要使命之一将是把大幅增加的投入—在外交、经济、战略和其他方面—锁定于亚太地区。”美国介入南海争端,希拉里11月16日登上马尼拉湾的美国战舰,并称南海为“西菲律宾海”。 继续阅读战略机遇期:回顾与反思

追寻“继续启蒙”和“反思启蒙”的平衡

20世纪中国的政治革命、思想革命、文化革命运动都与启蒙运动的遗产结下了不解之缘,而近30年来的中国改革,则是以告别革命、斗争为基调,致力经济发展,重建社会和谐。因此,今天的中国不仅要重新思考“什么是启蒙”,也需要对启蒙进行反思,以建立起“继续启蒙”和“反思启蒙”的平衡。

特别值得指出的是,德国启蒙运动的发起针对的是宗教压制自由思想和自由批评,1780年代的德国,门德尔松和康德先后回答了“什么是启蒙”的问题,康德的论文针对宗教和检查制度,强调理性的公共使用应当不受限制,力求把思想从神学和教会的监查下解放出来,要求的是“思想上的自由”。而20世纪中国的文化启蒙运动,以针对儒家的道德传统为特色,“五四”新文化运动在反对君主专制之外,强烈批判中国儒家的道德传统,突出的是“道德上的自由”。中国启蒙运动对道德权威的破坏,使人们不再珍惜传统,忽视了社会价值体系、道德风俗和社会凝聚力对共同体的作用,这使得在欧洲启蒙运动中被推崇为以自然理性为基础的儒家道德体系在中国近代启蒙中却被视为封建礼教,儒学由欧洲启蒙的助缘变而为启蒙的对象。今天,要重建中国社会的伦理和道德体系,重新认识儒学的道德传统,需要对一元化的启蒙思维作出检讨。 继续阅读追寻“继续启蒙”和“反思启蒙”的平衡