Python自然语言处理-学习笔记(2)——获得文本语料和词汇资源

语料库基本语法

载入自己的语料库
PlaintextCorpusReadera 从文件系统载入
BracketParseCorpusReader 从本地硬盘载入

写一段简短的程序,通过遍历前面所列出的与gutenberg文体标识符相应的fileid(文件标识符),然后统计每个文本:

import nltk
from nltk.corpus import gutenberg 
for fileid in gutenberg.fileids():
num_chars=len(gutenberg.raw(fileid))  ###统计字符数
num_words=len(gutenberg.words(fileid))  ##统计单词书
num_sent=len(gutenberg.sents(fileid))  ###统计句子数
num_vocab=len(set([w.lower() for w in gutenberg.words(fileid)]))  ###唯一化单词
#统计平均词长、平均句子长度和本文中每个词出现的平均次数
  print(int(num_chars/num_words),int(num_words/num_sent),int(num_words/num_vocab),fileid)

ConditionalFreqDist 条件概率分布

以一个配对链表作为输入,需要给分配的每个事件关联一个条件,输入时类似于 (条件,事件)的元组。

import nltk
from nltk.corpus import inaugural
cfd=nltk.ConditionalFreqDist((target,fileid[:4])
                            for fileid in inaugural.fileids()
                            for w in inaugural.words(fileid)
                            for target in ['american','citizen']
                            if w.lower().startswith(target) )
cfd.conditions()    #查看条件,同时条件可以直接作索引          
cfd.plot()

结果

尤其对于plot() 和 tabulate() 有了更多参数选择:

conditions:指定条件
samples:迭代器类型,指定取值范围
cumulative:设置为True可以查看累积值

几个简单文字处理函数总结

生成随机文本、生成英语单词的复数形式、过滤文本

NLTK中定义的基本语料库函数:

示例 描述
fileids() 语料库中的文件
fileids([categories]) 这些分类对应的语料库中的文件
categories() 语料库中的分类
categories([fileids]) 这些文件对应的语料库中的分类
raw() 语料库的原始内容
raw(fileids=[f1,f2,f3]) 指定文件的原始内容
raw(categories=[c1,c2]) 指定分类的原始内容
words() 整个语料库中的词汇
words(fileids=[f1,f2,f3]) 指定文件中的词汇
words(categories=[c1,c2]) 指定分类中的词汇
sents() 指定分类中的句子
sents(fileids=[f1,f2,f3]) 指定文件中的句子
sents(categories=[c1,c2]) 指定分类中的句子
abspath(fileid) 指定文件在磁盘上的位置
encoding(fileid) 文件的编码(如果知道的话)
open(fileid) 打开指定语料库文件的文件流
root() 到本地安装的语料库根目录的路径

NLTK 中的条件频率分布

示例 描述
cfdist= ConditionalFreqDist(pairs) 从配对链表中创建条件频率分布
cfdist.conditions() 将条件按字母排序
cfdist[condition] 此条件下的频率分布
cfdist[condition][sample] 此条件下给定样本的频率
cfdist.tabulate() 为条件频率分布制表
cfdist.tabulate(samples, conditions) 指定样本和条件限制下制表
cfdist.plot() 为条件频率分布绘图
cfdist.plot(samples, conditions) 指定样本和条件限制下绘图
cfdist1 < cfdist2 测试样本在 cfdist1 中出现次数是否小于在 cfdist2 中出现次数

学习NLTK常用语料库(补充中……)

语料库 介绍
gutenberg 古腾堡项目,包含36000+本免费电子图书
webtext 网络聊天文本
brown 第一个百万词级的英文电子语料库,按文本分类,用categories()查看,如新闻、小说、宗教等
reuters 路透社语料库,包含10788个新闻文档,分为90个主题,按训练和测试分为两组
inaugural 就职演说语料库,文件名包含年代和总统名
udhr 世界人权宣言语料库,文件名包含字符编码信息
words 词汇语料库,用来进行拼写检查,含大写字母
stopwords 停用词语料库
cmudict 美国CMU发音词典,为语音合成而设计,entries()包含(词语,发音),dict()[词语]来查词典。
swadesh 比较词表,包含多种语言的约200个常用词列表,entries([fileid1,fileid2,…])访问多语言中的同源词,dict
toolbox 工具箱,每个条目包含[(word,[(属性,值)…])]
wordnet 面向语义的英语词典,包含155287个单词和117659个同义词,lemmas得到指定同义词集的所有词条,lemma查找特定的词条,synsets得到一个词条所对应的同义词集,hyponyms()下位词,hypernyms()上位词
movie_reviews 电影评论语料库,每个评论归类为正面或负面

猜你喜欢

转载自blog.csdn.net/qq_37717661/article/details/81212592
今日推荐