Advertisement

【聊天机器人】机器学习构建chatbot

阅读量:

一、智能问答:

深度学习是生成时模型,输入一个句子,生成一个句子
机器学习是判别是模型,输入一个句子,判断它的label

1、工程角度考虑:

(1)结构设计清晰、模块化
(2)功能分析、解耦(互相不干扰)、部件可插拔与拓展
在这里插入图片描述

2、算法与机器学习角度考虑:

(1)算法简答,数据(特征)驱动
(2)场景化与垂直领域
客服问答问题是非常长尾的,我们只需要解决大部分问题即可。
在这里插入图片描述

二、预备知识

用Q匹配Q,比较两个句子相似度。(深度学习里可以用Q匹配A,因为有长时记忆。)

1、检索与匹配

(1)知识库(存储了问题与回答内容)
(2)检索:搜索相关问题
(3)匹配:对结果进行排序

2、编辑距离匹配

应用:拼写纠错、智能补全。对词的输入形式无要求
(1)编辑距离/Levenshtein距离:
是指两个字符串之间,由一个转成另一个所需要的最少编辑操作次数。如,用户问题Q,与已有的Q1…QN的编辑距离,选择编辑距离小的Qi对应的Answer,作为回复。
(2)允许的编辑操作包括:

  • 将一个字符替换成另一个字符(S)
  • 插入一个字符(T)
  • 删除一个字符(D)
    在这里插入图片描述
    动态规划的处理方式:
    在这里插入图片描述

(3)Python 使用Levenshtien库 计算编辑距离。
Python在string 类型中,默认的 utf-8 编码下,一个中文字符是用三个字节来表示的。用unicode。

复制代码
    # -*- coding:utf-8 -*-
    import Levenshtein
    texta = u'聊天机器人'
    textb = u'聊天·机器人'
    print Levenshtein.distance(texta,textb)

(4)编辑距离缺点:认为所有词是同等重要的。
你喜欢什么书、你喜欢什么电影。编辑距离为3,非常小。但却是2个意思的句子。解决方法TF-IDF。

3、关键字匹配:TF-IDF\text-rank:

利用关键词,进行距离的比对。认为比平等的对待每一个词进行比对更有意义。

4、词义匹配:

如,你喜欢什么资料;你喜欢什么文档。认为资料和文档是近似的意思。此时采用TF-IDF则认为相关度低。解决方法:词向量
NLTK wordnet库:近义词表。判断哪些词关系是接近的
自己构建近义词表:利用word2vec对分词后的中文进行学习。从中文中IF-IDF抽取核心词汇,将每个词转化为N维向量,利用N维的向量,比较词汇之间的相似度。

5、场景匹配:

给一句话,判断属于哪个分类。判断用户所问的问题是属于什么场景。按场景匹配可以加快匹配速度。
如,奥巴马的年龄?——利用机器学习等方法判断属于不同场景的概率——属于人物分类的概率最高——再进行词向量或TF-IDF等匹配

三、Chatterbot聊天机器人应用

每个部分都设计了不同的“适配器”(Adapter)

1、含义:

ChatterBot是一个基于机器学习的聊天机器人引擎,构建在python上,主要特点是可以自可以从已有的对话中进行学(记忆)习(匹配)。

2、匹配:机器人应答逻辑 => Logic Adapters(可以先用朴素贝叶斯判断属于哪个模块)

  • Closest Match Adapter:字符串模糊匹配(编辑距离)。文字匹配。设定一个confidence
  • Closest Meaning Adapter:借助nltk的WordNet,近义词评估。含义匹配。
  • Time Logic Adapter:处理涉及时间的提问。
  • Mathematical Evaluation Adapter:涉及数学运算。

3、存储:存储器后端 => Storage Adapters

  • Read Only Mode:只读模式,当有输入数据到chatterbot的时候,数据库并不会发生改变
  • Json Database Adapter:用以存储对话数据的接口,对话数据以Json格式进行存储。(生产环境下一般不用Json,因为速度太慢了)
  • Mongo Database Adapter:以MongoDB database方式来存储对话数据

4、输入:输入形式 => Input Adapters

  • Variable input type adapter:允许chatter bot接收不同类型的输入的,如strings,dictionaries和Statements(命令行)
  • Terminal adapter:使得ChatterBot可以通过终端进行对话
  • HipChat Adapter:使得ChatterBot 可以从HipChat聊天室获取输入语句,通过HipChat 和 ChatterBot 进行对话
  • Speech recognition:语音识别输入,详见chatterbot-voice

5、输出:输出形式 => Output Adapters

  • Output format adapter:支持text,json和object格式的输出
  • Terminal adapter
  • HipChat Adapter
  • Mailgun adapter:允许chat bot基于Mailgun API进行邮件的发送
  • Speech synthesis:TTS(Text to speech)部分,详见chatterbot-voice
    如果适配器得出的值一样,则按照顺序选择第一个;适配器得出的值不同,哪个置信度高就选哪个。也可以用朴素贝叶斯进行适配器的而选择。
    短对话的chatterbot,用户只基于上一句话,进行问答。与上下文无关,

全部评论 (0)

还没有任何评论哟~