今天开始学习《Python自然语言处理》一书。书是从小木虫下载的,已经上传到我的CSDN:http://download.csdn.net/detail/lucygill/9733189
下面总结一下今天学到的技能。(现在感觉这本书理论比较少,主要介绍基本的编程思想)
一 软件安装
首先至少要安装Python及其基本库(至少要有Numpy和Matplotlab)。这个在我的另一篇文章中有详细介绍。不过文章还躺在草稿箱里,择日会发出来。
然后就可以在cmd命令行下安装nltk了。直接进入Python2.7的scripts文件夹,输入命令pip install nltk,等待即可。nltk是一个处理自然语言的工具包,具体功能看我从书上截的图:
然后可以在官网上下载变成所需数据。可以直接在Python中输入以下代码下载
>>> import nltk
>>> nltk.download()
但是亲测网速很慢,于是自己把所有数据下载好后,发到了小木虫上,链接如下:
http://muchong.com/bbs/viewthread.php?tid=10972078。可以选择性下载。
二 第一天学到的东西
好了终于要进入正题了。
书开始讲了一些基本编程语法,这些就不说了。下面着重总结下几个函数。
1.导入需要的文本数据
from nltk.book import *
会显示text1到text9这几个文本。
2.搜索文本
concordance函数:
concordance在牛津字典中的一个解释是:a list produced by a computer that shows all the examples of an individual word in a book, etc.中文解释是(计算机显示的)语汇索引。这样一来,函数的功能就一目了然了。
text1.concordance("monstrous")
就会出现带有单词“monstrous”的句子。
注意,并不是每次都显示所有的句子。当这个单词出现的次数很多时,最多只能显示25个句子。(亲自测试过)
similar函数:
用来查找与所给词出现在相似的上下文中的词。
text1.similar("monstrous")
common_contexts函数:
用来研究多个词共同的上下文。
text2.common_contexts("monstrous","very")
dispersion_plot函数
用来绘制词的离散图。横坐标表示词在文中的位置,纵坐标代表特定的词语。每一条竖线代表一个单词,竖线出现一次,就代表相应单词出现了一次。
text4.dispersion_plot(["citizens", "democracy", "freedom"])
结果如图所示。
3.计数词汇
统计文件中词汇的数量:len(text3)
统计文件中不同词汇的数量:set(text3)
给不同词汇按照首字母排序(大写字母排在小写字母前面):sorted(set(text3))
统计特定词汇在文中出现次数:text3.count("love")
技巧:如果想用浮点除法,不必每次都在式子前面乘以1.0.加上这一句即可:
from __future__ import division(future前后都有两个下划线)
4.函数
def percentage(count,total):
return 100*count/total
注意缩进和第一行的冒号。
当这个函数定义结束后,再打一次回车,IDLE就默认结束了函数的定义。
5.链表
ex1= ['Monty', 'Python', 'and', 'the', 'Holy', 'Grail']
链表可以相加。
链表可以用前面所述的函数处理。
链表可以追加: ex1.append("a")
链表可以索引:ex1[0]="Monty", ex1[:3]=["Monty","Python","and"]
注意,区间范围左闭右开。
链表也可以找某个词第一次出现时的索引:ex1.index("Python")
6.字符串
name='Monty'
name[0]
'M
name*2
'MontyMonty''
name+'!'
'Monty!'
' '.join(['Monty','Python']) 'Monty Python'(就是用单引号内的字符连接单词,组成一个字符串)
也可以把字符串分割成链表:
'Monty Python'.split(' ') 将字符串用split内的字符分隔开。