《用Python进行自然语言处理》归纳一

1.自然语言工具包(NLTK)

NLTK 创建于2001 年,最初是宾州大学计算机与信息科学系计算语言学课程的一部分。从那以后,在数十名贡献者的帮助下不断发展壮大。如今,它已被几十所大学的课程所采纳,并作为许多研究项目的基础。表P -2 列出了NLTK 的一些最重要的模块。

这本书提供自然语言处理领域非常方便的入门指南。它可以用来自学,也可以作为自然语言处理或计算语言学课程的教科书,或是人工智能、文本挖掘、语料库语言学课程的补充读物。本书的实践性很强,包括几百个实际可用的例子和分级练习。

本书基于Python 编程语言及其上的一个名为自然语言工具包(Natural Language Toolkit ,简称NLTK)的开源库。NLTK 包含大量的软件、数据和文档,所有这些都可以从http://www.nltk.org/免费下载。NLTK 的发行版本支持Windows、Macintosh 和Unix 平台。

2. 获得文本语料和词汇语料

2.1 获取文本语料库

通过nltk.download()下载配套的数据,本文文本语料库包括以下:

  • 古腾堡语料库(Gutenberg)

    • NLTK 包含古腾堡项目(Project Gutenberg)电子文本档案的经过挑选的一小部分文本。该项目大约有25,000(现在是36,000 了)本免费电子图书。
  • 网络和聊天文本
    • NLTK 的网络文本小集合的内容包括Firefox 交流论坛,在纽约无意听到的对话,《加勒比海盗》的电影剧本,个人广告和葡萄酒的评论等
  • 布朗语料库
    • 布朗语料库是第一个百万词级的英语电子语料库的,由布朗大学于1961 年创建。这个语料库包含500 个不同来源的文本,按照文体分类,如:新闻、社论等。
  • 路透社语料库
    • 路透社语料库包含10,788 个新闻文档,共计130 万字。这些文档分成90 个主题,按照“训练”和“测试”分为两组。这样分割是为了训练和测试算法的,这种算法自动检测文档的主题。
  • 就职演说语料库
    • 就职演说语料库,实际上是55 个文本的集合,每个文本都是一个总统的演说。这个集合的一个有趣特性是它的时间维度
  • 标注文本语料库
    • 包含语言学标注,有词性标注、命名实体、句法结构、语义角色等。NLTK 中提供了很方便的方式来访问这些语料库中的几个,还有一个包含语料库和语料样本的数据包。
  • 其他语言的语料库
    NLTK 包含多国语言语料库。

文本语料库的结构:语料库结构最简单的一种没有任何结构,仅仅是一个文本集合。通常,文本会按照其可能对应的文体、来源、作者、语言等分类。有时,这些类别会重叠,尤其是在按主题分类的情况下,因为一个文本可能与多个主题相关。偶尔的,文本集有一个时间结构,新闻集合是最常见的例子。NLTK 语料库阅读器支持高效的访问大量语料库,并且能用于处理新的语料库。

表2-3 NLTK中定义的基本语料库函数

载入你自己的语料库:如果你有自己收集的文本文件,并且想使用前面讨论的方法访问它们,你可以很容易地
在NLTK 中的PlaintextCorpusReader 帮助下载入它们。

2.2 条件频率分布

条件频率分布是频率分布的集合,每个频率分布有一个不同的“条件”,这个条件通常是文本的类别。当语料文本被分为几类(文体、主题、作者等)时,我们可以计算每个类别独立的频率分布。这将允许我们研究类别之间的系统性差异。

条件频率分布是一个对许多NLP 任务都有用的数据结构。

表2-4 NLTK中条件概率分布: 定义、访问和可视化一个计数的条件概率分布的常用方法和习惯用法

2.3 词典资源

词典或者词典资源是一个词和/或短语以及一些相关信息的集合,例如:词性和词意定义等相关信息。词典资源附属于文本,通常在文本的帮助下创建和丰富。复杂的词典资源包括在词汇项内和跨词汇项的复杂的结构。

NLTK包括的词典资源:

  • 词汇列表语料库
    NLTK 包括一些仅仅包含词汇列表的语料库。词汇语料库是Unix 中的/usr/dict/words 文件,被一些拼写检查程序使用。我们可以用它来寻找文本语料中不寻常的或拼写错误的词汇。
  • 还有一个停用词语料库,就是那些高频词汇,如:the,to,我们有时在进一步的处理之前想要将它们从文档中过滤。停用词通常几乎没有什么词汇内容,而它们的出现会使区分文本变困难。
  • 发音的词典
    • 一个稍微丰富的词典资源是一个表格(或电子表格),在每一行中含有一个词加一些性质。NLTK 中包括美国英语的CMU 发音词典,它是为语音合成器使用而设计的。
    • 对每一个词,这个词典资源提供语音的代码——不同的声音不同的标签——叫做音素。
      请看fire 有两个发音(美国英语中):单音节F AY1 R 和双音节F AY1 ER0。
  • 比较词表
    • 表格词典的另一个例子是比较词表。NLTK 中包含了所谓的斯瓦迪士核心词列表(Swadesh wordlists),几种语言中约200 个常用词的列表。
    • 我们可以通过在entries()方法中指定一个语言链表来访问多语言中的同源词。
  • 词汇工具:Toolbox
    • 可能最流行的语言学家用来管理数据的工具是Toolbox,以前叫做Shoebox,因为它用满满的档案卡片占据了语言学家的旧鞋盒。一个Toolbox 文件由一个大量条目的集合组成,其中每个条目由一个或多个字段组成。大多数字段都是可选的或重复的,这意味着这个词汇资源不能作为一个表格或电子表格来处理。
  • WordNet
    • 是面向语义的英语词典,类似与传统辞典,但具有更丰富的结构。NLTK 中包括英语WordNet,共有155,287 个词和117,659 个同义词集合。

2.4 WordNet

WordNet的层次结构:WordNet 的同义词集对应于抽象的概念,它们并不总是有对应的英语词汇。这些概念在层次结构中相互联系在一起。一些概念也很一般,如实体、状态、事件;这些被称为独一无二的根同义词集。其他的,如:油老虎和有仓门式后背的汽车等就比较具体的多。图2-8 展示了一个概念层次的一小部分。

图2-8. WordNet 概念层次片段:每个节点对应一个同义词集;边表示上位词/下位词关系,即上级概念与从属概念的关系。

更多的词汇关系:上位词和下位词被称为词汇关系,因为它们是同义集之间的关系。这个关系定位上下为“是一个”层次。WordNet 网络另一个重要的漫游方式是从物品到它们的部件(部分)或到它们被包含其中的东西(整体)。例如:一棵树的部分是它的树干,树冠等;这些都是part_meronyms()。一棵树的实质是包括心材和边材组成的,即substance_meronyms()。树木的集合形成了一个森林,即member_holonyms()。

语义相似度:我们已经看到同义词集之间构成复杂的词汇关系网络。给定一个同义词集,我们可以遍历WordNet 网络来查找相关含义的同义词集。知道哪些词是语义相关的,对索引文本集合非常有用,当搜索一个一般性的用语——例如:车辆——时就可以匹配包含具体用语——例如豪华轿车——的文档。回想一下每个同义词集都有一个或多个上位词路径连接到一个根上位词。连接到同一个根的两个同义词集可能有一些共同的上位词。如果两个同义词集共用一个非常具体的上位词——在上位词层次结构中处于较低层的上位词——它们一定有密切的联系。

2.5 小结
?? 文本语料库是一个大型结构化文本的集合。NLTK 包含了许多语料库,如:布朗语料库nltk.corpus.brown。
?? 有些文本语料库是分类的,例如通过文体或者主题分类;有时候语料库的分类会相互重叠。
?? 条件频率分布是一个频率分布的集合,每个分布都有一个不同的条件。它们可以用于通过给定内容或者文体对词的频率计数。
?? 行数较多的Python 程序应该使用文本编辑器来输入,保存为.py 后缀的文件,并使用import 语句来访问。
?? Python 函数允许你将一段特定的代码块与一个名字联系起来,然后重用这些代码想用多少次就用多少次。
?? 一些被称为“方法”的函数与一个对象联系在起来,我们使用对象名称跟一个点然后跟方法名称来调用它,就像:x.funct(y)或者word.isalpha()。
?? 要想找到一些关于变量v 的信息,可以在Pyhon 交互式解释器中输入help(v)来阅读这一类对象的帮助条目。
?? WordNet 是一个面向语义的英语词典,由同义词的集合—或称为同义词集(synsets)—组成,并且组织成一个网络。
?? 默认情况下有些函数是不能使用的,必须使用Python 的import 语句来访问。

时间: 2024-10-15 20:16:16

《用Python进行自然语言处理》归纳一的相关文章

用Python做自然语言处理必知的八个工具【转载】

Python以其清晰简洁的语法.易用和可扩展性以及丰富庞大的库深受广大开发者喜爱.其内置的非常强大的机器学习代码库和数学库,使Python理所当然成为自然语言处理的开发利器. 那么使用Python进行自然语言处理,要是不知道这8个工具就真的Out了. NLTK NLTK是使用Python处理语言数据的领先平台.它为像WordNet这样的词汇资源提供了简便易用的界面.它还具有为文本分类(classification).文本标记(tokenization).词干提取(stemming).词性标记(t

NLTK和jieba这两个python的自然语言包(HMM,rnn,sigmoid

HMM(Hidden Markov Model,隐马尔可夫模型) CRF(Conditional Random Field,条件随机场), RNN深度学习算法(Recurrent Neural Networks,循环神经网络).输入条件连续 LSTM(Long Short Term Memory)则绕开了这些问题依然可以从语料中学习到长期依赖关系,输入条件不连续是用, 核心是实现了  dL(t)dh(t)和  dL(t+1)ds(t)反向递归计算. sigmoid函数,该函数输出0到1之间的值

《用Python进行自然语言处理》归纳二

3.加工原料文本   3.1 字符串:最底层的文本处理 我们侧重于将文本作为一个词链表.通过使用NLTK 中的语料库接口,我们可以忽略这些文本所在的文件.一个词的内容,一个文件的内容在编程语言中是由一个叫做字符串的基本数据类型来表示的. 3.2使用Unicode进行文字处理 Unicode 支持超过一百万种字符.每个字符分配一个编号,称为编码点.在Python 中,编码点写作\uXXXX 的形式,其中XXXX 是四位十六进制形式数.在一个程序中,我们可以像普通字符串那样操纵Unicode 字符串

Python与自然语言处理(二)基于Gensim的Word2Vec

继续学习摸索,看到很多博客都在研究Word2Vec,感觉挺有意思,我也来尝试一下. 实验环境:Python3,Java8 Word2Vec的输入是句子序列,而每个句子又是一个单词列表,由于没有这样结构的现成输入,所以决定自己动手对原始语料进行预处理. NLPIR是一个汉语分词系统,挺感谢张华平博士,便利了我们的文本处理工作.下载地址:http://ictclas.nlpir.org/newsdownloads?DocId=389 这里还有一个自然语言处理与信息检索共享平台(感觉挺好的,有资料,还

python+NLTK 自然语言学习处理二:文本

在前面讲nltk安装的时候,我们下载了很多的文本.总共有9个文本.那么如何找到这些文本呢: text1: Moby Dick by Herman Melville 1851 text2: Sense and Sensibility by Jane Austen 1811 text3: The Book of Genesis text4: Inaugural Address Corpus text5: Chat Corpus text6: Monty Python and the Holy Gra

python字符串使用方法归纳

字符串的意思就是“一串字符”,比如“Hello,Charlie”是一个字符串,“How are you?”也是一个字符串. Python 要求字符串必须使用引号括起来,使用单引号也行,使用双引号也行,只要两边的引号能配对即可. capitalize() 把字符串的第一个字符改为大写 casefold() 把整个字符串的所有字符改为小写 center(width) 将字符串居中,并使用空格填充至长度 width 的新字符串 count(sub[, start[, end]]) 返回 sub 在字符

python+NLTK 自然语言学习处理四:获取文本语料和词汇资源

在前面我们通过from nltk.book import *的方式获取了一些预定义的文本.本章将讨论各种文本语料库 1 古腾堡语料库 古腾堡是一个大型的电子图书在线网站,网址是http://www.gutenberg.org/.上面有超过36000本免费的电子图书,因此也是一个大型的预料库.NLTK也包含了其中的一部分 .通过nltk.corpus.gutenberg.fileids()就可以查看包含了那些文本. ['austen-emma.txt', 'austen-persuasion.tx

python+NLTK 自然语言学习处理五:词典资源

前面介绍了很多NLTK中携带的词典资源,这些词典资源对于我们处理文本是有大的作用的,比如实现这样一个功能,寻找由egivronl几个字母组成的单词.且组成的单词每个字母的次数不得超过egivronl中字母出现的次数,每个单词的长度要大于6. 要实现这样的一个功能,首先我们要调用FreqDist功能.来得到样本字母中各个字母出现的次数 puzzle_letters=nltk.FreqDist('egivrvonl') for k in puzzle_letters: print(k,puzzle_

Python自然语言处理工具小结

Python自然语言处理工具小结 作者:白宁超 2016年11月21日21:45:26 1 Python 的几个自然语言处理工具 NLTK:NLTK 在用 Python 处理自然语言的工具中处于领先的地位.它提供了 WordNet 这种方便处理词汇资源的借口,还有分类.分词.除茎.标注.语法分析.语义推理等类库. Pattern:Pattern 的自然语言处理工具有词性标注工具(Part-Of-Speech Tagger),N元搜索(n-gram search),情感分析(sentiment a