语料库基本语法
载入自己的语料库
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 | 电影评论语料库,每个评论归类为正面或负面 |