NLTK库(1): 数据集-语料库(Corpus)

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.corpusText corpora and lexical resources / 文本语料库和词汇资源Brown、Gutenberg 等语料库;WordNet 词典、停用词表等
nltk.tokenize / nltk.stemText tokenization and stemming (split text into words/sentences; remove affixes) / 文本分词和词干提取(拆分为单词/句子;移除词缀)单词/句子分词(word_tokenizesent_tokenize);Porter、Lancaster、Snowball 词干算法
nltk.collocationsIdentify collocations (frequently co-occurring word combos) / 搭配词发现(识别高频共现词组)双字/三字搭配;关联度量 (PMI, χ², t-检验, 似然比)
nltk.tagPart-of-speech tagging (assign POS tags) / 词性标注(为单词分配词性标签)HMM、CRF、最大熵等词性标注器
nltk.classify / nltk.clusterClassification & clustering / 分类与聚类文本分类(朴素贝叶斯、最大熵、SVM);聚类(K-means、EM)
nltk.chunkChunking (shallow parsing, phrase extraction) / 短语切分(浅层解析,如名词短语提取)正则表达式分块;IOB 标记;基础名词/动词短语
nltk.parseParsing (syntactic analysis) / 句法分析(生成句子结构树)CFG/PCFG 解析;移进-归约、CKY、图谱解析(Chart)
nltk.sem / nltk.inferenceSemantic interpretation & inference (represent meaning in logic) / 语义表示与逻辑推理一阶逻辑 (FOL,表示含义);定理证明 (Prover9) 、模型构建 (Mace)
nltk.metricsEvaluation metrics / NLP评估指标Precision、Recall、F1、Accuracy(精确率、召回率、F1 值、BLEU、混淆矩阵分析等)
nltk.probabilityProbability distributions / 概率分布(频率分布与条件概率分布)FreqDist、ConditionalFreqDist;最大似然估计 (MLE)、拉普拉斯平滑
nltk.lmLanguage modeling / 语言模型n-gram 模型(unigram/bigram, 基于统计);Kneser-Ney/Laplace 平滑;Perplexity (困惑度)
nltk.app / nltk.chatInteractive demos & chatbots / 交互式示例程序和聊天机器人GUI 演示(Chart Parser、WordNet 浏览器);Eliza/Zen 聊天机器人
nltk.toolboxToolbox 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文件名作品名称(英文)作者(英文)中文简介
1austen-emma.txtEmmaJane Austen简·奥斯汀《爱玛》
2austen-persuasion.txtPersuasionJane Austen简·奥斯汀《劝导》
3austen-sense.txtSense and SensibilityJane Austen简·奥斯汀《理智与情感》
4bible-kjv.txtBible (King James Version)多人编纂《圣经》钦定版(英王詹姆斯版)
5blake-poems.txtPoems (1789)William Blake威廉·布莱克诗集(如《天真与经验之歌》)
6bryant-stories.txtStories to Tell to ChildrenSara Cone Bryant儿童故事集(萨拉·C·布莱恩特)
7burgess-busterbrown.txtBuster BrownThornton W. Burgess儿童故事《巴斯特·布朗》
8carroll-alice.txtAlice’s Adventures in WonderlandLewis Carroll刘易斯·卡罗尔《爱丽丝梦游仙境》
9chesterton-ball.txtThe Ball and the CrossG. K. Chesterton《球与十字架》
10chesterton-brown.txtThe Innocence of Father BrownG. K. Chesterton《布朗神父探案集》
11chesterton-thursday.txtThe Man Who Was ThursdayG. K. Chesterton《星期四出生的男人》
12edgeworth-parents.txtThe Parent’s AssistantMaria Edgeworth《父母助手》(教育寓言故事集)
13melville-moby_dick.txtMoby-Dick; or, The WhaleHerman Melville赫尔曼·梅尔维尔《白鲸》
14milton-paradise.txtParadise LostJohn Milton弥尔顿《失乐园》
15shakespeare-caesar.txtJulius CaesarWilliam Shakespeare莎士比亚《尤利乌斯·凯撒》
16shakespeare-hamlet.txtHamletWilliam Shakespeare莎士比亚《哈姆雷特》
17shakespeare-macbeth.txtMacbethWilliam Shakespeare莎士比亚《麦克白》
18whitman-leaves.txtLeaves of GrassWalt 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)
caPress: reportage报刊报道news
cbPress: editorial报刊社论editorial
ccPress: reviews报刊评论reviews
cdReligion宗教文本religion
ceSkills and hobbies技能与爱好hobbies
cfPopular lore民间传说、常识性话题lore
cgBelles lettres, biography, essays散文、美文、传记等belles_lettres
chMiscellaneous杂项(政府、报告、传单等)government
cjLearned (academic prose)学术文章learned
ckFiction: general一般小说fiction
clFiction: mystery推理小说
cmFiction: science fiction科幻小说
cnFiction: adventure冒险小说
cpFiction: romance言情小说
crFiction: 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.txtMozilla 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值