可爱的Python:自然语言工具包入门

在本期文章中,David 向您介绍了自然语言工具包(Natural Language Toolkit),它是一个将学术语言技术应用于文本数据集的 Python 库。称为“文本处理”的程序设计是其基本功能;更深入的是专门用于研究自然语言的语法以及语义分析的能力。

鄙人并非见多识广,虽然写过很多关于 文本处理 方面的东西(例如,一本书),但是,对我来说, 语言处理(linguistic processing) 是一个相对新奇的领域。如果在对意义非凡的自然语言工具包(NLTK)的说明中出现了错误,请您谅解。NLTK 是使用 Python 教学以及实践计算语言学的极好工具。此外,计算语言学与人工智能、语言/专门语言识别、翻译以及语法检查等领域关系密切。

NLTK 包括什么

NLTK 会被自然地看作是具有栈结构的一系列层,这些层构建于彼此基础之上。那些熟悉人工语言(比如 Python)的文法和解析的读者来说,理解自然语言模型中类似的 —— 但更深奥的 —— 层不会有太大困难。

术语表

全集(Corpora):相关文本的集合。例如,莎士比亚的作品可能被统称为一个 文集(corpus);而若干个作者的作品称为 全集。

直方图(Histogram):数据集中不同单词、字母或其他条目的出现频率的统计分布。

结构(Syntagmatic):对语段的研究;也就是全集中字母、单词或短语连续出现的统计关系。

上下文无关语法(Context-free grammar):由四类形式语法构成的 Noam Chomsky 层级中的第二类。参阅 参考资料 以获得详尽描述。

尽管 NLTK 附带了很多已经预处理(通常是手工地)到不同程度的全集,但是概念上每一层都是依赖于相邻的更低层次的处理。首先是断词;然后是为单词加上 标签;然后将成组的单词解析为语法元素,比如名词短语或句子(取决于几种技术中的某一种,每种技术都有其优缺点);最后对最终语句或其他语法单元进行分类。通过这些步骤,NLTK 让您可以生成关于不同元素出现情况的统计,并画出描述处理过程本身或统计合计结果的图表。

在本文中,您将看到关于低层能力的一些相对完整的示例,而对大部分高层次能力将只是进行简单抽象的描述。现在让我们来详细分析文本处理的首要步骤。

时间: 2024-08-10 15:03:48

可爱的Python:自然语言工具包入门的相关文章

《Python自然语言处理》——导读

前 言 这是一本关于自然语言处理的书.所谓"自然语言",是指人们日常交流使用的语言,如英语.印地语.葡萄牙语等.相对于编程语言和数学符号这样的人工语言,自然语言随着一代代的传递而不断演化,因而很难用明确的规则来确定.从广义上讲,"自然语言处理"(Natural Language Processing,NLP)包含所有用计算机对自然语言进行的操作,从最简单的通过计数词汇出现的频率来比较不同的写作风格,到最复杂的完全"理解"人所说的话,或至少达到能对

可爱的Python:将XML和Python结合起来

开始在 Python 中使用 XML 的一个主要要素是排列出所有可用模块的可比性能力.在他的新 Python 专栏"可爱的 Python"的第一部分中,David Mertz 简要描述了最流行和实用的关于 XML 的 Python 模块,并指出可以下载的单独模块以及可供阅读的参考资料.本文有助于确定哪些模块最适合特定任务. 在许多情况下,Python 是使用 XML 文档的理想语言.像 Perl.REBOL.REXX 和 TCL 一样,它是一种灵活的脚本语言,并且有强大的文本操作能力.

时间序列预测教程;OpenAI 谈对抗样本:自然语言处理入门 | AI 开发者日报

Jason Brownlee 的时间序列预测教程 这是澳大利亚机器学习专家 Jason Brownlee 撰写的教程,提供了一套用 Python 语言处理时间序列预测问题的模板.该教程一步步向读者展示了应该用什么工具.如何操作,以及为什么这样操作.它使用了波士顿持械抢劫案数量作为案例,旨在解决的问题是对波士顿未来每月抢劫案的数量做合理预测. 全文包含代码长达两万字,是迄今为止最权威.最详细的时间序列预测入门教程之一.具有相当学习价值. 译文地址:http://www.leiphone.com/n

可爱的Python:Decorator简化元编程

Python 使元编程成为可能,不过每个版本的 Python 都有一些细微的区别(并且不是完全兼容),这使我们实现元编程的道路变得更加崎岖.一类函数对象的使用由来已久,同样还有一些技术用于探索和实现魔术般的属性.在版本 2.2 中,Python 增加了一种很有帮助的定制元类机制,但是其代价就是令用户绞尽脑汁.最近,在 2.4 版本中,Python 增加了 "decorator" ,这是适于执行大部分元编程的最新方式 -- 也是到目前为止对用户最友好的方式. 少劳多得 Decorator

可爱的Python: 用基于生成器的状态机和协同程序增加效率

Python 2.2 中引进的简单生成器可用于简化状态机以及模仿协同程序.David 在"可爱的 Python"专栏较早前的一个部分中介绍了一个 状态机处理的抽象模式.从那时起,简单生成器的引进就为描述机器提供了一些更自然的范例.协同程序是一种"外来"流机制,广泛使用的语言几乎都不支持这种机制(甚至连非 Stackless Python 都不支持它).然而,Python 的新生成器 几乎完全支持协同程序,几乎不用模仿任何额外的步骤.在本文中,David 通过说明性代

可爱的Python: 用Python生成器实现“轻便线程”

在 "可爱的 Python"的前面一部分中,David 介绍了一种用生成器和简单的调度程序模拟完整协同程序的方法.我们也许可以用直观的方式来扩展这种调度程序,使其允许对多进程使用极为轻量级的线程.与 Stackless Python 微线程非常相似,伪协同程序"轻便线程"几乎不需要 OS(甚至用户区)线程的上下文切换和内存开销.David 在这里介绍了轻便线程,一种巧妙的解决方案,它用来解决使用普通解决方案处理将涉及大量协同进程的问题. 微线程领域(至少在 Pyth

可爱的Python: 使用Spark模块解析

Spark 是一种用 Python 编写的强大的.通用的解析器/编译器框架.在某些方面,Spark 所提供的比 SimpleParse 或其它 Python 解析器提供的都要多.然而,因为它完全是用 Python 编写的,所以速度也会比较慢.David 在本文中讨论了 Spark 模块,给出了一些代码样本,解释了它的用途,并对其应用领域提供了一些建议. 继"可爱的 Python"系列中专门讲述 SimpleParse 的 前一篇文章之后,我将在本文中继续介绍一些解析的基本概念,并对 S

可爱的Python:动态重新装入

与大多数其它编程语言相比,Python 的一大优点就是其强大的运行时动态能力.感谢方便的 reload() 函数,我们可以编写持续运行的程序,但它可以在进程运行期间装入经过修改的组件(对于那些持续运行时间至关重要的服务来说, 相当有用).b本文在 David 以前的文章中讨论的对 Txt2Html 前端的某些增强基础上,说明了运行时程序修改.特别是,我们的样本程序将对因特网上 Txt2Html 转换库的新版本进行后台检查, 并下载和重新装入所需的新版本,无需用户手工介入. 让我们描绘一下本文的情

可爱的Python:Curses编程

某一类 Python应用程序最好使用交互式用户界面,这样可以消除图形环境的系统开销或复杂性.交互式文本模式程序(在Linux/UNIX 中),例如封装在 Python 的标准 curses模块中的 ncurses 库,正是您所需要的.本文中,DavidMertz 讨论了在 Python 中 curses 的用法.他使用从前端到 Txt2Html程序的样本源代码阐述了 curses 环境. curses 库 ( ncurses ) 提供了控制字符屏幕的独立于终端的方法.curses 是大多数类似于