NLP实践TensorFlow打造聊天机器人
NLP实践TensorFlow打造聊天机器人,学习笔记整理。
玛丽有只小绵羊
临渊羡鱼,不如退而结网。
展开
-
9-6,9-7 构建模型
def build_model(self): """ 1.初始化训练、预测所需要的变量 2.构建编码器(encoder) 3.构建解码器(decoder) 4.构建优化器(optimizer) 5.保存 """ def init_placeholders(self):...原创 2020-02-28 21:39:32 · 289 阅读 · 0 评论 -
9.2,9.3,9.4,9.5 基本参数保存,参数验证
class SequenceToSequence(object): """ 基本流程 __init__基本参数的保存,参数验证(验证参数的合法性) build_model 构建模型 init_placeholders初始化一些TensorFlow的变量的占位符 build_encoder初始化编码器 build_single_cel...原创 2020-02-22 14:31:31 · 332 阅读 · 0 评论 -
9.1基本流程介绍
1.基本流程介绍mport numpy as npimport tensorflow as tffrom tensorflow import layersfrom tensorflow.python.ops import array_opsfrom tensorflow.contrib import seq2seqfrom tensorflow.contrib.seq2seq i...原创 2020-02-21 23:10:05 · 267 阅读 · 0 评论 -
8.9,8.10,8.11,8.12,8.13 batch_flow_bucket,生产虚假数据
def batch_flow_bucket(data,ws,batch_size,raw=False,add_end=True, n_bucket=5,bucket_ind=1,debug=False): all_data=list(zip(*data)) lengths=sorted(list(set([len(bucket_ind)...原创 2020-02-21 13:57:38 · 217 阅读 · 0 评论 -
8.6,8.7,8.8 batch_flow
'''从数据中随机去生成batch_size的数据,然后给转换后输出出去'''def batch_flow(data, ws, batch_size, raw=False, add_end=True): all_data=list(zip(*data)) if isinstance(ws,(list,tuple)): assert len(ws)==len(da...原创 2020-02-19 23:30:07 · 219 阅读 · 0 评论 -
8.5 数据操作 转换长度
def _get_embed_device(vocab_size): gpus=_get_available_gpus() if not gpus or vocab_size > VOCAB_SIZE_THRESHOLD_CPU: return "/cpu:0" return "/gpu:0"def transform_sentence(sent...原创 2020-02-18 23:49:13 · 155 阅读 · 0 评论 -
8.4 Tensorflow相关信息操作
本本的显卡不行,只能安装tensorflow普通版,没有GPU(泪崩)原创 2020-02-18 23:39:19 · 122 阅读 · 0 评论 -
第8章聊天机器人训练(TensorFlow的模型前期处理)—8.3TensorFlow环境搭建
占位原创 2020-02-18 00:08:43 · 274 阅读 · 0 评论 -
第8章聊天机器人训练(TensorFlow的模型前期处理)—8.1,8.2线程处理
1.新建threadedgenerator.py文件from threading import Threadfrom queue import Queueclass ThreadedGenerator(object): def __init__(self,iterator, sentinel=object(), ...原创 2020-02-16 16:51:23 · 217 阅读 · 0 评论 -
第7章聊天机器人原理—7.3,7.4聊天机器人模型
一、聊天机器人根据对话的产生方式1.基于检索的模型a.有明确的问答对数据库b.使用语句匹配的形式查找答案C.答案相对固定,且很少出现语法错误d.不会出现新的语句2.生成式模型a.不依赖预先设定的问答库;b.通常基于机器翻译技术c.需要大量的语料进行训练Encoder-Decoder模式;机器翻译;输入的是问题,翻译的是回答;3.混...原创 2020-02-16 16:38:35 · 779 阅读 · 0 评论 -
第7章 聊天机器人原理—7.1,7.2 Seq2Seq模型
1.seq2seq模型(1)seq2seq是一个Encoder-Decoder结构的网络,它的输入是一个序列,输出也是一个序列。(2)Encoder中将一个可变长度的信号序列变为固定长度的向量表达,Decoder将这个固定长度的向量变成可变长度的目标的信号序列。(3)这个结构最重要的地方在于输入序列和输出序列的长度是可变的。(4)可以用于翻译,聊天机器人、句法分析、文本摘要等。...原创 2020-02-15 23:36:56 · 304 阅读 · 0 评论 -
第6章实战之聊天语料处理—6.11数据模型打包处理
占位原创 2020-02-15 23:16:27 · 169 阅读 · 0 评论 -
第6章实战之聊天语料处理—6.9,6.10训练语料问答对的处理
占位原创 2020-02-15 23:15:28 · 381 阅读 · 0 评论 -
第6章 实战之聊天语料处理—6.8 训练语料库的解压处理
def main(limit=20, x_limit=3, y_limit=6): from word_sequence import WordSequence print('extract lines') fp=open("dgk_shooter_min.conv","r",errors='ignore',encoding='utf-8') groups=[]...原创 2020-02-15 23:07:04 · 211 阅读 · 0 评论 -
第6章实战之聊天语料处理—6.7句子和向量之间的转换
1. 添加代码至word_sequence.py def transform(self,sentence,max_len=None): assert self.fitted, "WordSequence尚未进行fit操作" if max_len is not None: r=[self.PAD]*max_len ...原创 2020-02-14 15:30:33 · 211 阅读 · 0 评论 -
第6章 实战之聊天语料处理——6.5,6.6数据处理-句子编码化处理
1.字典定义及转换2.训练字典import numpy as npclass WordSequence(object): PAD_TAG='<pad>' UNK_TAG='<unk>' START_TAG='<s>' END_TAG='</s>' PAD=0 UNK=1 STAR...原创 2020-02-09 00:02:23 · 294 阅读 · 0 评论 -
第6章 实战之聊天语料处理——6.3句子的构造和判断,6.4正则表达式
1.语料2.新建项目chatbot使用nlp虚拟环境中的python.exe3.复制语料到项目4.新建extractconv.py原创 2020-02-07 00:00:45 · 158 阅读 · 0 评论 -
第6章 实战之聊天语料处理——6.2 聊天机器人语料处理流程
1.语料收集(1)聊天记录(2)电影对话(3)台词片段2.语料清洗要清洗的内容(1)多余的空格(2)不正规的符号(3)多余的字符、英文清洗的方法(1)正则化(2)切分(3)好坏语句判断3.句子向量的编码化(1)原始文本不能直接训练(2)将句子转换成向量(3)将向量转换成句子4.语料问答对的构建(1)问答对的处理和拆分(...原创 2020-02-05 22:44:19 · 724 阅读 · 0 评论 -
第6章 实战之聊天语料处理——6.1数据处理-环境搭建
1.环境介绍(1)sys,系统自带(2)pickle,特有类型和python数据类型转换,系统自带(3)re,正则表达式库,处理中英文符号转换、书名号去掉等,系统自带(4)tqdm,进度条,系统自带...原创 2020-02-05 17:06:06 · 112 阅读 · 0 评论 -
第5章文本处理方法——5.6 文本处理方法
1.数据清洗(去掉无意义的标签、url、符号等)2.分词、大小写转换、添加句首句尾、词性标注 一般把大写转换成小写,除了特殊词。3.统计词频、抽取文本特征、特征选择、计算特征权重,归一化4.划分训练集、测试集,7:3...原创 2020-02-04 15:05:38 · 478 阅读 · 0 评论 -
第5章文本处理方法——5.5 词向量与word2vec
1.词向量,word embedding 又叫词嵌入,是自然语言处理中的一组语言建模和特征学习技术的统称,其中来自词汇表的单词或短语被映射到实数的向量。2.Word2vec 是为一群用来产生词向量的相关模型,这些模型为浅而双层的神经网络,用来训练以重新建构语言学之词文本。(1)CBOW模型由输入层、映射层、输出层共同构成(2)CBOW所构建的模型结构实...原创 2020-02-04 14:51:00 · 306 阅读 · 0 评论 -
第5章文本处理方法——5.2,5.3,5.4 NLP中的语言模型
1.语言模型 是自然语言处理的一大利器,是NLP领域一个基本却又重要的任务。它的主要功能就是计算一个词语序列构成一个句子的概率,或者说计算一个词语序列的联合概率,这可以用来判断一句话出现的概率高不高,符不符合我们的表达习惯,它是否通顺,这句话是不是正确的。 我是NLP开发工程师 开发工程师我是NLP2.NLP中的语言模型,概率语言模型...原创 2020-02-04 11:59:39 · 182 阅读 · 0 评论 -
第5章文本处理方法——5.1语料的获取与处理
1.什么是语料库 语料,即语言材料,是语言学研究的内容,是构成语料库的基本单元。 语料库,存放的是在语言实际使用中真实出现过的语言材料。 语料库是以电子计算机为载体承载语言知识的基础资源。 真实语料需要经过加工(分析和处理),才能成为有用的资源。2.语料库的种类(1)异质的(2)同质的(3)系统的(4)专用的3.语料的...原创 2020-02-04 10:58:34 · 1410 阅读 · 0 评论 -
第4章 NLP基础——4.9 朴素贝叶斯例子
1.环境介绍(1)python(2)jieba,分词(3)sklearn,机器学习(4)scipy,数学工具安装jieba, pip install jieba --upgrade安装sklearn, pip install sklearn --upgrade安装scipy, pip install scipy --upgrade2.准备数据,收集宾馆和旅...原创 2020-02-02 09:57:19 · 312 阅读 · 1 评论 -
第4章 NLP基础——4.7,4.8 隐马尔可夫模型
1.马尔可夫过程(Markov process)(1)是一类随机过程(2)在已知目前状态的条件下,它未来的演变不依赖于它以往的演变。主要研究一个系统的状况及其转移的理论。它是通过对不同状态的初始概率以及状态之间的转移概率的研究,来确定状态的变化趋势,从而达到对预测未来的目的。 无后效性,便利性(3)马尔科夫链Markov chain是指具有马尔科夫性质的离散事件随机过程...原创 2020-02-01 23:53:08 · 161 阅读 · 0 评论 -
第4章 NLP基础——4.5,4.6 贝叶斯与朴素贝叶斯
1.贝叶斯分类(1)是统计学的一种分类方法,是一类利用概率统计知识进行分类的算法。(2)朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。最为广泛的两种分类模型是决策树模型Decision Tree Model和朴素贝叶斯模型Navie Bayesian Model, NBM。(3)在许多场合,朴素贝叶斯分类算法可以与决策树和神经网络分类算法相媲美,该算法能运用到大型数据库中,...原创 2020-02-01 23:29:31 · 181 阅读 · 0 评论 -
第4章 NLP基础——4.1NLP基础,4.2分词技术,4.3词性标注,4.4命名实体识别
1.什么是NLP natural language processing, 探讨如何处理及运用自然语言,包括语音和文字。让电脑懂人类的语言。 范围:文本分析、信息检索、词性标注、问答系统、邮件回复、文本分类、文本鉴别(涉黄、反动)等。(1)词法分析a.分词技术b.词性标注 是指为分词结果中的每个单词标注一个正确的词性的程序,也即确定每个词是名词...原创 2020-02-01 17:12:04 · 461 阅读 · 0 评论 -
第3章 循环神经网络(RNN与LSTM)——3.8 长短期记忆网络(LSTM)
一、举例“今天早上小明的妈妈教小明叠被子,首先要将它铺开,再从两个长边向中间叠,形成了一个长方形,最后把长方形的两个短边分别取三分之一处折叠,形成了一个更小的长方形,最后将长方形从中间对折,最终就完成了叠被子”。关键字,长期依赖c是单元状态,用来存储长期记忆。LSTM(1)遗忘门(2)输入门(3)输出门GRU(1)重置门(2)更新门...原创 2020-02-01 15:34:52 · 354 阅读 · 0 评论 -
第3章 循环神经网络(RNN与LSTM)——3.6,3.7 梯度消失和梯度爆炸
一、解决方案1.选择合适的激活函数 不建议使用sigmoid和tanh函数,导数非常小,容易导致梯度消散。2.选择合适的参数初始化方法3.使用权重参数正则化4.使用BatchNormalization(1)通过规范化操作将输出信号x规范化到均值为0、方差为1,保证网络的稳定性(2)可以加大神经网络训练的速度(3)提高训练的稳定性(4)缓解梯度爆...原创 2020-02-01 00:01:19 · 481 阅读 · 0 评论 -
第3章 循环神经网络(RNN与LSTM)——3.5 循环神经网络模型(双向RNN)
一、举例1.明天早上第一节课是英语课,所以明天早上我应该带一本_______书。可以通过前面的预测后面的,如题。但是不能通过后面的预测前面的,建议使用双向循环神经网络。二、双向循环神经网络从左到右,和从右到左,都是同步进行的。 (1)每个时刻有两个隐藏层(2)一个从左到右,一个从右到左(3)向前和向后传播参数独立w0*w1*w2.....原创 2020-01-31 23:50:57 · 466 阅读 · 0 评论 -
第3章 循环神经网络(RNN与LSTM)——3.3,3.4 循环神经网络模型
可以解决与时间序列相关的操作,RNN中参数是相同的。(1)记忆特性(2)接收两个参数(3)参数共享(确保每一步在做相同的事)1.one to one 处理分类问题,判断一句话是好是坏。2.one to many 做图片的描述,音乐的生成,需要一些欢快的音乐3.many to one 多分类,训练多个样本,判断最终是哪个样本。句子的处...原创 2020-01-31 23:04:20 · 485 阅读 · 0 评论 -
第3章 循环神经网络(RNN与LSTM)——3.2 BP神经网络模型
1.正向传播,输入->隐含->输出层(1)网络初始化,定义每层节点和权重(2)隐藏层的输出(3)输出层的输出2.误差计算3.反向传播,误差反向传播,权重更新(1)隐藏层到输出层(2)输入层到隐藏层4.偏置更新(1)隐藏层到输出层(2)输入层到隐藏层5.BP神经网络,前馈神经网络(1)可以通过逐层信息传递到最后的输出(2)沿着一条直...原创 2020-01-31 22:51:34 · 3537 阅读 · 0 评论 -
第3章 循环神经网络(RNN与LSTM)——3.1常用的神经网络模型
3.1 常用的神经网络模型1.卷积神经网络(Convolutional Neural Network, CNN) 是一种前馈神经网络,它包括卷积层(convolutional layer)和池化层(pooling player)。2.循环神经网络(Recurrent Neural Network, RNN) 是一种节点定向连接成环的人工神经网络,网络的内部状态可...原创 2020-01-31 21:04:57 · 937 阅读 · 0 评论