1.简介
NLTK (Natural Language Toolkit) 是自然语言处理(NLP)任务的 Python 库,内置大量NLP数据集与计算包。
NLP数据集也叫语料库 (Corpus), 若无特殊格式或标记,数据集通常来自txt等文本文件。
本教程内容适用版本:
- nltk = 3.8.1
- python = 3.7.2
1.1 主要模块
涵盖NLP基本操作和大量语料(英文为主):
Module | 功能描述 (EN / 中文) | 典型用途 / 算法术语 |
---|---|---|
nltk.corpus | Text corpora and lexical resources / 文本语料库和词汇资源 | Brown、Gutenberg 等语料库;WordNet 词典、停用词表等 |
nltk.tokenize / nltk.stem | Text tokenization and stemming (split text into words/sentences; remove affixes) / 文本分词和词干提取(拆分为单词/句子;移除词缀) | 单词/句子分词(word_tokenize 、sent_tokenize );Porter、Lancaster、Snowball 词干算法 |
nltk.collocations | Identify collocations (frequently co-occurring word combos) / 搭配词发现(识别高频共现词组) | 双字/三字搭配;关联度量 (PMI, χ², t-检验, 似然比) |
nltk.tag | Part-of-speech tagging (assign POS tags) / 词性标注(为单词分配词性标签) | HMM、CRF、最大熵等词性标注器 |
nltk.classify / nltk.cluster | Classification & clustering / 分类与聚类 | 文本分类(朴素贝叶斯、最大熵、SVM);聚类(K-means、EM) |
nltk.chunk | Chunking (shallow parsing, phrase extraction) / 短语切分(浅层解析,如名词短语提取) | 正则表达式分块;IOB 标记;基础名词/动词短语 |
nltk.parse | Parsing (syntactic analysis) / 句法分析(生成句子结构树) | CFG/PCFG 解析;移进-归约、CKY、图谱解析(Chart) |
nltk.sem / nltk.inference | Semantic interpretation & inference (represent meaning in logic) / 语义表示与逻辑推理 | 一阶逻辑 (FOL,表示含义);定理证明 (Prover9) 、模型构建 (Mace) |
nltk.metrics | Evaluation metrics / NLP评估指标 | Precision、Recall、F1、Accuracy(精确率、召回率、F1 值、BLEU、混淆矩阵分析等) |
nltk.probability | Probability distributions / 概率分布(频率分布与条件概率分布) | FreqDist、ConditionalFreqDist;最大似然估计 (MLE)、拉普拉斯平滑 |
nltk.lm | Language modeling / 语言模型 | n-gram 模型(unigram/bigram, 基于统计);Kneser-Ney/Laplace 平滑;Perplexity (困惑度) |
nltk.app / nltk.chat | Interactive demos & chatbots / 交互式示例程序和聊天机器人 | GUI 演示(Chart Parser、WordNet 浏览器);Eliza/Zen 聊天机器人 |
nltk.toolbox | Toolbox format I/O / 田野语言学工具(处理 SIL Toolbox 格式) | 标准格式标记 (SFM) 解析器 |
1.2 Corpus内置方法
这里以小说nltk.corpus.gutenberg的圣经(‘bible-kjv.txt’)为例:
类别 | 方法 / 属性 | 示例代码 | 说明 |
---|---|---|---|
读取文本结构 | fileids() | gutenberg.fileids() | 获取所有文本文件名 |
raw(fileid) | gutenberg.raw('bible-kjv.txt') | 原始文本字符串 | |
words(fileid) | gutenberg.words('bible-kjv.txt') | 单词列表(空格+标点分割) | |
sents(fileid) | gutenberg.sents('bible-kjv.txt') | 二维句子列表 | |
paras(fileid) | x.paras() (部分语料支持) | 三维段落列表 | |
文本分析 | FreqDist() | FreqDist(gutenberg.words(...)) | 词频分布 |
Text() | Text(gutenberg.words(...)) | 构建 NLTK Text 对象 | |
.concordance(word) | Text(...).concordance("God") | 查找关键词上下文 | |
.similar(word) | Text(...).similar("God") | 查看上下文替换词(语义近) | |
.common_contexts(["word1",...]) | Text(...).common_contexts(["God", "Lord"]) | 查看共现上下文 | |
.collocations() | Text(...).collocations() | 常见词组搭配(PMI) | |
分词/句分割 | word_tokenize() | word_tokenize(gutenberg.raw(...)) | 精细化分词,保留标点 |
sent_tokenize() | sent_tokenize(gutenberg.raw(...)) | 精细化句子切分 | |
nltk.ngrams() | list(ngrams(tokens, 3)) | n-gram 构造 | |
词性标注 | pos_tag() | pos_tag(tokens[:50]) | 给词打词性标签 |
词性标注表 | nltk.help.upenn_tagset('VB') | help.upenn_tagset('NN') | 查看 Penn Treebank 词性定义 |
其他常用 | Text(...).generate() | Text(...).generate() | 基于词序列生成文本(n-gram) |
2. 语料库简介(Overview)
nltk.corpus 模块中包含了多种类型的语料库,可大致分为以下几类:
2.1. 文本语料库(Text Corpora)
用于自然语言处理中的分词、句法、语义、风格等分析。
常见示例:
- gutenberg:18 本经典英文文学作品
- brown:1961 年的美国英语通用语料库(500 文本)
- reuters:路透社新闻分类语料(10,000+ 文本)
- inaugural:历届美国总统就职演讲
- webtext:网络体文本(Reddit、电影评论等)
2.2 词汇资源(Lexical Resources)
用于词性、语义关系、拼写、发音等词汇分析。
常见示例:
- wordnet:英文词义库(支持同义词、反义词、上下义等)
- cmudict:CMU 发音词典
- words:英语常见单词列表
- names:常见英文人名
- stopwords:英文停用词列表
2.3. 分类语料(Categorized Corpora)
带标签的数据,常用于分类、监督学习等任务。
常见示例:
- movie_reviews:IMDb 影评,正/负情感标签
- reuters:每篇文章带多个主题标签
- subjectivity:主观/客观句子分类
- product_reviews_1:商品评论(分类任务)
2.4 标注语料(Tagged Corpora)
带词性标注的语料,适用于词性标注训练/测试。
常见示例:
- treebank:宾州树库(句法分析)
- brown(也有 POS 标签版本)
- conll2000:用于语块(chunking)任务
2.5 多语言语料(Multilingual Corpora)
支持多种语言的语料库。
常见示例:
- udhr:世界人权宣言的多语言版本(Universal Declaration of Human Rights)
- cess_cat / cess_esp:加泰罗尼亚语 / 西班牙语语料
2.6 聊天语料与对话(Chat Corpora)
- nps_chat:在线聊天对话句子,带标签
2.7. 句法结构树(Parsed Corpora)
- treebank:提供带结构树的语法分析句子
- dependency_treebank:依存句法分析树
3.文本语料库(Text Corpora)
3.1 古腾堡项目 Gutenberg
NLTK 的 gutenberg 语料库来自 Project Gutenberg 项目,包含公开版权的经典文学作品(小说)。内容包含全部正文(不删节)、 版权提示或书籍元信息(可手动清洗)。文本通常来源 .txt,没有章节分隔符、元数据标签等结构化信息。有时附带序言、脚注等,比如莎士比亚文本中会包含剧本角色说明等附加内容。
- 输出gutenberg小说总数(即文件名):
import nltk
print(nltk.corpus.gutenberg.fileids())
当前版本包含 18 本文学作品,如《爱玛》《双城记》《圣经》:
[‘austen-emma.txt’, ‘austen-persuasion.txt’, ‘austen-sense.txt’, ‘bible-kjv.txt’, ‘blake-poems.txt’, ‘bryant-stories.txt’, ‘burgess-busterbrown.txt’, ‘carroll-alice.txt’, ‘chesterton-ball.txt’, ‘chesterton-brown.txt’, ‘chesterton-thursday.txt’, ‘edgeworth-parents.txt’, ‘melville-moby_dick.txt’, ‘milton-paradise.txt’, ‘shakespeare-caesar.txt’, ‘shakespeare-hamlet.txt’, ‘shakespeare-macbeth.txt’, ‘whitman-leaves.txt’]
具体信息如下:
ID | 文件名 | 作品名称(英文) | 作者(英文) | 中文简介 |
---|---|---|---|---|
1 | austen-emma.txt | Emma | Jane Austen | 简·奥斯汀《爱玛》 |
2 | austen-persuasion.txt | Persuasion | Jane Austen | 简·奥斯汀《劝导》 |
3 | austen-sense.txt | Sense and Sensibility | Jane Austen | 简·奥斯汀《理智与情感》 |
4 | bible-kjv.txt | Bible (King James Version) | 多人编纂 | 《圣经》钦定版(英王詹姆斯版) |
5 | blake-poems.txt | Poems (1789) | William Blake | 威廉·布莱克诗集(如《天真与经验之歌》) |
6 | bryant-stories.txt | Stories to Tell to Children | Sara Cone Bryant | 儿童故事集(萨拉·C·布莱恩特) |
7 | burgess-busterbrown.txt | Buster Brown | Thornton W. Burgess | 儿童故事《巴斯特·布朗》 |
8 | carroll-alice.txt | Alice’s Adventures in Wonderland | Lewis Carroll | 刘易斯·卡罗尔《爱丽丝梦游仙境》 |
9 | chesterton-ball.txt | The Ball and the Cross | G. K. Chesterton | 《球与十字架》 |
10 | chesterton-brown.txt | The Innocence of Father Brown | G. K. Chesterton | 《布朗神父探案集》 |
11 | chesterton-thursday.txt | The Man Who Was Thursday | G. K. Chesterton | 《星期四出生的男人》 |
12 | edgeworth-parents.txt | The Parent’s Assistant | Maria Edgeworth | 《父母助手》(教育寓言故事集) |
13 | melville-moby_dick.txt | Moby-Dick; or, The Whale | Herman Melville | 赫尔曼·梅尔维尔《白鲸》 |
14 | milton-paradise.txt | Paradise Lost | John Milton | 弥尔顿《失乐园》 |
15 | shakespeare-caesar.txt | Julius Caesar | William Shakespeare | 莎士比亚《尤利乌斯·凯撒》 |
16 | shakespeare-hamlet.txt | Hamlet | William Shakespeare | 莎士比亚《哈姆雷特》 |
17 | shakespeare-macbeth.txt | Macbeth | William Shakespeare | 莎士比亚《麦克白》 |
18 | whitman-leaves.txt | Leaves of Grass | Walt Whitman | 惠特曼《草叶集》 |
3.1 Bible (King James Version)-ID4
- 数据信息:
- 总词数:约 1,010,654。
- 总句数:约 30,103。
- 词汇量:约 13,769 个唯一单词。
- 最常见tokens:(‘,’, 70509), (‘the’, 62103), (‘:’, 43766), (‘and’, 38847)。
- 平均句长:约 33.57 个单词。
- 常见搭配:(‘,’, ‘and’), (‘the’, ‘LORD’), (“'”, ‘s’), (‘of’, ‘the’) 等。
- 包含 “God” 的句子:约 3,423 句。
以下是上述信息的部分输出(bible-kjv.txt):
from nltk.corpus import gutenberg, stopwords
from nltk.tokenize import word_tokenize
import string
# 获取原始文本
bible_text = gutenberg.raw('bible-kjv.txt')
print(bible_text[:100]) # 打印前 100 个字符, 输出示例: "[The King James Bible]\n\nThe Old Testament of ..."
print('----------')
# 获取单词列表
bible_words = gutenberg.words('bible-kjv.txt')
print(bible_words[:10]) # 打印前 10 个单词, 输出示例: ['[', 'The', 'King', 'James', 'Bible', ']', 'The', 'Old', 'Testament', 'of']
print(len(bible_words)) # 统计总词数, 输出示例: 约 1,010,654 个单词
print('----------')
# # 获取句子列表
bible_sents = gutenberg.sents('bible-kjv.txt')
print(bible_sents[:2]) # 打印前 2 个句子: [['[', 'The', 'King', 'James', 'Bible', ']'], ['The', 'Old', 'Testament', 'of', 'the', 'Holy', 'Bible']]
print(len(bible_sents)) # 统计总句数, 输出示例: 约 30,103 个句子
print('----------')
# # 词汇量(去重后的单词数)
vocab = set(bible_words)
print(f"词汇量: {len(vocab)}") # 输出示例: 约 13, 769 个唯一单词(词汇量)
print('----------')
# # 平均句长(单词数)
avg_sent_len = sum(len(sent) for sent in bible_sents) / len(bible_sents)
print(f"平均句长: {avg_sent_len:.2f} 个单词") # 输出示例: 约 33.57 个单词
print('----------')
# # 词频统计
from nltk import FreqDist
freq_dist = FreqDist(bible_words)
print(freq_dist.most_common(10))
# 打印最常见的 10 个单词: [(',', 70509), ('the', 62103), (':', 43766),
# ('and', 38847), ('of', 34480), ('.', 26160), ('to', 13396), ('And', 12846), ('that', 12576), ('in', 12331)]
print('----------')
# 分词
raw_text = bible_text[:500] # 取前 500 字符示例
tokens = word_tokenize(raw_text) # 格式区别sents()方法,其按列表元素分割句子, 句子内为粉刺
print(tokens[:10]) # 输出示例: ['[', 'The', 'King', 'James', 'Bible', ']', 'The', 'Old', 'Testament', 'of']
print('----------')
# 移除标点和停用词
stop_words = set(stopwords.words('english') + list(string.punctuation))
cleaned_tokens = [w.lower() for w in tokens if w.lower() not in stop_words]
print(cleaned_tokens[:10]) # 输出示例: ['king', 'james', 'bible', 'old', 'testament', 'king', 'james', 'bible', 'first', 'book']
# with open('cleaned_bible_words.txt', 'w') as f:
# f.write('\n'.join(cleaned_tokens)) # 保存清洗后的单词到文件
print('----------')
# 对前 100 个单词进行词性标注
from nltk import pos_tag
words = bible_words[:100]
tagged_words = pos_tag(words)
print(tagged_words[:10]) # 打印前 10 个词的词性
# [('[', 'VB'), ('The', 'DT'), ('King', 'NNP'), ('James', 'NNP'),
#('Bible', 'NNP'), (']', 'VBZ'), ('The', 'DT'), ('Old', 'NNP'), ('Testament', 'NNP'), ('of', 'IN')]
print('----------')
# 查找包含 "God" 的句子
god_sents = [sent for sent in bible_sents if 'God' in sent]
print(f"包含 'God' 的句子数: {len(god_sents)}") # 输出示例: 约 3,423 句
print(god_sents[0]) # 打印第一个匹配的句子
# 输出示例: ['1', ':', '1', 'In', 'the', 'beginning', 'God', 'created', 'the', 'heaven', 'and', 'the', 'earth', '.']
print('----------')
# 查找常见双词搭配
from nltk.collocations import BigramCollocationFinder
from nltk.metrics import BigramAssocMeasures
finder = BigramCollocationFinder.from_words(bible_words)
finder.apply_freq_filter(10) # 过滤出现次数少于 10 的搭配
collocations = finder.nbest(BigramAssocMeasures.likelihood_ratio, 10)
print(collocations)
# [(',', 'and'), ('the', 'LORD'), ("'", 's'), ('of', 'the'),
#('shall', 'be'), ('I', 'will'), ('in', 'the'), ('said', 'unto'), (';', 'and'), ('thou', 'shalt')]
print('----------')
3.2 The Parent’s Assistant-ID12
-
数据信息(总量约圣经的1/3-1/4):
- 总词数:约 210,663。
- 总句数:约 10,230。
- 词汇量:约 9,593 个唯一单词。
- 最常见tokens:(‘,’, 15219), (‘the’, 7149), (‘.’, 6945), (‘to’, 5150)。
- 平均句长:约 20.60 个单词。
- 常见搭配:(“'”, ‘s’), (‘,"’, ‘said’), (‘,’, ‘and’), (‘."’, ‘"’) 等。
- 包含 “God” 的句子:约 17 句。
-
小说信息:
《The Parent’s Assistant;》是玛丽亚·埃奇沃斯(Maria Edgeworth)创作的儿童故事集,首次出版于1796年,由约瑟夫·约翰逊(Joseph Johnson)发行。这部作品是儿童文学史上的重要里程碑,反映了启蒙时代关于儿童教育和道德培养的观念。玛丽亚·埃奇沃斯(1768-1849)是一位英裔爱尔兰作家、教育家和小说家,以其对儿童文学和现实主义小说的贡献而闻名。
作者出生于英格兰牛津郡,后随家人移居爱尔兰朗福德郡,协助父亲管理家族庄园。她深受启蒙运动和卢梭教育理念的影响,强调通过故事培养儿童的道德感和理性思维。《The Parent’s Assistant》是她最早的儿童文学作品之一,旨在为父母和教育者提供寓教于乐的素材。
作品不仅面向儿童,也通过道德故事引导父母反思教育方式。创作这部作品时,正值18世纪末的动荡时期(如法国大革命、爱尔兰叛乱),但埃奇沃斯选择通过“安静的乡村生活场景”传递道德信息,展现她对社会稳定的关注。
该作品是一部短篇故事集,每个故事独立成篇,聚焦儿童的日常生活、道德困境和成长经历。故事通过引人入胜的叙事传递道德教训,强调美德、勤奋、诚实和责任感等价值观,以下是各篇故事的简要介绍:
故事标题 | 中文译名 | 主题与寓意 |
---|---|---|
Lazy Lawrence | 懒惰的劳伦斯 | 批评懒惰,强调勤奋和自律的重要性。 |
Tarlton | 塔尔顿 | 揭示轻信和不良同伴的危险,鼓励儿童选择正直的朋友。 |
The False Key | 假钥匙 | 故事教导诚实是最佳选择,欺骗终将暴露。 |
The Orange Man | 卖橙人 | 讲述诚实与贪婪的对比,强调诚实、同情心和公平对待他人的重要性。 |
The Little Dog Trusty | 小狗特鲁斯蒂 | 通过小狗的忠诚和儿童的冒险,教导儿童信守承诺并珍惜可靠的伙伴。 |
The Barring Out, or Party Spirit | 罢课,或党派精神 | 批评盲目从众,强调独立思考与责任感。 |
The Birthday Present | 生日礼物 | 批判盲目追随时尚与虚荣的倾向,强调实用与节制。 |
Simple Susan | 单纯的苏珊 | 赞扬纯真与善良,强调同情心与家庭责任。 |
The Bracelets | 手镯 | 探讨虚荣与真实价值,强调内在美的重要性。 |
The Little Merchants | 小商人 | 通过儿童经营小生意的经历,强调公平交易和诚实经商的重要性。 |
The Purple Jar | 紫色罐子 | 探讨选择与后果,强调为自己的行为负责。 |
Old Poz | 老波兹 | 讲述假装公正却自私的伪善危害,以幽默方式传达正义与公平理念。 |
The Mimic | 模仿者 | 通过模仿他人缺点的故事警示盲目模仿的危险,教导保持自我并尊重他人 |
Mademoiselle Panache | 潘娜小姐 | 批评虚荣与表面功夫,强调真实与诚实。 |
The Basket Woman | 篮子女人 | 讲述卖篮女通过勤劳和智慧改善生活,鼓励尊重劳动者并学会自立。 |
The White Pigeon | 白鸽 | 讲述善良与回报的故事,强调善行的重要性。 |
The Orphans | 孤儿 | 探讨社会责任,鼓励上层阶级以知识和善行帮助弱势群体。 |
Waste Not, Want Not | 勤俭节约 | 通过两个男孩对待食物的不同态度,教导避免浪费和规划未来的重要性。 |
Forgive and Forget | 宽恕与遗忘 | 通过儿童间的争吵与和解,强调宽容与原谅,促进和谐人际关系。 |
Eton Montem | 伊顿蒙特姆 | 通过伊顿公学, 探讨集体活动的责任与纪律,鼓励在群体中保持品格和理性。 |
-
部分故事简介:
-
《The Orphans》:故事以爱尔兰罗斯莫尔城堡废墟附近的一位寡妇和她的四个孩子为背景。寡妇病重,临终前嘱咐长女玛丽照顾弟妹。母亲去世后,孤儿们面临经济困境和驱逐危机。玛丽通过纺纱和劳作还清债务,带领弟妹在城堡废墟中找到庇护。社区的善意支持他们生存,展现了家庭忠诚和自力更生的主题。
-
《The Purple Jar》:讲述女孩罗莎蒙德在商店看到一个紫色罐子,执意要买,但母亲让她在罐子和实用鞋子间选择。她选择了罐子,却发现它只是普通玻璃罐,毫无价值。这个故事教导儿童权衡选择和延迟满足的重要性。
-
-
截取完整的一部小说
我们从该语料库中截取一部完整的小说《THE WHITE PIGEON》:
import nltk
from nltk.corpus import gutenberg
# 确保已下载所需的 NLTK 数据
nltk.download('gutenberg')
# 加载文本
text = gutenberg.raw('edgeworth-parents.txt')
# 定义故事的起始和结束标志
start_marker = 'THE WHITE PIGEON'
end_marker = 'THE BIRTHDAY PRESENT'
# 查找起始和结束位置
start_index = text.find(start_marker)
end_index = text.find(end_marker)
# 确保找到标志
if start_index != -1 and end_index != -1:
# 提取故事内容
story_text = text[start_index:end_index].strip() # 移除这些首尾字符 1.空格 ' ',2.制表符 \t,3.换行符 \n,4.回车符 \r
# 保存到本地文件
with open('the_white_pigeon.txt', 'w', encoding='utf-8') as f:
f.write(story_text)
print("《The White Pigeon》已成功保存到 'the_white_pigeon.txt' 文件中。")
else:
print("未能找到指定的故事段落,请检查标志是否正确。")
该故事token数量:3,936,唯一token数量:930
3.3 Reuters
- 路透社新闻语料库,当前版本有 10,788 篇新闻文章;
- 每个新闻包含多个标签(>=1),通过api提供,适合文本分类任务;
唯一不足,没有新闻日期
- 数据文件格式:
[‘test/14826’, ‘test/14828’, ‘test/14829’,…, ‘training/9994’, ‘training/9995’]
- 数据信息
- 新闻数量 (Total documents): 10,788
- 总词数 (Total tokens): 1,720,901
- 总句数 (Sentences): 54,716
- 词汇量: 41,600
- 平均句长: 31.45 个单词
- 最常见tokens:(‘.’, 94687), (‘,’, 72360), (‘the’, 58251), (‘of’, 35979)。
- 常见搭配:(‘&’, ‘lt’), (‘lt’, ‘;’), (“'”, ‘s’), (‘,’, ‘000’)等。
- 包含 “God” 的句子:1 句。
完整标签包括:
[‘acq’, ‘alum’, ‘barley’, ‘bop’, ‘carcass’, ‘castor-oil’, ‘cocoa’, ‘coconut’, ‘coconut-oil’, ‘coffee’, ‘copper’, ‘copra-cake’, ‘corn’, ‘cotton’, ‘cotton-oil’, ‘cpi’, ‘cpu’, ‘crude’, ‘dfl’, ‘dlr’, ‘dmk’, ‘earn’, ‘fuel’, ‘gas’, ‘gnp’, ‘gold’, ‘grain’, ‘groundnut’, ‘groundnut-oil’, ‘heat’, ‘hog’, ‘housing’, ‘income’, ‘instal-debt’, ‘interest’, ‘ipi’, ‘iron-steel’, ‘jet’, ‘jobs’, ‘l-cattle’, ‘lead’, ‘lei’, ‘lin-oil’, ‘livestock’, ‘lumber’, ‘meal-feed’, ‘money-fx’, ‘money-supply’, ‘naphtha’, ‘nat-gas’, ‘nickel’, ‘nkr’, ‘nzdlr’, ‘oat’, ‘oilseed’, ‘orange’, ‘palladium’, ‘palm-oil’, ‘palmkernel’, ‘pet-chem’, ‘platinum’, ‘potato’, ‘propane’, ‘rand’, ‘rape-oil’, ‘rapeseed’, ‘reserves’, ‘retail’, ‘rice’, ‘rubber’, ‘rye’, ‘ship’, ‘silver’, ‘sorghum’, ‘soy-meal’, ‘soy-oil’, ‘soybean’, ‘strategic-metal’, ‘sugar’, ‘sun-meal’, ‘sun-oil’, ‘sunseed’, ‘tea’, ‘tin’, ‘trade’, ‘veg-oil’, ‘wheat’, ‘wpi’, ‘yen’, ‘zinc’]
3.4 布朗语料库 Brown
1961 年的布朗语料库,是经典的均衡英语语料;按体裁分类(新闻、小说、宗教、科技等),共 500 文本,总词数约百万级,句子偏短。
-
数据信息
- 新闻数量 (Total documents): 500
- 总词数 (Total tokens): 1,161,192
- 总句数 (Sentences): 57,340
- 词汇量: 56,057
- 平均句长: 20.25 个单词
- 最常见tokens:(‘the’, 62713), (‘,’, 58334), (‘.’, 49346), (‘of’, 36080)。
- 常见搭配:无。
- 包含 “God” 的句子:278 句。
-
文件名前缀(分类)
原始数据的categories为简写(15类):
[‘adventure’, ‘belles_lettres’, ‘editorial’, ‘fiction’, ‘government’, ‘hobbies’, ‘humor’, ‘learned’, ‘lore’, ‘mystery’, ‘news’, ‘religion’, ‘reviews’, ‘romance’, ‘science_fiction’]
对应文件名与标签对应,也为15类, 对于关系如下::
前缀 | 类别名称(Category) | 描述 | 类别简写(categories) |
---|---|---|---|
ca | Press: reportage | 报刊报道 | news |
cb | Press: editorial | 报刊社论 | editorial |
cc | Press: reviews | 报刊评论 | reviews |
cd | Religion | 宗教文本 | religion |
ce | Skills and hobbies | 技能与爱好 | hobbies |
cf | Popular lore | 民间传说、常识性话题 | lore |
cg | Belles lettres, biography, essays | 散文、美文、传记等 | belles_lettres |
ch | Miscellaneous | 杂项(政府、报告、传单等) | government |
cj | Learned (academic prose) | 学术文章 | learned |
ck | Fiction: general | 一般小说 | fiction |
cl | Fiction: mystery | 推理小说 | |
cm | Fiction: science fiction | 科幻小说 | |
cn | Fiction: adventure | 冒险小说 | |
cp | Fiction: romance | 言情小说 | |
cr | Fiction: humor | 幽默小说 |
- 文件名
这里ca有44个,cb24个, cr9个…, 500个文件名如下:
[‘ca01’, ‘ca02’, ‘ca03’, ‘ca04’, ‘ca05’, ‘ca06’, ‘ca07’, ‘ca08’, ‘ca09’, ‘ca10’, ‘ca11’, ‘ca12’, ‘ca13’, ‘ca14’, ‘ca15’, ‘ca16’, ‘ca17’, ‘ca18’, ‘ca19’, ‘ca20’, ‘ca21’, ‘ca22’, ‘ca23’, ‘ca24’, ‘ca25’, ‘ca26’, ‘ca27’, ‘ca28’, ‘ca29’, ‘ca30’, ‘ca31’, ‘ca32’, ‘ca33’, ‘ca34’, ‘ca35’, ‘ca36’, ‘ca37’, ‘ca38’, ‘ca39’, ‘ca40’, ‘ca41’, ‘ca42’, ‘ca43’, ‘ca44’, ‘cb01’, ‘cb02’, ‘cb03’, ‘cb04’, ‘cb05’, ‘cb06’, ‘cb07’, ‘cb08’, ‘cb09’, ‘cb10’, ‘cb11’, ‘cb12’, ‘cb13’, ‘cb14’, ‘cb15’, ‘cb16’, ‘cb17’, ‘cb18’, ‘cb19’, ‘cb20’, ‘cb21’, ‘cb22’, ‘cb23’, ‘cb24’, ‘cb25’, ‘cb26’, ‘cb27’, ‘cc01’, ‘cc02’, ‘cc03’, ‘cc04’, ‘cc05’, ‘cc06’, ‘cc07’, ‘cc08’, ‘cc09’, ‘cc10’, ‘cc11’, ‘cc12’, ‘cc13’, ‘cc14’, ‘cc15’, ‘cc16’, ‘cc17’, ‘cd01’, ‘cd02’, ‘cd03’, ‘cd04’, ‘cd05’, ‘cd06’, ‘cd07’, ‘cd08’, ‘cd09’, ‘cd10’, ‘cd11’, ‘cd12’, ‘cd13’, ‘cd14’, ‘cd15’, ‘cd16’, ‘cd17’, ‘ce01’, ‘ce02’, ‘ce03’, ‘ce04’, ‘ce05’, ‘ce06’, ‘ce07’, ‘ce08’, ‘ce09’, ‘ce10’, ‘ce11’, ‘ce12’, ‘ce13’, ‘ce14’, ‘ce15’, ‘ce16’, ‘ce17’, ‘ce18’, ‘ce19’, ‘ce20’, ‘ce21’, ‘ce22’, ‘ce23’, ‘ce24’, ‘ce25’, ‘ce26’, ‘ce27’, ‘ce28’, ‘ce29’, ‘ce30’, ‘ce31’, ‘ce32’, ‘ce33’, ‘ce34’, ‘ce35’, ‘ce36’, ‘cf01’, ‘cf02’, ‘cf03’, ‘cf04’, ‘cf05’, ‘cf06’, ‘cf07’, ‘cf08’, ‘cf09’, ‘cf10’, ‘cf11’, ‘cf12’, ‘cf13’, ‘cf14’, ‘cf15’, ‘cf16’, ‘cf17’, ‘cf18’, ‘cf19’, ‘cf20’, ‘cf21’, ‘cf22’, ‘cf23’, ‘cf24’, ‘cf25’, ‘cf26’, ‘cf27’, ‘cf28’, ‘cf29’, ‘cf30’, ‘cf31’, ‘cf32’, ‘cf33’, ‘cf34’, ‘cf35’, ‘cf36’, ‘cf37’, ‘cf38’, ‘cf39’, ‘cf40’, ‘cf41’, ‘cf42’, ‘cf43’, ‘cf44’, ‘cf45’, ‘cf46’, ‘cf47’, ‘cf48’, ‘cg01’, ‘cg02’, ‘cg03’, ‘cg04’, ‘cg05’, ‘cg06’, ‘cg07’, ‘cg08’, ‘cg09’, ‘cg10’, ‘cg11’, ‘cg12’, ‘cg13’, ‘cg14’, ‘cg15’, ‘cg16’, ‘cg17’, ‘cg18’, ‘cg19’, ‘cg20’, ‘cg21’, ‘cg22’, ‘cg23’, ‘cg24’, ‘cg25’, ‘cg26’, ‘cg27’, ‘cg28’, ‘cg29’, ‘cg30’, ‘cg31’, ‘cg32’, ‘cg33’, ‘cg34’, ‘cg35’, ‘cg36’, ‘cg37’, ‘cg38’, ‘cg39’, ‘cg40’, ‘cg41’, ‘cg42’, ‘cg43’, ‘cg44’, ‘cg45’, ‘cg46’, ‘cg47’, ‘cg48’, ‘cg49’, ‘cg50’, ‘cg51’, ‘cg52’, ‘cg53’, ‘cg54’, ‘cg55’, ‘cg56’, ‘cg57’, ‘cg58’, ‘cg59’, ‘cg60’, ‘cg61’, ‘cg62’, ‘cg63’, ‘cg64’, ‘cg65’, ‘cg66’, ‘cg67’, ‘cg68’, ‘cg69’, ‘cg70’, ‘cg71’, ‘cg72’, ‘cg73’, ‘cg74’, ‘cg75’, ‘ch01’, ‘ch02’, ‘ch03’, ‘ch04’, ‘ch05’, ‘ch06’, ‘ch07’, ‘ch08’, ‘ch09’, ‘ch10’, ‘ch11’, ‘ch12’, ‘ch13’, ‘ch14’, ‘ch15’, ‘ch16’, ‘ch17’, ‘ch18’, ‘ch19’, ‘ch20’, ‘ch21’, ‘ch22’, ‘ch23’, ‘ch24’, ‘ch25’, ‘ch26’, ‘ch27’, ‘ch28’, ‘ch29’, ‘ch30’, ‘cj01’, ‘cj02’, ‘cj03’, ‘cj04’, ‘cj05’, ‘cj06’, ‘cj07’, ‘cj08’, ‘cj09’, ‘cj10’, ‘cj11’, ‘cj12’, ‘cj13’, ‘cj14’, ‘cj15’, ‘cj16’, ‘cj17’, ‘cj18’, ‘cj19’, ‘cj20’, ‘cj21’, ‘cj22’, ‘cj23’, ‘cj24’, ‘cj25’, ‘cj26’, ‘cj27’, ‘cj28’, ‘cj29’, ‘cj30’, ‘cj31’, ‘cj32’, ‘cj33’, ‘cj34’, ‘cj35’, ‘cj36’, ‘cj37’, ‘cj38’, ‘cj39’, ‘cj40’, ‘cj41’, ‘cj42’, ‘cj43’, ‘cj44’, ‘cj45’, ‘cj46’, ‘cj47’, ‘cj48’, ‘cj49’, ‘cj50’, ‘cj51’, ‘cj52’, ‘cj53’, ‘cj54’, ‘cj55’, ‘cj56’, ‘cj57’, ‘cj58’, ‘cj59’, ‘cj60’, ‘cj61’, ‘cj62’, ‘cj63’, ‘cj64’, ‘cj65’, ‘cj66’, ‘cj67’, ‘cj68’, ‘cj69’, ‘cj70’, ‘cj71’, ‘cj72’, ‘cj73’, ‘cj74’, ‘cj75’, ‘cj76’, ‘cj77’, ‘cj78’, ‘cj79’, ‘cj80’, ‘ck01’, ‘ck02’, ‘ck03’, ‘ck04’, ‘ck05’, ‘ck06’, ‘ck07’, ‘ck08’, ‘ck09’, ‘ck10’, ‘ck11’, ‘ck12’, ‘ck13’, ‘ck14’, ‘ck15’, ‘ck16’, ‘ck17’, ‘ck18’, ‘ck19’, ‘ck20’, ‘ck21’, ‘ck22’, ‘ck23’, ‘ck24’, ‘ck25’, ‘ck26’, ‘ck27’, ‘ck28’, ‘ck29’, ‘cl01’, ‘cl02’, ‘cl03’, ‘cl04’, ‘cl05’, ‘cl06’, ‘cl07’, ‘cl08’, ‘cl09’, ‘cl10’, ‘cl11’, ‘cl12’, ‘cl13’, ‘cl14’, ‘cl15’, ‘cl16’, ‘cl17’, ‘cl18’, ‘cl19’, ‘cl20’, ‘cl21’, ‘cl22’, ‘cl23’, ‘cl24’, ‘cm01’, ‘cm02’, ‘cm03’, ‘cm04’, ‘cm05’, ‘cm06’, ‘cn01’, ‘cn02’, ‘cn03’, ‘cn04’, ‘cn05’, ‘cn06’, ‘cn07’, ‘cn08’, ‘cn09’, ‘cn10’, ‘cn11’, ‘cn12’, ‘cn13’, ‘cn14’, ‘cn15’, ‘cn16’, ‘cn17’, ‘cn18’, ‘cn19’, ‘cn20’, ‘cn21’, ‘cn22’, ‘cn23’, ‘cn24’, ‘cn25’, ‘cn26’, ‘cn27’, ‘cn28’, ‘cn29’, ‘cp01’, ‘cp02’, ‘cp03’, ‘cp04’, ‘cp05’, ‘cp06’, ‘cp07’, ‘cp08’, ‘cp09’, ‘cp10’, ‘cp11’, ‘cp12’, ‘cp13’, ‘cp14’, ‘cp15’, ‘cp16’, ‘cp17’, ‘cp18’, ‘cp19’, ‘cp20’, ‘cp21’, ‘cp22’, ‘cp23’, ‘cp24’, ‘cp25’, ‘cp26’, ‘cp27’, ‘cp28’, ‘cp29’, ‘cr01’, ‘cr02’, ‘cr03’, ‘cr04’, ‘cr05’, ‘cr06’, ‘cr07’, ‘cr08’, ‘cr09’]
3.4 总统就职演讲 Inaugural
包含 1789 年以来所有美国总统就职演讲文本;虽不是“最长”,但跨度时间大、适合语言演变分析, 属于长句子语料。
注:该数据集无分类标签 (categories)
-
数据信息
- 新闻数量 (Total documents): 60
- 总词数 (Total tokens): 156,288
- 总句数 (Sentences): 5,395
- 词汇量: 10,200
- 平均句长: 28.97 个单词
- 最常见tokens:(‘the’, 9670), (‘,’, 7499), (‘of’, 7260), (‘and’, 5356)。
- 常见搭配:无。
- 包含 “God” 的句子:108 句。
-
文件名
文件名包含《年龄》和《姓名》两个信息:
[‘1789-Washington.txt’, ‘1793-Washington.txt’, ‘1797-Adams.txt’, ‘1801-Jefferson.txt’, ‘1805-Jefferson.txt’, ‘1809-Madison.txt’, ‘1813-Madison.txt’, ‘1817-Monroe.txt’, ‘1821-Monroe.txt’, ‘1825-Adams.txt’, ‘1829-Jackson.txt’, ‘1833-Jackson.txt’, ‘1837-VanBuren.txt’, ‘1841-Harrison.txt’, ‘1845-Polk.txt’, ‘1849-Taylor.txt’, ‘1853-Pierce.txt’, ‘1857-Buchanan.txt’, ‘1861-Lincoln.txt’, ‘1865-Lincoln.txt’, ‘1869-Grant.txt’, ‘1873-Grant.txt’, ‘1877-Hayes.txt’, ‘1881-Garfield.txt’, ‘1885-Cleveland.txt’, ‘1889-Harrison.txt’, ‘1893-Cleveland.txt’, ‘1897-McKinley.txt’, ‘1901-McKinley.txt’, ‘1905-Roosevelt.txt’, ‘1909-Taft.txt’, ‘1913-Wilson.txt’, ‘1917-Wilson.txt’, ‘1921-Harding.txt’, ‘1925-Coolidge.txt’, ‘1929-Hoover.txt’, ‘1933-Roosevelt.txt’, ‘1937-Roosevelt.txt’, ‘1941-Roosevelt.txt’, ‘1945-Roosevelt.txt’, ‘1949-Truman.txt’, ‘1953-Eisenhower.txt’, ‘1957-Eisenhower.txt’, ‘1961-Kennedy.txt’, ‘1965-Johnson.txt’, ‘1969-Nixon.txt’, ‘1973-Nixon.txt’, ‘1977-Carter.txt’, ‘1981-Reagan.txt’, ‘1985-Reagan.txt’, ‘1989-Bush.txt’, ‘1993-Clinton.txt’, ‘1997-Clinton.txt’, ‘2001-Bush.txt’, ‘2005-Bush.txt’, ‘2009-Obama.txt’, ‘2013-Obama.txt’, ‘2017-Trump.txt’, ‘2021-Biden.txt’, ‘2025-Trump.txt’]
- 统计总统的演讲次数
- 代码
#统计每位总统的演讲次数
from collections import Counter
from nltk.corpus import inaugural
presidents = [fileid.split('-')[1].replace('.txt', '') for fileid in inaugural.fileids()]
president_counts = Counter(presidents)
print(president_counts)
- 结果
Counter({‘Roosevelt’: 5, ‘Bush’: 3, ‘Washington’: 2, ‘Adams’: 2, ‘Jefferson’: 2, ‘Madison’: 2, ‘Monroe’: 2, ‘Jackson’: 2, ‘Harrison’: 2, ‘Lincoln’: 2, ‘Grant’: 2, ‘Cleveland’: 2, ‘McKinley’: 2, ‘Wilson’: 2, ‘Eisenhower’: 2, ‘Nixon’: 2, ‘Reagan’: 2, ‘Clinton’: 2, ‘Obama’: 2, ‘Trump’: 2, ‘VanBuren’: 1, ‘Polk’: 1, ‘Taylor’: 1, ‘Pierce’: 1, ‘Buchanan’: 1, ‘Hayes’: 1, ‘Garfield’: 1, ‘Taft’: 1, ‘Harding’: 1, ‘Coolidge’: 1, ‘Hoover’: 1, ‘Truman’: 1, ‘Kennedy’: 1, ‘Johnson’: 1, ‘Carter’: 1, ‘Biden’: 1})
- 统计词汇出现的情况
统计三个词汇:
‘freedom’, ‘china’, ‘democracy’
- 代码
#绘制词汇随时间的变化(NLTK 自带示例)
import matplotlib.pyplot as plt
from nltk.corpus import inaugural
from nltk import FreqDist
# 组织成 {年份: FreqDist对象}
cfd = nltk.ConditionalFreqDist(
(target, fileid[:4])
for fileid in inaugural.fileids()
for target in ['freedom', 'china', 'democracy']
if target in inaugural.words(fileid))
cfd.plot(title='Keyword frequency in Inaugural Addresses')
- 结果
3.5网络体文本 webtext
包含浏览器的爬虫文本、如电影评论等,该数据无标签(categories)
-
数据信息
- 新闻数量 (Total documents): 6
- 总词数 (Total tokens): 396,733
- 总句数 (Sentences): 25,728
- 词汇量: 21,538
- 平均句长: 15.42 个单词
- 最常见tokens:(‘:’, 11501), (‘.’, 10530), (‘,’, 8668), (“'”, 8058)。
- 常见搭配:无。
- 包含 “God” 的句子:143 句。
-
文件名:
[‘firefox.txt’, ‘grail.txt’, ‘overheard.txt’, ‘pirates.txt’, ‘singles.txt’, ‘wine.txt’]
文件名 | 内容描述 |
---|---|
firefox.txt | Mozilla Firefox 浏览器论坛讨论 |
grail.txt | 《Monty Python and the Holy Grail》电影剧本 |
overheard.txt | 纽约地铁上的对话(Overheard in NYC) |
pirates.txt | 《加勒比海盗》电影评论 |
singles.txt | 网络约会论坛发帖 |
wine.txt | 葡萄酒评论 |
- 找出长词
- 代码
long_words = [w for w in set(webtext.words('pirates.txt')) if len(w) > 10]
print(sorted(long_words)[:20]) # 按字母排序取前20个
- 结果
[‘Complications’, ‘Fortunately’, ‘HEADQUARTERS’, ‘Proceededly’, ‘QUARTERMASTER’, ‘Scandinavian’, ‘Scandinavians’, ‘Technically’, ‘Unfortunately’, ‘accidentally’, ‘acquaintance’, ‘altercation’, ‘approaching’, ‘calculations’, ‘camouflaged’, ‘candleholder’, ‘circumstance’, ‘circumstances’, ‘confronting’, ‘consciousness’
检索关键词的上下文
查看firefox中browser的上下文:
- 代码
text = nltk.Text(webtext.words('firefox.txt'))
text.concordance("browser", width=60)
- 结果
Displaying 25 of 484 matches:
trl - N should open a new browser when only download dialog
tab should switch tabs in browser favicon . ico colors rend
[ cust ] cancel is buggy Browser is ignoring the attibute
mark Add View -> Sidebars Browser Crash icons for customize
x is checking for default browser NO is missing from the bu
when closing main window browser long password can ' t wor
orts are not reflected in browser window url drop - down bo
the download manager the browser crashes if you open the l
ron appears when starting browser Tab prefs should allow ch
opening View page Source browser opened from About Phoenix
for changing behavior of browser windows reusage Extension
fic Google search freezes browser . Open a bookmark folder
flow only cares about the browser border . Bookmark propert
ory consumption increases Browser fails to display the corr
external sources in open browser implement restore previou
ment bookmark icon causes browser lock up Java Plug - in st
ascript from resizing the browser crash upon clicking a lin
a . tar extension Closing browser from File Menu closes all
Phoenix crashes in forum Browser locked if timeout during
build under BeOS setting browser . urlbar . autoFill does
nal bookmarks ( stacked ) Browser hangs with flash plugin w
doesn ' t focus searchbar Browser crashes when pointer on m
solution favicons lost on browser shutdown + restart histor
ookmark Manager Crash the browser on loading if " reject po
Save Link As ..." crashes browser . Add context menu to boo
4.Ref
- https://www.nltk.org/data.html
- https://github.com/nltk/nltk
- https://www.gutenberg.org/files/36132/36132-h/36132-h.htm
- https://blog.csdn.net/weixin_40425640/article/details/124033677
- https://blog.csdn.net/2201_75499313/article/details/128355707