首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

学习笔记CB001:NLTK库、语料库、词概率、双连词、词典

聊天机器人知识主要是自然语言处理。包括语言分析和理解、语言生成、机器学习、人机对话、信息检索、信息传输与信息存储、文本分类、自动文摘、数学方法、语言资源、系统评测。

NLTK库安装,pip install nltk。执行python。下载书籍,import nltk,nltk.download(),选择book,点Download。下载完,加载书籍,from nltk.book import *。输入text*书籍节点,输出书籍标题。搜索文本,text1.concordance("former”)。搜索相关词,text1.similar("ship")。查看词在文章的位置,text4.dispersion_plot(["citizens","democracy","freedom","duties","America"]),可以按Ctr+Z退出。继续尝试其他函数需要重新执行python,重新加载书籍。词统计,总字数len(text1),文本所有词集合set(text1),文本总词数len(set(text4)),单词出现总次数text4.count("is"),统计文章词频从大到小排序到列表FreqDist(text1),统计词频输出累计图fdist1 = FreqDist(text1);fdist1.plot(50,cumulative=True),只出现一次的词fdist1.hapaxes(),频繁双联词text4.collocations()。

自然语言处理关键点,词意理解、自动生成语言,机器翻译、人机对话(图灵测试,5分钟内回答提出问题的30%)。基于规则,完全从语法句法出发,照语言规则分析、理解。基于统计,收集大量语料数据,统计学习理解语言,得益于硬件(GPU)、大数据、深度学习的发展。

NLTK语料库,Gutenberg,nltk.corpus.gutenberg.fileids()。Gutenberg语料库文件标识符,import nltk,nltk.corpus.gutenberg.fileids()。Gutenberg语料库阅读器nltk.corpus.gutenberg。输出文章原始内容nltk.corpus.gutenberg.raw('chesterton-brown.txt')。输出文章单词列表nltk.corpus.gutenberg.words('chesterton-brown.txt')。输出文章句子列表nltk.corpus.gutenberg.sents('chesterton-brown.txt')。网络文本语料库,网络和聊天文本,from nltk.corpus import webtext。布朗语料库,按照文本分类好500个不同来源文本,from nltk.corpus import brown。路透社语料库,1万多个新闻文档,from nltk.corpus import reuters。就职演说语料库,55个总统的演说,from nltk.corpus import inaugural。

语料库组织结构,散养式(孤立多篇文章)、分类式(按照类别组织,但没有交集)、交叉式(文章属多个类)、渐变式(语法随时间发生变化)。

语料库通用接口,文件fileids(),分类categories(),原始内容raw(),词汇words(),句子sents(),指定文件磁盘位置abspath(),文件流open()。

加载自定义语料库,from nltk.corpus import PlaintextCorpusReader,corpus_root = '/Users/libinggen/Documents/workspace/Python/robot/txt',wordlists = PlaintextCorpusReader(corpus_root,'.*'),wordlists.fileids()。

格式转换GBK2UTF8,iconv -f GBK -t UTF-8安娜·卡列尼娜.txt >安娜·卡列尼娜utf8.txt。

条件分布,在一定条件下事件概率颁上。条件频率分布,指定条件下事件频率分布。

输出布朗语料库每个类别条件每个词概率:

# coding:utf-8

import sys

import importlib

importlib.reload(sys)

import 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.tabulate(conditions=['news','adventure'],samples=[u'stock',u'sunbonnet',u'Elevated',u'narcotic',u'four',u'woods',u'railing',u'Until',u'aggression',u'marching',u'looking',u'eligible',u'electricity',u'$25-a-plate',u'consulate',u'Casey',u'all-county',u'Belgians',u'Western',u'1959-60',u'Duhagon',u'sinking',u'1,119',u'co-operation',u'Famed',u'regional',u'Charitable',u'appropriation',u'yellow',u'uncertain',u'Heights',u'bringing',u'prize',u'Loen',u'Publique',u'wooden',u'Loeb',u'963',u'specialties',u'Sands',u'succession',u'Paul',u'Phyfe'])

cfd.plot(conditions=['news','adventure'],samples=[u'stock',u'sunbonnet',u'Elevated',u'narcotic',u'four',u'woods',u'railing',u'Until',u'aggression',u'marching',u'looking',u'eligible',u'electricity',u'$25-a-plate',u'consulate',u'Casey',u'all-county',u'Belgians',u'Western',u'1959-60',u'Duhagon',u'sinking',u'1,119',u'co-operation',u'Famed',u'regional',u'Charitable',u'appropriation',u'yellow',u'uncertain',u'Heights',u'bringing',u'prize',u'Loen',u'Publique',u'wooden',u'Loeb',u'963',u'specialties',u'Sands',u'succession',u'Paul',u'Phyfe'])

利用条件频率分布,按照最大条件概率生成双连词,生成随机文本:

# coding:utf-8

import sys

import importlib

importlib.reload(sys)

import nltk

#循环10次,从cfdist中取当前单词最大概率的连词,并打印出来

def generate_model(cfdist,word,num=10):

for i in range(num):

print(word),

word = cfdist[word].max()

#加载语料库

#生成双连词

bigrams = nltk.bigrams(text)

#生成条件频率分布

cfd = nltk.ConditionalFreqDist(bigrams)

#以the开头,生成随机串

generate_model(cfd,'the')

词典资源,词或短语集合:

参考资料:

http://www.shareditor.com/blogshow/?blogId=63

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180212G02RG100?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券