python之获得文本语料和词汇资源(3)

2.2条件频率分布
条件频率分布是频率分布的集合,每个频率分布有一个不同的条件。这个条件通常是文本的类别。当预料分为几类时,可以计算每个类别独立的领率分布。就可以研究类别之间的系统性差异。

2.2.1按照文本计数词汇

import nltk
from nltk.corpus import brown
cfd = nltk.ConditionalFreqDist(
    (genre,word)
    for genre in brown.categories()
    for word in brown.words(categories = genre)
)

#对于每个问题,遍历文体中的每个词以产生文体与词的配对
genre_word = [(genre,word)
              for genre in ['news','romance']
              for word in brown.words(categories = genre)]
print(len(genre_word)) #一共产生了多少配对
print(genre_word[:4])  #news与word的配对
print(genre_word[-4:]) #romance与word的配对

cfd = nltk.ConditionalFreqDist(genre_word)
print(cfd)  #确认有两个条件
print(cfd.conditions()) #输出具体的两个条件是什么

print(cfd['news'])  
print(cfd['romance']) 
print(list(cfd['romance']))  
print(cfd['romance']['could'])

2.2.2绘制分布图和分布表
ConditionalFreqDist除了提供组合两个或两个以上的频率分布及更容易初始化功能之外,还提供了制表和绘图的功能
例1:绘制分布图

import nltk 
form nltk.corpus import inaugural
cfd = nttk.ConditionalFreqDist(
	(target,fileid[:4])
	for fileid in inaugural.fileids()
	for w in inaugural.words(fileid)
	for target in ['america','citizen']
	if w.lower().startswith(target)
)
cfd.plot

例2:绘制分布表

import nltk
from nltk.corpus import udhr
languages = ['Chickasaw','English','German_Deutsch',
             'Greenlandic_Inuktikut','Hungarian_Magyar','Ibibio_Efik']
cfd = nltk.ConditionalFreqDist(
    (lang,len(word))
    for lang in languages
    for word in udhr.words(lang + '-Latin1')
)
cfd.tabulate(conditions = ['English','German_Deutsch'],
             samples = range(10),cumulative = True)

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

sent = ['In','the','beginning','God','created','the','heaven','and','the','earth','.']
print(nltk.bigrams(sent))  #建立了一个连续的词对链表

例3:产生随机文本:将每个词作为一个条件,对于每个词都有效的依据后续词的创建频率分布
generate_model()函数包含简单的循环以生成文本

import nltk
def generate_model(cfdist,word,num=15):
	for i in range(num):
		print
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值