对Python、机器学习和NLTK库的探索

挑战:使用机器学习对 RSS 提要进行分类

最近,我接到一项任务,要求为客户创建一个 RSS 提要分类子系统。 目标是读取几十个甚至几百个 RSS 提要,将它们的许多文章自动分类到几十个预定义的主题领域当中。客户网站的内容、 导航和搜索功能都将由这个每日自动提要检索和分类结果驱动。

客户建议使用机器学习,或许还会使用 Apache Mahout 和 Hadoop 来实现该任务,因为客户最近阅读了有关这些技术的文章。但是,客户的开发团队和我们的开发团队都 更熟悉 Ruby,而不是 Java 技术。本文将介绍解决方案的技术之旅、学习过程和最终实现。

什么是机器学习?

我的第一个问题是,“究竟什么是机器学习?” 我听说过这个术语,并且隐约知道超级计算机 IBM Watson 最近使 用该技术在一场 Jeopardy 比赛中击败了人类竞争者。作为购物者和社交网络活动参与者,我也知道 Amazon.com 和 Facebook 根据其购物者数据在提供建议(如产品和人)方面表现良好。总之,机器学习取决于 IT、数学和自然语言的交集 。它主要关注以下三个主题,但客户的解决方案最终仅涉及前两个主题:

分类。根据类似项目的一组训练 数据,将相关的项分配到任意预定义的类别

建议。根据类似项目的观察来建议采用的项

集群。在一组数据内确定子组

Mahout 和 Ruby 的选择

理解了机器学习是什么之后,下一步是确 定如何实现它。根据客户的建议,Mahout 是一个合适的起点。我从 Apache 下载了代码,并开始了学习使用 Mahout 及其 兄弟 Hadoop 实现机器学习的过程。不幸的是,我发现即使对于有经验的 Java 开发人员而言,Mahout 的学习曲线也很陡 峭,并且不存在可用的样例代码。同样不幸的是,机器学习缺乏基于 Ruby 的框架或 gem。

发现 Python 和 NLTK

我继续搜索解决方案,并且在结果集中一直遇到 "Python"。作为一名 Ruby 开发人员,虽然我还没 有学过该语言,但我也知道 Python 是一个面向相似对象的、基于文本的、可理解和动态的编程语言。尽管两种语言之间存 在一些相似之处,但我多年来都忽视了学习 Python,将它视为一项多余的技能集。Python 是我的 “盲点”,我怀疑许多 Ruby 开发人员同行都是这样认为的。

搜索机器学习的书籍,并更深入研究它们的目录,我发现,有相当高比例的此 类系统在使用 Python 作为其实现语言,并使用了一个被称为 Natural Language Toolkit(NLTK,自然语言工具包)的库 。通过进一步的搜索,我发现 Python 的应用比我意识到的还要广泛,如 Google App Engine、YouTube 和使用 Django 框 架构建的网站。它甚至还预安装在我每天都使用的 Mac OS X 工作站上!此外,Python 为数学、科学和工程提供了有趣的 标准库(例如,NumPy 和 SciPy)。

我决定推行一个 Python 解决方案,因为我找到了非常好的编码示例。例如, 下面这一行代码就是通过 HTTP 读取 RSS 提要并打印其内容所需的所有代码:

print feedparser.parse("http://feeds.nytimes.com/nyt/rss/Technology")

快速掌握 Python

在学习一门新的编程语言时,最容易的部分往往是学习语言本身。较难的部分是了解它的生态 系统:如何安装它、添加库、编写代码、构造代码文件、执行它、调试它并编写单元测试。本节将简要介绍这些主题;请务 必参阅 参考资料,以获得有关详细信息的链接。

时间: 2024-08-30 13:35:41

对Python、机器学习和NLTK库的探索的相关文章

探索 Python、机器学习和 NLTK 库

简介: 机器学习取决于 IT.数学和自然语言的交集,在大数据应用程序中会通常用到机器学习.本文将讨论 Python 编程语言和它的 NLTK 库,然后将它们应用于一个机器学习项目. 挑战:使用机器学习对 RSS 提要进行分类 最近,我接到一项任务,要求为客户创建一个 RSS 提要分类子系统.目标是读取几十个甚至几百个 RSS 提要,将它们的许多文章自动分类到几十个预定义的主题领域当中.客户网站的内容.导航和搜索功能都将由这个每日自动提要检索和分类结果驱动. 客户建议使用机器学习,或许还会使用 A

在Python中使用NLTK库实现对词干的提取的教程_python

什么是词干提取? 在语言形态学和信息检索里,词干提取是去除词缀得到词根的过程─-得到单词最一般的写法.对于一个词的形态词根,词干并不需要完全相同:相关的词映射到同一个词干一般能得到满意的结果,即使该词干不是词的有效根.从1968年开始在计算机科学领域出现了词干提取的相应算法.很多搜索引擎在处理词汇时,对同义词采用相同的词干作为查询拓展,该过程叫做归并. 一个面向英语的词干提取器,例如,要识别字符串"cats"."catlike"和"catty"是

Python机器学习之NumPy库初探

import numpy as np from numpy import * #matrix an overview mylist=[1,2,3,4,5] a=10 mymatrix=np.mat(mylist) print(a*mymatrix) #special matrix myzero=np.zeros_like([3,5]) print(myzero) myzero=np.zeros([3,5]) print(myzero) myones=np.ones([3,3]) print(my

Python机器学习库

   Python在科学计算领域,有两个重要的扩展模块:Numpy和Scipy.其中Numpy是一个用python实现的科学计算包.包括: 一个强大的N维数组对象Array: 比较成熟的(广播)函数库: 用于整合C/C++和Fortran代码的工具包: 实用的线性代数.傅里叶变换和随机数生成函数.      SciPy是一个开源的Python算法库和数学工具包,SciPy包含的模块有最优化.线性代数.积分.插值.特殊函数.快速傅里叶变换.信号处理和图像处理.常微分方程求解和其他科学与工程中常用的

《Python机器学习实践指南》——1.2 Python库和功能

1.2 Python库和功能 现在,我们已经对数据科学工作流的每一步有了初步的理解,下面来看看在每一步中,存在哪些有用的Python库和功能可供选择. 1.2.1 获取 访问数据常见的方式之一是通过REST风格的API接口,需要知道的库是Python Request库.它被称为给人类使用的HTTP,为API的交互提供了一个整洁和简单的方式. 让我们来看一个使用Requests进行交互的例子,它从GitHub的API中拉取数据.在这里,我们将对该API进行调用,并请求某个用户的starred库列表

最好的Python机器学习库

引言 毫无疑问,神经网络和机器学习在过去几年一直是高科技领域最热门的话题之一.这一点很容易看出,因为它们解决了很多真正有趣的用例,如语音识别.图像识别.甚至是乐曲谱写.因此,在这篇文章,我决定编制一份囊括一些很好的Python机器学习库的清单,并将其张贴在下面. 在我看来,Python是学习(和实现)机器学习技术最好的语言之一,其原因主要有以下几点: 语言简单:如今,Python成为新手程序员首选语言的主要原因是它拥有简单的语法和庞大的社区. 功能强大:语法简单并不意味着它功能薄弱.Python

Python NLTK库安装Error:Resource u*corpora/gutenberg* not found.

转载请标明出处: http://blog.csdn.net/djy1992/article/details/72828734 本文出自:[奥特曼超人的博客] 提起聊天机器人, 想必大家会想起一个优秀的库,NLTK库,这里简化了安装流程并提到大家都会遇到的一个错误. Resource u*corpora/gutenberg* not found. Please use the NLTKDownloader to obtain the resource: 运行环境: WIN+Python 2.7 安

7步掌握Python机器学习

"开始",是一个令人激动的字眼.然而万事开头难,当你拥有过多的选择时,往往就会不知所措. 我们希望借助免费.便捷的在线资源,帮助你完成从小白到大牛的蜕变.这篇文章将会回答如何选择资源.如何拓展学习以及按怎样的顺序学习等一系列问题. 我们要开始了!首先假定你还不具备以下技能: 精通机器学习 熟练掌握Python 熟悉其他Python相关包 使用Python的经验或许对后面的学习有帮助,但并不是必需的.在最初的几步多花些时间和功夫也可以弥补这些欠缺. 第1步:Python基本技能 如果我们

盘点·GitHub最著名的20个Python机器学习项目

我们分析了GitHub上的前20名Python机器学习项目,发现scikit-Learn,PyLearn2和NuPic是贡献最积极的项目.让我们一起在Github上探索这些流行的项目! Scikit-learn:Scikit-learn 是基于Scipy为机器学习建造的的一个Python模块,他的特色就是多样化的分类,回归和聚类的算法包括支持向量机,逻辑回归,朴素贝叶斯分类器,随机森林,Gradient Boosting,聚类算法和DBSCAN.而且也设计出了Python numerical和s