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

《Python自然语言处理》学习笔记(一)

2017-01-09 22:51 246 查看
今天开始学习《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内的字符分隔开。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息