python自然语言处理基础知识入门
扫描二维码
随时随地手机看文章
自然语言处理广纳了众多技术,对自然或人类语言进行自动生成,处理与分析。虽然大部分 NLP 技术继承自语言学和人工智能,但同样受到诸如机器学习,计算统计学和认知科学这些相对新兴的学科影响。
在展示 NLP 技术的例子前,有必要介绍些非常基础的术语。请注意:为了让文章通俗易懂,这些定义在语言上就不一定考究。
词例(Token):对输入文本做任何实际处理前,都需要将其分割成诸如词、标点符号、数字或纯字母数字(alphanumerics)等语言单元(linguisTIc units)。这些单元被称为词例。
句子:由有序的词例序列组成。
词例还原(TokenizaTIon):将句子还原成所组成的词例。以分割型语言(segmented languages)英语为例,空格的存在使词例还原变得相对容易同时也索然无味。然而,对于汉语和阿拉伯语,因为没有清晰的边界,这项工作就稍显困难。另外,在某些非分割型语言(non-segmented languages)中,几乎所有的字符(characters)都能以单字(one-character)存在,但同样也可以组合在一起形成多字(mulTI-characterwords)形式。
语料库:通常是由丰富句子组成的海量文本。
词性标签(Part-of-speech (POS) Tag):任一单词都能被归入到至少一类词汇集(set of lexical)或词性条目(part-of-speech categories)中,例如:名词、动词、形容词和冠词等。词性标签用符号来代表一种词汇条目——NN(名词)、VB(动词)、JJ(形容词)和 AT(冠词)。Brown Corpus 是最悠久,也是最常用的标注集之一。详情且听下回分解。
剖析树(Parse Tree):利用形式语法(formal grammar)的定义,可以用树状图来表示给定句子的句法(syntacTIc)结构。
认识了基本的术语,下面让我们了解 NLP 常见的任务:
词性标注(POS Tagging):给定一个句子和组词性标签,常见的语言处理就是对句子中的每个词进行标注。举个例子,The ball is red,词性标注后将变成 The/AT ball/NN is/VB red/JJ。最先进的词性标注器[9]准确率高达 96%。文本的词性标注对于更复杂的 NLP 问题,例如我们后面会讨论到的句法分析(parsing)和机器翻译(machine translation)非常必要。
计算形态学(Computational Morphology):大量建立在“语素”(morphemes/stems)基础上的词组成了自然语言,语素虽然是最小的语言单元,却富含意义。计算形态学所关心的是用计算机发掘和分析词的内部结构。
句法分析(Parsing):在语法分析的问题中,句法分析器(parser)将给定句子构造成剖析树。为了分析语法,某些分析器假定一系列语法规则存在,但目前的解析器已经足够机智地借助复杂的统计模型[1]直接推断分析树。多数分析器能够在监督式设置(supervised setting)下操作并且句子已经被词性标注过了。统计句法分析是自然语言处理中非常活跃的研究领域。
机器翻译(Machine Translation(MT)):机器翻译的目的是让计算机在没有人工干预的情况下,将给定某种语言的文本流畅地翻译成另一种语言文本。这是自然语言处理中最艰巨的任务之一,这些年来已经用许多不同的方式解决。几乎所有的机器翻译方法都依赖了词性标注和句法分析作为预处理。
PythonPython 是一种动态类型(dynamically-typed),面向对象的解释式(interpreted)编程语言。虽然它的主要优势在于允许编程人员快速开发项目,但是大量的标准库使它依然能适应大规模产品级工程项目。Python 的学习曲线非常陡峭并且有许多优秀的在线学习资源[
NLTK自然语言处理工具包 NLTK简介NLTK是构建Python程序与人类语言数据工作的主要平台。它提供了易于使用的界面,以超过50语料库和词汇资源,如WordNet的,连同一套文字处理库进行分类,标记化,词干,标记,分析和语义推理,和活跃的论坛。
得益于动手指南介绍编程基础在旁边计算语言学课题,NLTK适合语言学家,工程师,学生,教育工作者,研究人员和行业用户的一致好评。 NLTK可用于Windows,Mac OS X和Linux。最重要的是,NLTK是一个免费,开源,社区驱动的项目。
使用 NLTKNLTK 官网提供了很棒的说明文件和教程进行学习指导[13]。单纯复述那些作者们的文字对于他们和本文都不公平。因此我会通过处理四个难度系数依次上升的 NLP 任务来介绍 NLTK。这些任务都来自于 NLTK 教程中没有给出答案的练习或者变化过。所以每个任务的解决办法和分析都是本文原创的。
NLTK 语料库正如前文所说,NLTK 囊括数个在 NLP 研究圈里广泛使用的实用语料库。在本节中,我们来看看三个下文会用到的语料库:
布朗语料库(Brown Corpus):Brown Corpus of Standard American English 被认为是第一个可以在计算语言学处理[6]中使用的通用英语语料库。它包含了一百万字 1961 年出版的美语文本。它代表了通用英语的样本,采样自小说,新闻和宗教文本。随后,在大量的人工标注后,诞生了词性标注过的版本。
古登堡语料库(Gutenberg Corpus):古登堡语料库从最大的在线免费电子书[5]平台 古登堡计划(Gutenberg Project) 中选择了 14 个文本,整个语料库包含了一百七十万字。
Stopwords Corpus:除了常规的文本文字,另一类诸如介词,补语,限定词等含有重要的语法功能,自身却没有什么含义的词被称为停用词(stop words)。NLTK 所收集的停用词语料库(Stopwords Corpus)包含了 来自 11 种不同语言(包括英语)的 2400 个停用词。
NLTK 命名约定在开始利用 NLTK 处理我们的任务以前,我们先来熟悉一下它的命名约定(naming conventions)。最顶层的包(package)是 nltk,我们通过使用完全限定(fully qualified)的加点名称例如:nltk.corpus and nltk.utilities 来引用它的内置模块。任何模块都能利用 Python 的标准结构 from 。 。 。 import 。 。 。 来导入顶层的命名空间。
windows下NLTK环境搭建python安装
选择 2.7x版本进行下载,不建议下载3.X版本,因为现在很多python代码库还是基于旧的版本编写的,所以不建议使用3.X版本。安装完成后,使用打开自带的IDLE,结果如下:
Note:
推荐编写python代码好用的IDE:pycharm,上手比较简单,文档较齐全
下载地址:http://www.jetbrains.com/pycharm/
附几个PyCharm4注册码:
name :newasp
=====LICENSE BEGIN =====
09086-12042010
00001EBwqd8wkmP2FM34Z05iXch1Ak
KI0bAod8jkIffywp2WalWZejIQ6AAu
AVVPbzHZpOvqvdJFHEBbvbXW2t1jQI
=====LICENSE END =====
name :newasp
=====LICENSE BEGIN =====
58877-12042010
00002h9ii68IdWfbdJz2UraWcsVxFY
!w1WD9cwRDMoW2pOUeC0WBqLAMo5PX
lQ7cE8qMukEYuWY6!EnjYWn!2EDTio
=====LICENSE END =====
name :newasp
=====LICENSE BEGIN =====
46753-12042010
000013xjAPHl95oQRCb“KnLsrXfWYa
L3aYClCOtBVysdtzBBPU5XCB3QUjLC
T1yMRB7YNC0d15A2cbwXTwXCwCjJEP
=====LICENSE END =====
name :newasp
=====LICENSE BEGIN =====
62458-12042010
00002r53OfrSCVqjsI0zdG5E4pMM5Z
dBAGbxVOX!OPwIkBqunfKf2zQDgECf
XrLosbjBEp!2JfFuydkblmqWPevvB0
===== LICENSE END =====