自然语言处理(二)

一:词链表的概念

        词链表其实就是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',...])

其他统计结果:


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值