Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >NLP自然语言处理002:NLTK中的语料和词汇资源

NLP自然语言处理002:NLTK中的语料和词汇资源

作者头像
李玺
发布于 2021-11-22 06:16:48
发布于 2021-11-22 06:16:48
67500
代码可运行
举报
文章被收录于专栏:爬虫逆向案例爬虫逆向案例
运行总次数:0
代码可运行

自然语言处理的实际项目中,通常要使用大量的语言数据或者语料库。

NLTK是由宾夕法尼亚大学计算机和信息科学使用python语言实现的一种自然语言工具包,其收集的大量公开数据集、模型上提供了全面、易用的接口,涵盖了分词、词性标注(Part-Of-Speechtag, POS-tag)、命名实体识别(Named Entity Recognition, NER)、句法分析(Syntactic Parse)等各项 NLP 领域的功能。

我们使用NLTK来获取文本语料库

古腾堡语料库

import nltk 直接获取语料库的所有文本:nltk.corpus.gutenberg.fileids()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
doc = nltk.corpus.gutenberg.fileids()
for i in doc:
    print(i)

查找某个文本 我们来查看下第一个文本 austen-emma.txt 中有多少单词。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from nltk.corpus import gutenberg
emma = gutenberg.words('austen-emma.txt')
print(len(emma))

输出结果:192427

查找文件标识符

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for fileid in gutenberg.fileids():
    num_char = len(gutenberg.raw(fileid))  # 原始文本的长度,包括空格、符号等
    num_words = len(gutenberg.words(fileid)) #词的数量
    num_sents = len(gutenberg.sents(fileid)) #句子的数量
    num_vocab = len(set([w.lower() for w in gutenberg.words(fileid)])) #文本的尺寸
    print(int(num_char/num_words),int(num_words/num_sents),int(num_words/num_vocab),fileid)
# 打印出平均词长(包括一个空白符号,如下词长是3)、平均句子长度、和文本中每个词出现的平均次数

运行结果: 4 24 26 austen-emma.txt 4 26 16 austen-persuasion.txt 4 28 22 austen-sense.txt 4 33 79 bible-kjv.txt 4 19 5 blake-poems.txt …省略不计

网络和聊天文本

获取网络聊天文本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from nltk.corpus import webtext
for fileid in webtext.fileids():
    print(fileid,webtext.raw(fileid))

查看网络聊天文本信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for fileid in webtext.fileids():
    print(fileid, len(webtext.words(fileid)), len(webtext.raw(fileid)), len(webtext.sents(fileid)),
          webtext.encoding(fileid))

输出结果: firefox.txt 102457 564601 1142 ISO-8859-2 grail.txt 16967 65003 1881 ISO-8859-2 overheard.txt 218413 830118 17936 ISO-8859-2 pirates.txt 22679 95368 1469 ISO-8859-2 singles.txt 4867 21302 316 ISO-8859-2 wine.txt 31350 149772 2984 ISO-8859-2

即时消息聊天会话语料库:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 from nltk.corpus import nps_chat
 chatroom = nps_chat.posts('10-19-20s_706posts.xml')
 chatroom[123]

输出结果:[‘i’, ‘do’, “n’t”, ‘want’, ‘hot’, ‘pics’, ‘of’, ‘a’, ‘female’, ‘,’, ‘I’, ‘can’, ‘look’, ‘in’, ‘a’, ‘mirror’, ‘.’]

布朗语料库

查看语料信息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from nltk.corpus import brown
brown.categories()

输出结果:[‘adventure’, ‘belles_lettres’, ‘editorial’, ‘fiction’, ‘government’, ‘hobbies’, ‘humor’, ‘learned’, ‘lore’, ‘mystery’, ‘news’, ‘religion’, ‘reviews’, ‘romance’, ‘science_fiction’]

比较文体中情态动词的用法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import nltk
from nltk.corpus import brown
new_texts=brown.words(categories='news')
fdist=nltk.FreqDist([w.lower() for w in new_texts])
modals=['can','could','may','might','must','will']
for m in modals:
    print(m + ':',fdist[m])

输出结果:

NLTK条件概率分布函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from nltk.corpus import brown
cfd=nltk.ConditionalFreqDist((genre,word) for genre in brown.categories() for word in brown.words(categories=genre))
genres=['news','religion','hobbies','science_fiction','romance','humor']
modals=['can','could','may','might','must','will']
print(cfd.tabulate(condition=genres, samples=modals))

输出结果:

路透社语料库

包括10788个新闻文档,共计130万字,这些文档分90个主题,安装训练集和测试分组,编号‘test/14826’文档属于测试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from nltk.corpus import  reuters
print(reuters.fileids()[:500])	

输出结果 [‘test/14826’, ‘test/14828’, ‘test/14829’, ‘test/14832’, ‘test/14833’, ‘test/14839’, ‘test/14840’, ‘test/14841’, ‘test/14842’, ‘test/14843’, ‘test/14844’, ‘test/14849’, … ‘test/15736’]

查看语料包括的前100个类别:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print(reuters.categories()[:100])

输出结果:[‘acq’, ‘alum’, ‘barley’, ‘bop’, ‘carcass’, ‘castor-oil’, ‘cocoa’,… ‘zinc’]

查看语料尺寸:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 len(reuters.fileids())

输出:10788

查看语料类别尺寸:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
len(reuters.categories())

查看某个编号的语料下类别尺寸:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 reuters.categories('training/9865')

输出:[‘barley’, ‘corn’, ‘grain’, ‘wheat’]

查看某几个联合编号下语料的类别尺寸:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 reuters.categories(['training/9865','training/9880'])

输出:[‘barley’, ‘corn’, ‘grain’, ‘money-fx’, ‘wheat’]

查看哪些编号的文件属于指定的类别:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
reuters.fileids('barley')

输出:[‘test/15618’, ‘test/15649’, ‘test/15676’, ‘test/15728’, ‘test/15871’, …‘training/9958’]

就职演说语料库

查看语料信息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from nltk.corpus import inaugural
print(len(inaugural.fileids()))

输出:56

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print(inaugural.fileids())

输出: [‘1789-Washington.txt’, ‘1793-Washington.txt’, ‘1797-Adams.txt’,… ‘2009-Obama.txt’]

查看演说语料的年份:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print([fileid[:4] for fileid in inaugural.fileids()])

条件概率分布

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import nltk
cfd=nltk.ConditionalFreqDist((target,fileid[:4]) for fileid in inaugural.fileids() for w in inaugural.words(fileid) for target in ['america','citizen'] if w.lower().startswith(target))
cfd.plot()

文本语料库常见的几种结构:

孤立的没有结构的文本集; 按文体分类成结构(布朗语料库) 分类会重叠的(路透社语料库) 语料库可以随时间变化的(就职演说语料库)

查找NLTK语料库函数help(nltk.corpus.reader)

`

载入自己的语料库

构建自己语料库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from nltk.corpus import PlaintextCorpusReader
corpus_root=r'D:\lx_dict'
wordlists=PlaintextCorpusReader(corpus_root,'.*')
print(wordlists.fileids())

输出结果:[‘dqdg.txt’, ‘q0.txt’, ‘q1.txt’, ‘q10.txt’, ‘q2.txt’, ‘q3.txt’, ‘q5.txt’, ‘text.txt’]

构建完成自己语料库之后,利用python NLTK内置函数都可以完成对应操作,

但是部分方法NLTK是针对英文语料的,中文语料不通用(典型的就是分词)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/05/16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
学习笔记CB001:NLTK库、语料库、词概率、双连词、词典
聊天机器人知识主要是自然语言处理。包括语言分析和理解、语言生成、机器学习、人机对话、信息检索、信息传输与信息存储、文本分类、自动文摘、数学方法、语言资源、系统评测。
利炳根
2018/02/12
1.6K0
NLTK-003:词典资源
词典或者词典资源的意思是一个 词或短语 以及一些相关信息的集合。例如:词性和词意定义等相关信息。词典资源附属于文本,通常在文本的帮助下创建和丰富。
李玺
2021/11/22
5170
NLTK-003:词典资源
NLTK-007:分类文本(文档情感分类)
之前我们看了几个例子,那里文档已经按类别标记。使用这些语料库,我们可以建立分类器。自动给新文档添加适当的类别标签。 首先我们构造一个标记了相应类别的文档清单,对于这个例子,我选择了nltk中的电影评论语料库,将每个评论分为正面或者负面。
李玺
2021/11/22
4160
NLTK-007:分类文本(文档情感分类)
《Python自然语言处理》答案第一、二章
第一章 1 12/(4+1) 2 26**100 4 len(text2) len(set(text2)) 7 len(list(nltk.bigrams(text5))) 15 [w for w in sorted(text5) if w.startswith('b')] 17 def find_word(text,word): ...: pos=0 ...: while pos<len(text): ...: try: ...:
JasonhavenDai
2018/04/11
1.1K0
《Python自然语言处理》答案第一、二章
学习笔记CB002:词干提取、词性标注、中文切词、文档分类
英文词干提取器,import nltk,porter = nltk.PorterStemmer(),porter.stem('lying') 。
利炳根
2018/02/13
2K0
NLTK-005:分类和标注词汇
之前大家也肯定学过名字、动词、形容词、副词之间的差异,这些词类不是闲置的,而是对许多语言处理任务都有用的分类,正如我们将看到的,这些分类源于对文本中词的分布的简单的分析。
李玺
2021/11/22
6270
NLTK-005:分类和标注词汇
NLTK相关知识介绍
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
村雨遥
2019/09/09
6500
NLTK相关知识介绍
Python NLTK解读
自然语言处理工具包(Natural Language Toolkit,简称NLTK)是一个用于处理人类语言数据的强大工具包。它提供了丰富的语言处理功能,包括文本分析、词性标注、语法分析、语料库管理等。本教程将介绍如何使用NLTK来处理文本数据,进行各种自然语言处理任务。
Michel_Rolle
2024/01/31
2.7K0
用于NLP的Python:使用Keras进行深度学习文本生成
文本生成是NLP的最新应用程序之一。深度学习技术已用于各种文本生成任务,例如写作诗歌,生成电影脚本甚至创作音乐。但是,在本文中,我们将看到一个非常简单的文本生成示例,其中给定输入的单词字符串,我们将预测下一个单词。我们将使用莎士比亚著名小说《麦克白》的原始文本,并根据给定的一系列输入单词来预测下一个单词。
拓端
2020/09/26
1.2K0
Python3 如何使用NLTK处理语言数据
文本已成为最常见的表达形式之一。我们每天都要发送电子邮件、短信、推文、更新状态。因此,非结构化文本数据变得非常普遍,分析大量文本数据现在是了解人们的想法的关键方法。
SQL GM
2018/07/23
2.1K0
自然语言处理| NLTK库的详解
自然语言处理(natural language processing)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。
润森
2019/08/29
7K0
自然语言处理| NLTK库的详解
【Python环境】Python自然语言处理系列(1)
一:python基础,自然语言概念 from nltk.book import* 1,text1.concordance("monstrous") 用语索引 2,text1.similar("best") 3,text2.common_contexts(["monstrous","very"]) 4,text4.dispersion_plot(["citizens","democracy", "freedom", "duties","America"]) 5,text3.generate() 6,
陆勤_数据人网
2018/02/27
9000
【Python环境】Python自然语言处理系列(1)
【NLP】Python NLTK获取文本语料和词汇资源
NLTK是由宾夕法尼亚大学计算机和信息科学使用python语言实现的一种自然语言工具包,其收集的大量公开数据集、模型上提供了全面、易用的接口,涵盖了分词、词性标注(Part-Of-Speech tag, POS-tag)、命名实体识别(Named Entity Recognition, NER)、句法分析(Syntactic Parse)等各项 NLP 领域的功能。本文主要介绍NLTK(Natural language Toolkit)的几种语料库,以及内置模块下函数的基本操作,诸如双连词、停用词、词频统计、构造自己的语料库等等,这些都是非常实用的。
机器学习AI算法工程
2019/10/28
2.1K0
【NLP】Python NLTK获取文本语料和词汇资源
自然语言处理基础知识1. 分词(Word Cut)2. 词性标注(POS Tag)3.自动标注4.文本分类5.评估6.从文本提取信息7.分析句子结构《python自然语言处理》各章总结:
1. 分词(Word Cut) 英文:单词组成句子,单词之间由空格隔开 中文:字、词、句、段、篇 词:有意义的字组合 分词:将不同的词分隔开,将句子分解为词和标点符号 英文分词:根据空格 中文分词:三类算法 中文分词难点:歧义识别、未登录词 中文分词的好坏:歧义词识别和未登录词的识别准确率 分词工具:Jieba,SnowNLP,NlPIR,LTP,NLTK 2. 词性标注(POS Tag) 词性也称为词类或词汇类别。用于特定任务的标记的集合被称为一个标记集 词性:词类,词汇性质,词汇的语义
JasonhavenDai
2018/04/11
9K0
自然语言处理基础知识1. 分词(Word Cut)2. 词性标注(POS Tag)3.自动标注4.文本分类5.评估6.从文本提取信息7.分析句子结构《python自然语言处理》各章总结:
NLTK-006:分类文本(性别鉴定)
分类是为给定的输入选择正确的类标签的任务,在基本的分类任务中,每个输入被认为是与所有其它输入隔离的,并且标签集是预先定义的。下面是分类任务的一些例子:
李玺
2021/11/22
5680
NLTK-006:分类文本(性别鉴定)
Python 数据科学入门教程:NLTK
欢迎阅读自然语言处理系列教程,使用 Python 的自然语言工具包 NLTK 模块。
ApacheCN_飞龙
2022/12/01
4.5K0
Python 数据科学入门教程:NLTK
初学者|不能不会的NLTK
本文简绍了NLTK的使用方法,这是一个被称为“使用Python进行计算语言学教学和工作的绝佳工具”。
yuquanle
2019/07/12
1.4K0
【自然语言处理篇】--以NLTK为基础讲解自然语⾔处理的原理和基础知识
Python上著名的⾃然语⾔处理库⾃带语料库,词性分类库⾃带分类,分词,等等功能强⼤的社区⽀持,还有N多的简单版wrapper。
LhWorld哥陪你聊算法
2018/09/13
1.2K0
【自然语言处理篇】--以NLTK为基础讲解自然语⾔处理的原理和基础知识
自然语言处理数据集免费资源开放(附学习资料)
作者:Jason Brownlee 翻译:梁傅淇 本文长度为1500字,建议阅读3分钟 本文提供了七个不同分类的自然语言处理小型标准数据集的下载链接,对于有志于练习自然语言处理的新手而言,是极有帮助的资源。 在你刚开始入手自然语言处理任务时,你需要数据集来练习。 最好是使用小型数据集,这样你可以快速下载,也不用花费很长的时间来调试模型。同时,使用被广泛使用和了解的标准数据集也是有所帮助的,你可以用你的结果来做比较,看一下是否有所进步。 在这篇博文中,你会找到一系列标准数据集来开始你的深度学习之旅。 总
数据派THU
2018/01/30
2.3K0
自然语言处理数据集免费资源开放(附学习资料)
PySpark简介
Apache Spark是一个大数据处理引擎,与MapReduce相比具有多个优势。通过删除Hadoop中的大部分样板代码,Spark提供了更大的简单性。此外,由于Spark处理内存中的大多数操作,因此它通常比MapReduce更快,在每次操作之后将数据写入磁盘。
双愚
2018/08/30
7K0
推荐阅读
相关推荐
学习笔记CB001:NLTK库、语料库、词概率、双连词、词典
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验