当代自然语言处理都是基于统计的,统计自然需要很多样本,因此语料和词汇资源是必不可少的

1. NLTK语料库

NLTK包含多种语料库,比如:Gutenberg语料库

nltk.corpus.gutenberg.fileids()
  • nltk.corpus.gutenberg:语料库的阅读器
  • nltk.corpus.gutenberg.raw(‘chesterton-brown.txt’):输出chesterton-brown.txt文章的原始内容
  • nltk.corpus.gutenberg.words(‘chesterton-brown.txt’):输出chesterton-brown.txt文章的单词列表
  • nltk.corpus.gutenberg.sents(‘chesterton-brown.txt’):输出chesterton-brown.txt文章的句子列表

类似的语料库还有:

  • from nltk.corpus import webtext:网络文本语料库,网络和聊天文本
  • from nltk.corpus import brown:布朗语料库,按照文本分类好的500个不同来源的文
  • from nltk.corpus import reuters:路透社语料库,1万多个新闻文档
  • from nltk.corpus import inaugural:就职演说语料库,55个总统的演说

1.1 语料库的一般结构

语料库的几种组织结构:
- 散养式(孤立的多篇文章)
- 分类式(按照类别组织、相互之间没有交集)
- 交叉式(一篇文章可能属于多个类)
- 渐变式(语法随时间发生变化)

1.2 语料库的通用接口

  • fileids():返回语料库中的文件
  • categories():返回语料库中的分类
  • raw():返回语料库的原始内容
  • words():返回语料库中的词汇
  • sents():返回语料库句子
  • abspath():指定文件在磁盘上的位置
  • open():打开语料库的文件流

1.3 加载自己的语料库

收集自己的语料库(文本文件)到某路径下(比如/tmp),然后执行:

from nltk.corpus import PlaintextCorpusReader
corpus_root = '/tmp'
wordlists = PlaintextCorpusReader(corpus_root, '.*')
wordlists.fileids()

就可以列出自己语料库的各个文件了,也可以使用如wordlists.sents(‘a.txt’)和wordlists.words(‘a.txt’)等方法来获取句子和词信息

1.4 条件频率分布

自然语言的条件频率分布就是指定条件下某个事件的频率分布

比如要输出在布朗语料库中每个类别条件下每个词的频率

# encoding:utf-8import nltk
from nltk.corpus import brown# 链表推导式,genre是brown语料库里的所有类别列表,word是这个类别中的词汇列表
# (genre, word)就是类别加词汇对
genre_word = [(genre, word)for genre in brown.categories()for word in brown.words(categories=genre)]# 创建条件频率分布
cfd = nltk.ConditionalFreqDist(genre_word)
# 指定条件和样本作图
cfd.plot(conditions=['news', 'adventure'], samples=[u'stock', u'sunbonnet'])
# 自定条件和样本作表格
cfd.tabulate(conditions=['news', 'adventure'], samples=[u'stock', u'sunbonnet'])

我们还可以利用条件频率分布,按照最大条件概率生成双连词,最终生成一个随机文本

这可以直接使用bigrams()函数,它的功能是生成词对链表。

# encoding:utf-8import nltk# 循环10次,从cddist中取当前单词最大概率的连词,并打印出来
def generate_model(cfdist, word, num=10):for i in range(num):print(word)word = cfdist[word].max()# 加载语料库
text = nltk.corpus.genesis.words('english-kjv.txt')
# 生成双连词
bigrams = nltk.bigrams(text)
# 生成条件频率分布
cfd = nltk.ConditionalFreqDist(bigrams)# 以 the 开头,生成随机串
generate_model(cfd, 'the')

其他词典资源

有一些仅是词或短语以及一些相关信息的集合,叫做词典资源。

  • 词汇列表语料库:nltk.corpus.words.words(),所有英文单词,这个可以用来识别语法错误
  • 停用词语料库:nltk.corpus.stopwords.words,用来识别那些最频繁出现的没有意义的词
  • 发音词典:nltk.corpus.cmudict.dict(),用来输出每个英文单词的发音
  • 比较词表:nltk.corpus.swadesh,多种语言核心200多个词的对照,可以作为语言翻译的基础
  • 同义词集:WordNet,面向语义的英语词典,由同义词集组成,并组织成一个网络

参考资料来源:http://www.shareditor.com/

奋战聊天机器人(二)语料和词汇资源相关推荐

  1. 自己动手做聊天机器人 三-语料与词汇资源

    当代自然语言处理都是基于统计的,统计自然需要很多样本,因此语料和词汇资源是必不可少的,本节介绍语料和词汇资源的重要性和获取方式 请尊重原创,转载请注明来源网站www.shareditor.com以及原 ...

  2. 【ChatBot开发笔记】聊天机器人准备工作——初识NLTK库、语料与词汇资源

    目录 简述 一.NLTK 1.安装 2.搜索 3.词统计 二.语料与词汇资源 1.举例 2.类似的语料库还有: 3.语料库的通用接口: 4.其他词典资源: 5.加载自己的语料库 结语 简述 2021. ...

  3. 《用Python进行自然语言处理》第2章 获得文本语料和词汇资源

    1. 什么是有用的文本语料和词汇资源,我们如何使用 Python 获取它们? 2. 哪些 Python 结构最适合这项工作? 3. 编写 Python 代码时我们如何避免重复的工作? 2.1 获取文本 ...

  4. 《Python自然语言处理(第二版)-Steven Bird等》学习笔记:第02章 获得文本语料和词汇资源

    第02章 获得文本语料和词汇资源 2.1 获取文本语料库 古腾堡语料库 网络和聊天文本 布朗语料库 路透社语料库 就职演说语料库 标注文本语料库 在其他语言的语料库 文本语料库的结构 载入你自己的语料 ...

  5. Python自然语言处理 | 获得文本语料与词汇资源

    本章解决问题- 什么是有用的文本语料和词汇资源,我们如何使用Python获取它们? 哪些Python结构最适合这项工作? 编写Python代码时我们如何避免重复的工作? 这里写目录标题 1获取文本语料 ...

  6. python nlp_【NLP】Python NLTK获取文本语料和词汇资源

    作者:白宁超 2016年11月7日13:15:24 摘要:NLTK是由宾夕法尼亚大学计算机和信息科学使用python语言实现的一种自然语言工具包,其收集的大量公开数据集.模型上提供了全面.易用的接口, ...

  7. 聊天机器人之语料准备

    聊天机器人之语料准备 1. 分词词典 最终词典的格式: 词语 词性(不要和jieba默认的词性重复) 1.1 词典来源 各种输入法的词典          [通过下面链接下载使用] 例如:https: ...

  8. 使用TensorFlow.js的AI聊天机器人二:训练Trivia Expert AI

    目录 设置TensorFlow.js代码 TriviaQA数据集 单词嵌入和标记 训练AI模型 聊天机器人(Trivia Chatbot)在行动 终点线 下一步是什么? 下载项目文件-9.9 MB T ...

  9. 自己动手做聊天机器人 二十九-重磅:近1GB的三千万聊天语料供出

    Reference: http://www.shareditor.com/blogshow/?blogId=112 经过半个月的倾力打造,建设好的聊天语料库包含三千多万条简体中文高质量聊天语料,近1G ...

  10. 【Python 自然语言处理 第二版】读书笔记2:获得文本语料和词汇资源

    文章目录 一.获取文本语料库 1.古腾堡语料库 (1)输出语料库中的文件标识符 (2)词的统计与索引 (3)文本统计 2.网络和聊天文本 3.布朗语料库 (1)初识 (2)比较不同文体中的情态动词的用 ...

最新文章

  1. 在SolidWorks 3D CAD中构建乐高直升机
  2. WAIC 2021 | 百度量子计算段润尧:从理论到实践谈量子人工智能
  3. Ubuntu 调试的时候,不能查看变量值
  4. 【Android 应用开发】BluetoothClass详解
  5. python守护进程_Python实现守护进程
  6. .NET 5 部署在docker上运行
  7. linux消息队列消息清空函数,ipcrm命令_Linux ipcrm 命令用法详解:删除消息队列、信号集、或者共享内存标识...
  8. 改变自己就是改变世界的开始
  9. Grails集成Quartz插件实现定时任务(Job)
  10. 去雨去雾的研究和可用方法
  11. kafka consumer 如何设置每次重启时从最新数据开始读取
  12. PCB生产中的化学量监测--第四章翻译4.2.1
  13. 计算机毕业设计Java智慧防疫上报系统小程序端(源码+系统+mysql数据库+Lw文档)
  14. 《HyVulDect: A hybrid semantic vulnerability mining system based ongraph neural network》阅读笔记
  15. .pnmrc和.vuerc和.yarnrc等等文件
  16. ACM各OJ网站简介
  17. 亚太融媒+ |「APEC投资+/产业+」:私募基金与产业基金 | 稳略产业基金观察
  18. 四元数 右手系-左手系 转换
  19. Charles 安装图解(Mac 抓包工具)
  20. 实现遍历数组(双for循环语句)

热门文章

  1. java下载zip文件
  2. java目录结构_Java项目目录结构解释
  3. 华为s5700交换机使用配置
  4. Windows安装Oracle
  5. 运维之道 | Linux常用网络命令
  6. gsonformat安装怎么使用_json解析—Gson以及GsonFormat插件的运用
  7. 谷粒学院笔记day01
  8. 手把手教你学项目管理软件project
  9. ODI Studio 11g 连接Essbase数据源
  10. 计算机代码编程知识,编程基础知识