Python

Python NLP入门教程

本文简要介绍Python自然语言处理(NLP),使用Python的NLTK库。NLTK是Python的自然语言处理工具包,在NLP领域中,最常使用的一个Python库。

什么是NLP?
简单来说,自然语言处理(NLP)就是开发能够理解人类语言的应用程序或服务。

这里讨论一些自然语言处理(NLP)的实际应用例子,如语音识别、语音翻译、理解完整的句子、理解匹配词的同义词,以及生成语法正确完整句子和段落。

这并不是NLP能做的所有事情。

NLP实现
搜索引擎: 比如谷歌,Yahoo等。谷歌搜索引擎知道你是一个技术人员,所以它显示与技术相关的结果;

社交网站推送:比如Facebook News Feed。如果News Feed算法知道你的兴趣是自然语言处理,就会显示相关的广告和帖子。

语音引擎:比如Apple的Siri。

垃圾邮件过滤:如谷歌垃圾邮件过滤器。和普通垃圾邮件过滤不同,它通过了解邮件内容里面的的深层意义,来判断是不是垃圾邮件。

NLP库
下面是一些开源的自然语言处理库(NLP):

  • Natural language toolkit (NLTK);
  • Apache OpenNLP;
  • Python爬虫的工具列表大全

    这个列表包含与网页抓取和数据处理的Python库。

    网络

    通用

    urllib -网络库(stdlib)。

    requests -网络库。

    grab – 网络库(基于pycurl)。

    pycurl – 网络库(绑定libcurl)。

    urllib3 – Python HTTP库,安全连接池、支持文件post、可用性高。

    httplib2 – 网络库。

    RoboBrowser – 一个简单的、极具Python风格的Python库,无需独立的浏览器即可浏览网页。

    MechanicalSoup -一个与网站自动交互Python库。

    mechanize -有状态、可编程的Web浏览库。

    socket – 底层网络接口(stdlib)。

    Unirest for Python – Unirest是一套可用于多种语言的轻量级的HTTP库。

    hyper – Python的HTTP/2客户端。

    PySocks – SocksiPy更新并积极维护的版本,包括错误修复和一些其他的特征。作为socket模块的直接替换。

    异步

    treq – 类似于requests的API(基于twisted)。

    7步让你从零开始掌握Python机器学习

    这篇文章旨在通过7个步骤,将最少的机器学习知识转化为知识型实践者,所有这一切都在使用免费的材料和资源。这个大纲的主要目标是帮助你通过许多可用的免费选项; 有很多,可以肯定的,但哪些是最好的?哪个互补?使用所选资源的最佳顺序是什么?

    首先,我假设你并不是以下方面的专家:

  • 机器学习
  • Python
  • 任何 Python 的机器学习、科学计算或数据分析库
  • 如果你对前两个主题有一定程度的基本了解就更好了,不了解也没有关系,提前花一点点时间了解一下就行了。

    第一步:基本 Python 技能

    如果你打算利用 Python 来执行机器学习,那么对 Python 有一些基本的了解就是至关重要的。幸运的是,Python 是一种得到了广泛使用的通用编程语言,加上其在科学计算和机器学习领域的应用,所以找到一个初学者教程并不十分困难。你在 Python 和编程上的经验水平对于起步而言是至关重要的。

    使用 Python 开始机器学习

    目前机器学习红遍全球。男女老少都在学机器学习模型,分类器,神经网络和吴恩达。你也想成为一份子,但你该如何开始?

    在这篇文章中我们会讲Python的重要特征和它适用于机器学习的原因,介绍一些重要的机器学习包,以及其他你可以获取更详细资源的地方。

    为什么用Python做机器学习
    Python很适合用于机器学习。首先,它很简单。如果你完全不熟悉Python但是有一些其他的编程经验(C或者其他编程语言),要上手是很快的。其次,Python的社区很强大。这使得Python的文档不仅条理性好,而且容易读。你还可以在StackOverFlow上找到关于很多问题详细解答(学习基石)。再次,一个强大的社区带来的副产品就是大量有用程序库(Python内部自带的和第三方软件),基本上可以解决你所有的问题(包括机器学习)。

    但我听说Python很慢
    Python是很慢。它不是执行最快的语言,拥有那么多好用的抽象是要付出代价的。

    但这是个可以解决的问题:程序库可以把计算量繁重的部分外包给其他更高效(但更难使用)的语言,例如C和C++。比如NumPy这个提供数值运算的程序库,就是用C写的,运行速度超快。在实际运用中,几乎所有程序库都会使用NumPy去完成计算繁重的部分。如果你看到Numpy,你应该想到它很快。

    三种决策树算法(ID3, CART, C4.5)及Python实现

    作者:应兆康

    1. 决策树(Decision Tree)简介
    1.1. 决策树的原理
    决策树是属于机器学习监督学习分类算法中比较简单的一种,决策树是一个预测模型;他代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每个叶结点则对应从根节点到该叶节点所经历的路径所表示的对象的值。决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输出。 是通过一系列规则对数据进行分类的过程。

    示例: 一个周末是否出去玩的例子

    决策树即是将数据集转换成树形的结构,如下:

    10个Python面试常问的问题

    Python是个非常受欢迎的编程语言,随着近些年机器学习、云计算等技术的发展,Python的职位需求越来越高。下面我收集了10个Python面试官经常问的问题,供大家参考学习。

    1、类继承

    有如下的一段代码:
    class A(object):
    def show(self):
    print 'base show'

    class B(A):
    def show(self):
    print 'derived show'

    obj = B()
    obj.show()

    如何调用类A的show方法了。

    方法如下:
    obj.__class__ = Aobj.show()

    __class__方法指向了类对象,只用给他赋值类型A,然后调用方法show,但是用完了记得修改回来。

    2、方法对象

    问题:为了让下面这段代码运行,需要增加哪些代码?
    class A(object):
    def __init__(self,a,b):
    self.__a = a
    self.__b = b
    def myprint(self):
    print 'a=', self.__a, 'b=', self.__b

    a1=A(10,20)

    Python中常见运算符重载方法

    在类中,对内置对象(例如:整数和列表)所能做的事,几乎都有相应的特殊名称的重载方法。最常见的就是重载类的构造函数(__init__函数)

    方法 重构 调用
    __init__ 构造函数 对象建立:X = Class(args)
    __del__ 析构函数 X对象收回
    __add__ 运算符+ 如果没有_iadd_, X + Y, X += Y
    __or__ 运算符|(位OR)

    Python语言相关术语汇总

    刚接触Python的朋友应该会感觉到有很多新的名词,很多不知道是干什么用的。这里我把平时收集的跟Python语言相关的一些术语汇总起来供大家参考。

    术语汇总
    1. Python: 一种面向对象,解释型计算机程序设计语言。Python是Google公司使用的最主要的三种语言之一(其他两种为C/C++和Java)。目前Python应用越来越广泛,详见: https://www.python.org/

    2. PyPI: 是Python的公共资源库,它管理着Python的相关的各个功能包。它们的关系类似Perl和CPAN,Ruby和RubyGems,PHP和PEAR的关系。详见: https://pypi.python.org/pypi

    3. virtualenv:Virtual Python Environment builder,用户创建独立的Python虚拟运行环境,可以将环境依赖的库隔离开,相互不影响。详见: https://pypi.python.org/pypi/virtualenv

    4. virtualenvwrapper: 是virtualenv工具的一个扩展集,用于增强virtualenv的功能。详见:
    https://pypi.python.org/pypi/virtualenvwrapper

    Python 常用功能模块介绍

    Python除了关键字(keywords)和内置的类型和函数(builtins),更多的功能是通过libraries(即modules)来提供的。

    常用的libraries(modules)如下:

    1)python运行时服务

    * copy: copy模块提供了对复合(compound)对象(list,tuple,dict,custom class)进行浅拷贝和深拷贝的功能。

    * pickle: pickle模块被用来序列化python的对象到bytes流,从而适合存储到文件,网络传输,或数据库存储。(pickle的过程也被称serializing,marshalling或者flattening,pickle同时可以用来将bytes流反序列化为python的对象)。

    * sys:sys模块包含了跟python解析器和环境相关的变量和函数。

    * 其他: atexit,gc,inspect,marshal,traceback,types,warnings,weakref。

    2)数学

    学习用Python编程时要避免的3个错误

    当你做错事时,承认错误并不是一件容易的事,但是犯错是任何学习过程中的一部分,无论是学习走路,还是学习一种新的编程语言都是这样,比如学习 Python。

    为了让初学 Python 的程序员避免犯同样的错误,以下列出了我学习 Python 时犯的三种错误。这些错误要么是我长期以来经常犯的,要么是造成了需要几个小时解决的麻烦。

    年轻的程序员们可要注意了,这些错误是会浪费一下午的!

    1、 可变数据类型作为函数定义中的默认参数

    这似乎是对的?你写了一个小函数,比如,搜索当前页面上的链接,并可选将其附加到另一个提供的列表中。
    def search_for_links(page, add_to=[]):
    new_links = page.search_for_links()
    add_to.extend(new_links)
    return add_to

    从表面看,这像是十分正常的 Python 代码,事实上它也是,而且是可以运行的。但是,这里有个问题。如果我们给 add_to 参数提供了一个列表,它将按照我们预期的那样工作。但是,如果我们让它使用默认值,就会出现一些神奇的事情。

    试试下面的代码:
    def fn(var1, var2=[]):
    var2.append(var1)
    print var2

    同步内容