《Python自然语言处理》学习笔记(二)
2017-01-10 16:15
155 查看
今天的内容涉及对语言简单的统计和Python基本控制流程(if,for)。
一.计算语言
1.频率分布
FreqDist函数:需要一个文本作为参数,返回一组键值对,键是单词,值时单词在文中出现的次数。
fdist1 = FreqDist(text1)
plot函数:通过参数,可以绘制单词的频率图,或者累积频数图。
fdist1.plot(50,cumulative=True) 绘制fdist1的50个出现频率最高的词的累积频数图。
2.细粒度的选择词
V=set(text1) #将V赋值为text1的单词的集合(集合肯定没有重复的元素)
long_words=[w for w in V if len(w)>15] #选出长度大于15的单词
sorted(long_words) #给单词按照字母顺序排序
应用举例:求语料库中所有长度超过7,出现次数超过7的词。
fdist5=FreqDist(text5)
sorted([w for w in set(text5) if len(w)>7 and fdist5[w]>7])
3.词语搭配和双连词
biagram双连词:
biagrams(['more','is','said','than','done'])
collocations(num,n)函数:根据出现频率,选择num个n连词。
如果没写参数,默认是(20,2)。
text4.collocations()
4.计数的其他技巧
例子描述
fdist = FreqDist(samples) 创建包含给定样本的频率分布
fdist.inc(sample) 增加样本
fdist['monstrous'] 计数给定样本出现的次数
fdist.freq('monstrous') 给定样本的频率
fdist.N() 样本总数
fdist.keys() 以频率递减顺序排序的样本链表
for sample in fdist: 以频率递减的顺序遍历样本
fdist.max() 数值最大的样本
fdist.tabulate() 绘制频率分布表
fdist.plot() 绘制频率分布图
fdist.plot(cumulative=True) 绘制累积频率分布图
fdist1 < fdist2 测试样本在fdist1 中出现的频率是否小于fdist2
二.决策与控制
这一方面就不详细阐述了,有编程基础的人都懂。只写几点注意事项。
1.提取符合特定条件的集合时,常用for和if。此时直接用即可,语法和C++稍有不同。
如,统计文章中有多少个不同的单词:
len(set([w.lower() for w in text1 if w.isalpha()]))
2.一般用法,即for和if后面有执行语句时,for和if后面要加“:”
for word in text1:
print word,
加上逗号,结果就会在一行输出了。这是一个小技巧。
三.理解自然语言
1.词义消歧
即算出特定上下文中的某个词汇是什么意思。自然,这需要用到上下文。
2.指代消解
即理解代词所指代什么。
书的第一章最后,给出了一些参考资料,复制在下面,有兴趣可以参考一下:
你应该自己去熟悉http://docs.python.org/上的Python 文档,那里链接了许多教程和全面的参考材料。http://wiki.python.org/moin/BeginnersGuide 上有《Python 初学者指南》。关于Python 的各种问题在http://www.python.org/doc/faq/general/的FAQ 中得到回答。
一.计算语言
1.频率分布
FreqDist函数:需要一个文本作为参数,返回一组键值对,键是单词,值时单词在文中出现的次数。
fdist1 = FreqDist(text1)
plot函数:通过参数,可以绘制单词的频率图,或者累积频数图。
fdist1.plot(50,cumulative=True) 绘制fdist1的50个出现频率最高的词的累积频数图。
2.细粒度的选择词
V=set(text1) #将V赋值为text1的单词的集合(集合肯定没有重复的元素)
long_words=[w for w in V if len(w)>15] #选出长度大于15的单词
sorted(long_words) #给单词按照字母顺序排序
应用举例:求语料库中所有长度超过7,出现次数超过7的词。
fdist5=FreqDist(text5)
sorted([w for w in set(text5) if len(w)>7 and fdist5[w]>7])
3.词语搭配和双连词
biagram双连词:
biagrams(['more','is','said','than','done'])
collocations(num,n)函数:根据出现频率,选择num个n连词。
如果没写参数,默认是(20,2)。
text4.collocations()
4.计数的其他技巧
例子描述
fdist = FreqDist(samples) 创建包含给定样本的频率分布
fdist.inc(sample) 增加样本
fdist['monstrous'] 计数给定样本出现的次数
fdist.freq('monstrous') 给定样本的频率
fdist.N() 样本总数
fdist.keys() 以频率递减顺序排序的样本链表
for sample in fdist: 以频率递减的顺序遍历样本
fdist.max() 数值最大的样本
fdist.tabulate() 绘制频率分布表
fdist.plot() 绘制频率分布图
fdist.plot(cumulative=True) 绘制累积频率分布图
fdist1 < fdist2 测试样本在fdist1 中出现的频率是否小于fdist2
二.决策与控制
这一方面就不详细阐述了,有编程基础的人都懂。只写几点注意事项。
1.提取符合特定条件的集合时,常用for和if。此时直接用即可,语法和C++稍有不同。
如,统计文章中有多少个不同的单词:
len(set([w.lower() for w in text1 if w.isalpha()]))
2.一般用法,即for和if后面有执行语句时,for和if后面要加“:”
for word in text1:
print word,
加上逗号,结果就会在一行输出了。这是一个小技巧。
三.理解自然语言
1.词义消歧
即算出特定上下文中的某个词汇是什么意思。自然,这需要用到上下文。
2.指代消解
即理解代词所指代什么。
书的第一章最后,给出了一些参考资料,复制在下面,有兴趣可以参考一下:
你应该自己去熟悉http://docs.python.org/上的Python 文档,那里链接了许多教程和全面的参考材料。http://wiki.python.org/moin/BeginnersGuide 上有《Python 初学者指南》。关于Python 的各种问题在http://www.python.org/doc/faq/general/的FAQ 中得到回答。
相关文章推荐
- 《Python自然语言处理》学习笔记(一)
- 《Python自然语言处理》学习笔记索引
- 《Python自然语言处理》学习笔记-第五章
- 《Python自然语言处理》学习笔记(三)
- 《Python自然语言处理》学习笔记-第二章
- C#和.NET基础知识——学习笔记(二)
- 《effective c++》学习笔记(一)
- 《Linux命令行与shell脚本编程大全》 第二十章 学习笔记
- MySQL学习笔记
- 《Ruby语言入门教程v1.0》学习笔记-03
- 《effective c++》学习笔记(四)
- Django学习笔记
- 《effective c++》学习笔记(五)
- 《Windows via C/C++》学习笔记(五) 内核对象的“线程同步”
- Python学习笔记(十一)-- Python函数(二)
- 《Effective C++》学习笔记条款02 尽量以const,enum,inline替换#define
- 《MySQL入门很简单》学习笔记(7)之第7章索引(关键词:数据库/MySQL/索引/设计索引/创建索引/删除索引)
- 《30天自制操作系统》学习笔记--第6天
- 《MySQL入门很简单》学习笔记(10)之第10章查询数据(关键词:数据库/MySQL/查询数据)
- 数据挖掘导论(学习笔记)——2.5 数据仓库应用实例