未加星标

Python NLTK学习4(条件频率分布)

字体大小 | |
[开发(python) 所属分类 开发(python) | 发布者 店小二04 | 时间 2017 | 作者 红领巾 ] 0人收藏点击收藏

发表于:2016年12月26日阅读:119


Python NLTK学习4(条件频率分布)

本系列博客为学习《用python进行自然语言处理》一书的学习笔记。

前文复习

前面的博客中我们学习了一些语料库,我们知道布朗语料库是一个按照文体分类的语料库。我们还学习频率分布对象FreqDist。我们指定单词列表变量mylist,FreqDist(mylist)会计算列表中每个项目出现的次数。本章我们将学习条件频率分布对象(ConditionalFreqDist),条件频率分布是频率分布的集合,每个频率分布有一个不同的条件,这个条件通常是文本的类别。

ConditionalFreqDist

先看一个示例:

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

条件频率分布需要处理的是配对列表,每对的形式是(条件,事件),在示例中条件为文体类别,事件为单词。

ConditionalFreqDist::conditions():返回条件列表。

print(cfd.conditions())

结果为:

['religion', 'mystery', 'editorial', 'science_fiction', 'learned', 'hobbies', 'government', 'adventure', 'reviews', 'belles_lettres', 'fiction', 'lore', 'news', 'romance', 'humor']

ConditionalFreqDist::tabulate(conditions, samples):根据指定的条件和样本,打印条件频率分布表格。

genres = ['news', 'religion', 'hobbies', 'science_fiction', 'romance', 'humor'] modals = ['can', 'could', 'may', 'might', 'must', 'will'] cfd.tabulate(conditions=genres, samples=modals)

结果为:

can could may might must will news 93 86 66 38 50 389 religion 82 59 78 12 54 71 hobbies 268 58 131 22 83 264 science_fiction 16 49 4 12 8 16 romance 74 193 11 51 45 43 humor 16 30 8 8 9 13

我们可以看到不同情态动词在不同类别下的出现次数。

ConditionalFreqDist::plot(conditions, samples):根据给定的条件和样本,绘制条件频率分布图。

cfd.plot(conditions=genres, samples=modals)

结果为:


Python NLTK学习4(条件频率分布)
双连词

nltk.bigrams(words):根据给定的单词列表,生成所有的双连词组。

sent = ['I', 'am', 'a', 'good', 'man'] print(list(nltk.bigrams(sent)))

结果为:

[('I', 'am'), ('am', 'a'), ('a', 'good'), ('good', 'man')]

如果我们对一个文本使用bigrams方法,那么我们便得到该文本的所有双连词,如果我们对所有的双连词进行条件频率分布处理,那么我们就可以知道单词的后续词的频率分布。

text = brown.words(categories='news') bigrams_words = nltk.bigrams(text) cfd = nltk.ConditionalFreqDist(bigrams_words) fd = cfd['can'] fd.plot(10)

ConditionalFreqDist继承自dict,ConditionalFreqDist对象的每个键对应的值为FreqDist对象,代码中我们使用了FreqDist的plot方法。

结果为:


Python NLTK学习4(条件频率分布)

我们可以看到can单词最常见的后续词是be。

总结

nltk.bigrams(words):根据给定的单词列表,生成所有的双连词组

ConditionalFreqDist类 继承自dict 构造函数接受一个配对列表,每对的形式是(条件,事件) 键为条件,值为FreqDist对象 ConditionalFreqDist成员方法: conditions(),返回条件列表 tabulate(conditions, samples),根据指定的条件和样本,打印条件频率分布表格 plot(conditions, samples),根据给定的条件和样本,绘制条件频率分布图 其他章节链接

Python NLTK学习1(Text对象)

Python NLTK学习2(FreqDist对象)

Python NLTK学习3(语料库)

Python NLTK学习4(条件频率分布)

Python NLTK学习5(词性标注)

本文开发(python)相关术语:python基础教程 python多线程 web开发工程师 软件开发工程师 软件开发流程

分页:12
转载请注明
本文标题:Python NLTK学习4(条件频率分布)
本站链接:http://www.codesec.net/view/519788.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 开发(python) | 评论(0) | 阅读(59)