一:词链表的概念
词链表其实就是Python中序列的意思,只不过这个列表存储的内容是一个个单词。字、词、句、段落再到篇章,由小到大。如:
sentence=['call','me','Ishmael'],这就是一个简单的词链表。关于列表是Python的存储结构,另外两种还有字典及元祖,值得注意的是元祖和字符串是不可变的序列。关于序列的相关操作如分片、合并、索引等可以查阅相关书籍。
这里有几个基本操作列一下:
(1)追加单词:sentence.append('word')。在sentence 的列表尾部添加一个指定单词word。
(2)返回一个列表中指定单词的索引值(即位置序号),sentence.index('word')。
(3)找出指定索引位置的单词:sentence[i],假设列表长度为n,则i的范围为0至n-1。
(4)分片(切片)操作:sentence[i:j],提取出列表中i到j上的单词,但是不包括sentencep[j]。
二:简单统计单词的词频分布:FreqDist(text)函数
nltk中使用函数Freq_num=FreqDist(text)就可以统计出每个单词的词频,非常方便,另一种方法是是使用count方法一个单词一个单词的统计次数,这种方法非常笨拙,且循环量大,不采用。
FreqDist(text)返回的是一个字典,对应的键为单词,值为该单词出现的次数。利用字典,可以找到该字典中前n个出现的单词是什么。注意字典中的键不可被查找。利用命令Freq_num['whale'],即可查找到whale这个单词出现的次数。注意:字典是按键来存取,而不是通过序号即偏移来存取值。
此外,利用这个函数还可以绘制最常出现的n个单词的出现频数分布图。
如:Freq_num.plot(50,cumulative=True),表示绘制最常出现的50个单词的出现频数分布图,如下:
此外,利用函数hapaxes还可以绘制统计出只出现一次的低频次。
如:print(Freq_num.hapaxes())
统计固定长度的单词:
统计长度大于15且词频大于7的单词,命令如下:
V=set(text)
long_words=[w for w in V if len(w)>15 and Freq_num[w]>7]
sorted(long_words)#排序。
统计固定搭配的双联词语:text.collocations()
统计指定单词的搭配情况:
from nltk.util import bigrams
list(bigrams(['word1','word2',...])
其他统计结果: