NLTK学习笔记(一):语言处理和Python
目录
nltk资料下载
import nltk
nltk.download()
其中,download()
参数默认是all,可以在脚本里面加上nltk.download(需要的资料库)
来进行下载
文本和词汇
首先,通过from nltk.book import *
引入需要的内置9本书
搜索文本
上下文:Text.concordance('monstrous')
,concordance是一致性的意思。即在Text对象中monstrous出现的上下文
相同上下文单词:Text.similar('monstrous')
,查找哪些词还有相同的上下文 。(比如 the__size 空格上可以是big/small),这个函数会自动找出来并返回。
多个单词上下文: Text.common_contexts(['very','monstrous'])
,返回共用两个或两个以上词汇的上下文
多个单词频率绘图工具: Text.dispersion_plot(['citizens','freedom'])
, 可以得到很好看的离差散点图
计数词汇(去重、定位)
不去重的计算用BIF里面的len() 就可以了:len(text1)
去重计算 需要用到内置结构set: len(set(text1))
可以使用nltk内置BIF:Text.count(word)
查找单词出现次数;使用Text.index(word)
可以进行定位
词链表
主要是结合python内置list的特点,可以进行链接等一些链表操作,十分方便,对于一些基本的list操作,可以自行看文档
自然语言简单数学统计
频率分布
用法:FreqDist(WordList)
,参数可以实List或者其子类,所以 Text(text1,text2...)也可以作为参数。函数返回字典形式,可以调用dict.keys()
查询所有单词和符号
from nltk import *
fdist = FreqDist(text1)
print(fdist['whale'])
可以通过 fdist.plot(TopK,cumulative=True)
画出来出现频率前K的词汇的光滑曲线,去掉第二个参数,是折线图。个人感觉曲线好看。。。
对于只出现一次的词汇,通过fdist.hapaxes()
返回的list查看。
细粒度的选择词
细粒度: 细粒度模型,通俗的讲就是将业务模型中的对象加以细分,从而得到更科学合理的对象模型,直观的说就是划分出很多对象。对于词汇,我们可能需要长度大于5的不重复词汇,这就是一个Model
v = set(text1)
long_words = [w for w in v if len(w) > 5]
如果我们需要频率大于7,长度大于10的呢?
fdist = FreqDist(text1)
long_words = [w for w in set(text1) if len(w)>10 and fdist[w] > 7]
双连词和词汇搭配
双连词就是n-gram模型中n=2,组成的词链表
在nltk里面有BIF,bigrams(wordlist)
,生成词链表
>>> list(bigrams(['a','b','c']))
[('a', 'b'), ('b', 'c')]
通过这个词链表,我们可以找到搭配(定义:不经常在一起出现的词序列).Text.collocations()
可以查找出现频率比预期频率更频繁的双连词
>>> text4.collocations()
United States; fellow citizens; four years; years ago; Federal
Government; General Government; American people; Vice President; Old
World; Almighty God; Fellow citizens; Chief Magistrate; Chief Justice;
God bless; every citizen; Indian tribes; public debt; one another;
foreign nations; political parties
词长分布
代码实现:
fdist = FreqDist([len(w) for w in text1])
print(fdist.items())
print(fdist.freq(3))#查找频率
词长可以帮助我们理解作者、文本和语言之间的差异
NLTK学习笔记(一):语言处理和Python的更多相关文章
- Java学习笔记:语言基础
Java学习笔记:语言基础 2014-1-31 最近开始学习Java,目的倒不在于想深入的掌握Java开发,而是想了解Java的基本语法,可以阅读Java源代码,从而拓展一些知识面.同时为学习An ...
- [java学习笔记]java语言核心----面向对象之this关键字
一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理: 代表的是当前对象. this就是所在函数 ...
- [java学习笔记]java语言核心----面向对象之构造函数
1.构造函数概念 特点: 函数名与类名相同 不用定义返回值类型 没有具体的返回值 作用: 给对象进行初始化 注意: 默认构造函数 多个构造函数是以重载出现的 一个类中如果 ...
- IOS学习笔记07---C语言函数-printf函数
IOS学习笔记07---C语言函数-printf函数 0 7.C语言5-printf函数 ------------------------- ----------------------------- ...
- IOS学习笔记06---C语言函数
IOS学习笔记06---C语言函数 -------------------------------------------- qq交流群:创梦技术交流群:251572072 ...
- python学习笔记-(一)初识python
1.python的前世今生 想要充分的了解一个人,无外乎首先充分了解他的过去和现在:咱们学习语言也是一样的套路 1.1 python的历史 Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈp ...
- python学习笔记系列----(一)python简介
一个月前,就按下决心要系统的学习下python了,虽然之前有学习过java,学习过c++,也能较为熟练的使用java做自动化测试看懂c++里的业务逻辑,但是实际上有那么多的东西自己还是不清楚,今天下定 ...
- Python学习笔记(一)初识Python以及安装Python
一.Python简介 1.Python发展史 Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的. Python 本身也是由诸多 ...
- ios开发学习笔记001-C语言基础知识
先来学习一下C语言基础知识,总结如下: 在xcode下编写代码. 1.编写代码 2.编译:cc –c 文件名.c 编译成功会生成一个 .o的目标文件 3.链接:把目标文件.o和系统自带的库合并在一起, ...
随机推荐
- 使用 Gradle 编译 Java 项目时报错: Could not find Tools.jar
在使用Android studio进行编译成jar的时候,遇到Gradle 编译错误,听前辈们说是jdk的版本不对,于是乎就更新了一下jdk, 然而可能是我重新安装jdk的时候改变了安装路径, 在pr ...
- ios系统判断某些适配 __IPHONE_OS_VERSION_MAX_ALLOWED
由于app的最新设计字体是ios9之后的平方字体,但app最低支持ios7,so...想在常量配置文件类里统一适配下字体,如下: //适配字体,ios9及以上系统使用新字体--平方字体 #if __I ...
- 关于Java中String类的hashCode方法
首先来看一下String中hashCode方法的实现源码 public int hashCode() { int h = hash; if (h == 0 && value.lengt ...
- python——网络编程
Socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. sock ...
- 蓝桥杯-无穷分数-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- phpcms笔记
一.建立虚拟站点 1.先更改www目录下的站点名称,再找到apache, 打开"Apache2\conf\extra"下的"httpd-vhosts.conf" ...
- Github+yeoman+gulp-angular初始化搭建angularjs前端项目框架
在上篇文章里面我们说到了Github账号的申请与配置 那么当你有了Github账号并创建了一个自己的Github项目之后,首要的当然是搭建自己的项目框架啦! 本人对自己的定位是web前端狗,常用开发框 ...
- python音频处理用到的操作
作者:桂. 时间:2017-05-03 12:18:46 链接:http://www.cnblogs.com/xingshansi/p/6799994.html 前言 本文主要记录python下音频 ...
- Haoop基本操作
一.HDFS的常用操作 (一).HDFS文件的权限 与Linux文件权限类似 r: read; w:write; x:execute,权限x对于文件忽略,对于文件夹表示是否允许访问其内容. 如果Lin ...
- jQuery 一个你意想不到的代码神器!
jQuery 一个你意想不到的代码神器! jQuery 选择器.(最简单,最基本) jquery选择器的优势: (1) 简洁的写法,$()函数 (2)支持CSS1到CSS3选择器 (3)完善的处理机制 ...