【NLP】自然语言处理-第七节 条件频率分布

本篇博客介绍条件频率分布在自然语言处理中的应用,包括按文体计数词汇、绘制分布图和表,以及使用双连词生成随机文本。通过`nltk.ConditionalFreqDist`,可以分析不同文体中词汇的分布,绘制词频变化图,并利用双连词模型生成新的文本。
摘要由CSDN通过智能技术生成

第7节 条件频率分布

目录
1 按文体计数词汇
2 绘制分布图和分布表
3 使用双连词生成随机文本

1 按文体计数词汇

前面我们学习过使用FreqDist(textlist)函数来计算textlist链表中每个项目出现的次数,现在我们推广这一想法。
添加图片注释,不超过 140 字(可选)

当语料文本分为几类(文体、主题、作者)时,可以计算每个类别独立的频率分布,这样就可以研究类别之间的系统性差异。——nltk.ConditionalFreqDist来实现。
条件频率分布是频率分布的集合,每个频率分布有一个不同的‘条件’(通常为文本的类别)——(条件,事件)的形式。
如果我们按照问题处理整个布朗语料库,将得到15个条件(一个文体一个条件)和1161192个事件(一个词一个事件):
添加图片注释,不超过 140 字(可选)

上面两行代码就是对brown语料库按照问题进行统计单词的数量,我们也可以只看部分问题,例如:新闻和言情
genre_word = [(genre, word)
for genre in [‘news’, ‘romance’]
for word in brown.words(categories=genre)]
m = len(genre_word)
print(m)
添加图片注释,不超过 140 字(可选)

上面生成的genre_word前面配对会是(‘news’,word)的形式,而后面会是(‘romance’,word)的形式
现在我们就可以对此链表创建一个ConditionalFreqDist:
cfd = nltk.ConditionalFreqDist(genre_word)
n = cfd.conditions()
print(cfd)
print(n)
添加图片注释,不超过 140 字(可选)

这两个条件他们每一个只有一个频率分布。要访问某个条件的某个单词的频率,只需和访问字典元素一样操作即可:例如访问’Romance’下的’could’频率:
n1 = cfd[‘romance’][‘could’]
print(n1)
添加图片注释,不超过 140 字(可选)

2 绘制分布图和分布表

除了组合两个或两个以上的频率分布和更容易初始化之外,ConditionalFreqDist 还为制表和绘图提供了一些有用的方法。
频率分布图是基于下面的代码产生的一个条件频率分布绘制的。条件是词 freedom或 hope,被绘图的计数是在特定演讲中出现的词的次数。
【例2-1】绘制分布图:cfd.plot(),绘制特定演讲中出现[’ freedom’,‘hope’]的次数随时间变化情况。
【例2-1】代码如下:
cfd=nltk.ConditionalFreqDist((target,fileid[:4])
for fileid in inaugural.fileids()
for w in inaugural.words(fileid)
for target in [‘freedom’,‘hope’]
if w.lower().startswith(target))
cfd.plot()
【例2-1】运行结果如下:
添加图片注释,不超过 140 字(可选)

在使用plot和tabulate时候可以使用condition=参数来制定显示哪些条件。同样也可以使用samples=参数 来限制要显示的样本。
【例2-2】查看英语和德语中单词长度小于10个字符的词汇个数。
【例2-2】代码如下:
添加图片注释,不超过 140 字(可选)

【例2-2】运行结果如下:
添加图片注释,不超过 140 字(可选)

3 使用双连词生成随机文本

使用条件频率分布创建一个双连词表。bigrams()函数接受一个词汇链表,并建立一个连续的词对链表。
sent=[‘In’,‘the’,‘begining’,‘God’,‘created’,‘the’,‘heaven’,‘and’,‘the’,‘earth’,‘.’]
print(list(nltk.bigrams(sent)))
在这里插入图片描述

【例2-3】产生随机文本:程序获得《创世纪》文本中所有的双连词,然后构造一个条件频率分布来记录哪些词汇最有可能会跟在给定词后面。generate_model()函数适用这些数据和种子词来产生随机文本。
【例2-3】代码如下:
在这里插入图片描述

【例2-3】运行结果如图
在这里插入图片描述

thank you

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值