学习笔记 CB001:NLTK 库、语料库、词概率、双连词、词典 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cralison
V2EX    机器学习

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

  •  1
     
  •   cralison 2018-02-12 06:41:30 +08:00 2073 次点击
    这是一个创建于 2865 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    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() # 加载语料库 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。比较词表,多种语言核心 200 多个词对照,语言翻译基础 nltk.corpus.swadesh。同义词集,面向语义英语词典,同义词集网络 WordNet。

    参考资料:

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

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

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

    欢迎推荐上海机器学习工作机会,我的微信:qingxingfengzi

    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1263 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 17:19 PVG 01:19 LAX 09:19 JFK 12:19
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86