原作者:http://www.cnblogs.com/I-Tegulia/category/706685.html

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)小结的更多相关文章

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

    在本期文章中,小生向您介绍了自然语言工具包(Natural Language Toolkit),它是一个将学术语言技术应用于文本数据集的 Python 库.称为“文本处理”的程序设计是其基本功能:更深 ...

  2. Python自然语言处理工具小结

    Python自然语言处理工具小结 作者:白宁超 2016年11月21日21:45:26 目录 [Python NLP]干货!详述Python NLTK下如何使用stanford NLP工具包(1) [ ...

  3. Mac OS10.9 下python开发环境(eclipse)以及自然语言包NLTK的安装与注意

    折腾了大半天,终于把mbp上python自然语言开发环境搭建好了. 第一步,安装JDK1.7 for mac MacOS10.9是自带python2.7.5的,够用,具体的可以打开终端输入python ...

  4. 自然语言处理--nltk安装及wordnet使用详解

    环境:python2.7.10 首先安装pip 在https://pip.pypa.io/en/stable/installing/ 下载get-pip.py 然后执行 python get-pip. ...

  5. 自然语言处理——NLTK中文语料库语料库

    Python NLTK库中包含着大量的语料库,但是大部分都是英文,不过有一个Sinica(中央研究院)提供的繁体中文语料库,值得我们注意. 在使用这个语料库之前,我们首先要检查一下是否已经安装了这个语 ...

  6. Python3自然语言(NLTK)——语言大数据

    NLTK 这是一个处理文本的python库,我们知道文字性的知识可是拥有非常庞大的数据量,故而这属于大数据系列. 本文只是浅尝辄止,目前本人并未涉及这块知识,只是偶尔好奇,才写本文. 从NLTK中的b ...

  7. Hiero扩展工具包开发小结

    写了两个月,Hiero扩展工具包终于完成了,包括了7个扩展内容,从Tags的扩展到TranscodeImage任务的检查再到版本的搜索,还有新Token的创建,算是对Hiero原生程序做了一个补充,提 ...

  8. 自然语言处理NLTK

    Python文本分析工具NLTK 情感分析 文本相似度 文本分类 分类预测模型:朴素贝叶斯 实战案例:微博情感分析

  9. 自然语言处理NLTK之入门

    环境:window10 + python3 一.安装NLTK pip install nltk # 或者 PyCharm --> File --> Settings --> Proj ...

随机推荐

  1. 20135320赵瀚青LINUX第四章读书笔记

    概述 什么是进程调度 进程调度:在可运行态进程之间分配有限处理器时间资源的内核子系统. 一.调度策略 4.1进程类型 I/O消耗型进程:大部分时间用来提交I/O请求或是等待I/O请求,经常处于可运行状 ...

  2. Java面试知识点总结及解析

    声明:有人说, 有些面试题很变态,个人认为其实是因为我们基础不扎实或者没有深入.本篇文章来自一位很资深的前辈对于最近java面试题目所做的总结归纳,有170道题目 ,知识面很广 ,而且这位前辈对于每个 ...

  3. ubuntu16.04深度学习环境的配置【转】

    本文转载自:https://my.oschina.net/u/3837179/blog/1920756 在ubuntu中配置GPU的深度学习环境相较于win问题要多很多,这几天琢磨了一下Ubuntu下 ...

  4. HDU 6156 Palindrome Function(数位DP)题解

    思路: 数位dp的操作是dfs+记忆化,我们dp开四维:位置,长度,进制,是否回文.然后每次暴搜记录下每个位置的数字是什么,搜到对称轴另一边需要检查是否符合回文. 终于把友谊赛的题目都补完了...没做 ...

  5. MyBatis使用小案例

    首先回顾一下MyBatis封装简化Dao层连接数据库操作的顺序. 首先MyBatis是一个引入的jar包,还有一些依赖包,可能用不到的jar包,一并引入就好了,再多引入一个Juntil.jar测试包( ...

  6. Mininet实验 命令延伸实验扩展

    本文参照:Mininet 命令延伸实验扩展 步骤1:命令行创建拓扑 sudo mn --topo minimal 最小的网络拓扑,一个交换机下挂两个主机. sudo mn --topo linear, ...

  7. hdu 5683 zxa and xor 暴力

    zxa and xor Time Limit: 16000/8000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Pro ...

  8. python 浮点数转分数

    from fractions import Fraction value = 4.2 print(Fraction(value).limit_denominator())

  9. 动态规划-背包问题 Knapsack

    2018-03-15 13:11:12 背包问题(Knapsack problem)是一种组合优化的NP完全问题.问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何 ...

  10. Java Spring-Bean中属性注入

    2017-11-06 20:29:13 类属性的注入的三种方法 1.接口方法注入 public interface injection{ public void setName(String name ...