我的运行环境

  • python 3.5.2
  • nltk 3.2.1
  • nltk-data
  • numpy:科学计算库
  • matplotlib:数据可视化的2D会图库
    因为python、nltk版本不同,所以一些内容可能与书中的内容有所不同

一,搜索文本

1,词语索引视图:显示指定单词的出现情况,同时还可以显示一些上下文

text1.concordance('monstrous')

2,查询并显示与指定关键词相似的上下文的词语:

text1.similar('monstrous')

3,可以共用两个或者两个以上词语的上下文:

text1.common_contexts(["montrous","very"])

4,判断词在文本中的位置:从文本开头算起有多少次出现:

text1.dispersion_plot(["freedom","citizens","duties"])

5,随机产生一些文本:

text1.generate()

但是在NLTK3.0中已经不再支持此函数!

二,计数词汇

1,token 与type 的区别:
例如: how do you do中有四个token但只有3个type。

2,文本词汇的丰富度的测量:

len(text1)/len(set(text1))

3,特定词占文本的百分比:

100*text1.count("smoke")/len(text1)

三,python列表的操作

1,连接

sent1+sen2

2,追加

sent1.append('some')

3,求索引

text4.index('awake')

4,slice (切片)
5,字符串乘法:

name = 'Hello'
name = name*2

此时name = ‘HelloHello’

6,字符串的连接与分割:

>>>' '.join(['hello','world'])
'hello world'
>>>'hello world'.split()
['hello','world']

7,词汇比较运算符

四,简单的统计

1,频率分布:FreqDist()
此与书中有所区别

fdist1 = FreqDist(text1) #返回的是类似dict的类型
fdist_list = sorted(fdist1.items(),key=lambda k:k[1],reverse=True)  #返回list类型,并且按照频率从大到小排好序
vocabulary1 = [k[0] for k in fdist_list]
print(vocabulary1[:50])

2,累积频率图

fdist1.plot(50,cumulative=True)

3,低频词汇

fdist1.hapaxes()

4,细粒度的选择词:通过列表生成式获得。例如:

long_words = [w for w in set(text1) if len(w)>15]

5,词语搭配与双连词

  • 双连词可以使用bigrams()
  • 词语搭配(频繁的双连词)可以使用:text1.collocations()

6,计算一个文本中的词汇长度的频率分布

len_list = [len(w) for w in text1]
fdist = FreqDist[len_list]
fdist.keys()
fdist.items()
fdist.max()
fdist.freq(3)

7,NLTK频率分布类中定义的函数

五,自动理解自然语言

自然语言处理的全景图

  1. 词义消歧
  2. 指代消解
  3. 自动语言生成:自动问答和及其翻译
  4. 人机对话系统
  5. 文本含义识别

六,小结

  • 在Python 中文本用链表来表示:[‘Monty’, ‘Python’]。我们可以使用索引、分片和l
    en()函数对链表进行操作。
  • 词“token”(标识符)是指文本中给定词的特定出现;词“type”(类型)则是指词作为一个特定序列字母的唯一形式。我们使用len(text)计数词的标识符,使用len(set(text))计数词的类型。
  • 我们使用sorted(set(t))获得文本t 的词汇表。
  • 我们使用[f(x) for x in text]对文本的每一项目进行操作。
  • 为了获得没有大小写区分和忽略标点符号的词汇表,我们可以使用set([w.lower() f
    or w in text if w.isalpha()])。
  • 我们使用for 语句对文本中的每个词进行处理,例如for win t:或者for word in te
    xt:。后面必须跟冒号和一块在每次循环被执行的缩进的代码。
  • 我们使用if 语句测试一个条件:if len(word)<5:。后面必须跟冒号和一块仅当条件为
    真时执行的缩进的代码。
  • 频率分布是项目连同它们的频率计数的集合(例如:一个文本中的词与它们出现的频
    率)。
  • 函数是指定了名字并且可以重用的代码块。函数通过def 关键字定义,例如在def mu
    lt(x, y)中x 和y 是函数的参数,起到实际数据值的占位符的作用。
  • 函数是通过指定它的名字及一个或多个放在括号里的实参来调用,就像这样:mult(3,
    4)或者len(text1)。

七,深入阅读

NLTK官网
Python官方文档
LanguageLog一个流行语言学博客

Python自然语言处理第一章 - 语言处理与Python相关推荐

  1. Python自然语言处理 第一章 课后习题答案

    前言:从今天开始正式学习自然语言处理,同时还有统计学习方法和机器学习.希望能够一直坚持下去. (以下答案非标准答案,如有错误请积极回复.谢谢理解.) 正文 在开始之前首先引入nltk和nltk.boo ...

  2. python自然语言处理 第一章习题

    1. 尝试使用Python解释器作为一个计算器,输入表达式,如:12/(4+1) >>> 12/(4+1) 2.4 2. 26 个字母可以组成 26 的 10 次方或者 26**10 ...

  3. 《Python自然语言处理(第二版)-Steven Bird等》学习笔记:第01章 语言处理与Python

    第01章 语言处理与Python 1.1 语言计算:文本和单词 Python入门 NLTK 入门 搜索文本 计数词汇 1.2 近观Python:将文本当做词链表 链表(list,也叫列表) 索引列表 ...

  4. Python精确指南-第一章环境

    1       Python开发环境搭建 1.1     Python版本介绍 Python目前官方运营维护的版本分为2.x版本和3.x版本. 2.x版本相对来说,稳定性更高,兼容的主流第三方扩展库更 ...

  5. Python程序设计基础第一章笔记:Python概述

    Python程序设计基础笔记 目录 Python程序设计基础笔记 第一章:python概述 1.1 python是这样一种语言 1.2 python版本之争 略 1.3 python编程规范与代码优化 ...

  6. 【Python CLI】第一章 CLI 应用程序介绍

    系列文章目录 [Python CLI]第一章 CLI 应用程序介绍 [Python CLI]第二章 命令解析 [Python CLI]第三章 格式化输出 [Python CLI]第四章 程序控制台 文 ...

  7. 路飞学城python电子书_路飞学城-Python开发集训-第一章

    路飞学城-Python开发集训-第一章 1.本章学习心得.体会 我: 间接性勤奋. 我: 学习方法论:输入--输出---纠正 我: 对对对 走出舒适区, 换圈子, 转思路,投资自我加筹码. 我: 圈子 ...

  8. 《Python自然语言处理》——第1章 语言处理与Python 1.1 语言计算:文本和词汇...

    本节书摘来自异步社区<Python自然语言处理>一书中的第1章,第1.1节,作者[美]Steven Bird,Ewan Klein,Edward Loper, 陈涛,张旭,崔杨,刘海平 译 ...

  9. 《用Python进行自然语言处理》第 1 章 语言处理与 Python

    1. 将简单的程序与大量的文本结合起来,我们能实现什么? 2. 我们如何能自动提取概括文本风格和内容的关键词和短语? 3. Python 编程语言为上述工作提供了哪些工具和技术? 4. 自然语言处理中 ...

最新文章

  1. 华为视觉研究路线图:三大挑战,六项计划
  2. 美国科学家成功恢复老年人工作记忆,望奠定认知干预疗法基础
  3. MFC指定位置画位图
  4. 30分钟回顾AI数学基础知识(一)
  5. php 编译 线程安全,PHP7(zts 线程安全版)编译安装(支持多线程pthreads)
  6. powerdesigner连接db2生成模型步骤
  7. 如何让小程序页面更顺滑_小程序怎样让wx.navigateBack更好用的方法实现
  8. ATL--创建简单的ATL之dll工程,给接口添加属性(实际上就是一个函数对)
  9. Ubuntu把iso写入U盘
  10. AutoCad 二次开发(一) 开发环境搭建
  11. 《个人信息去标识化指南》笔记
  12. JZOJ4722. 跳楼机
  13. FastAdmin多表联查
  14. 如何在Linux Shell脚本中添加GUI
  15. zk-snark的算法详解
  16. 使用树莓派进行pH测定
  17. 大学生计算机PHP实训报告,大学生计算机实训心得体会
  18. 解决声卡爆音/杂音的四种方法
  19. 2026. 低质量的问题
  20. java程序员 待遇_现在的java程序员薪资待遇怎么样?

热门文章

  1. java基础66 JavaScript中的事件、localtion对象、screen对象(网页知识)
  2. 罗辑思维2017跨年演讲——摘录
  3. mysql distinct 慢_分析MySQL中优化distinct的技巧
  4. MySQL数据库肖睿版_正版 MySQL数据库应用技术及实战肖睿MySQL数据库数据操作数据恢复备份MySQL数据库优化My...
  5. 生成卡号点击按钮生成卡号
  6. 计算机机房ups供电时间多少,机房UPS的供电时间是多久
  7. 交通运输部发文,道路运输电子证照支持使用电子印章在线签署
  8. 制作最小linux镜像,Docker镜像的无中生有:使用scratch制作自定义最小镜像
  9. 学计算机应用好还是学计算机平面设计好,平面设计与计算机应用哪个好?
  10. 浪潮和华为相比,到底差什么?