您的位置:首页 > 编程语言 > Python开发

《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 中得到回答。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息