智能聊天机器人

1. 什么是智能聊天机器人

简单地说,就是基于人工智能原理(Artificial Intelligence,以下简称AI),通过对聊天文本进行分析后给出应答的一类程序。

2.基本原理

AI聊天机器人的工作可以被分成两个部分:训练+匹配。

2.1训练

训练的过程,目的在于构建或是丰富词库。

流程描述如下:

S1:用户通过教学界面向系统提出一个话题与相应应答;

S2:系统对该话题进行分词,判断该话题在系统知识库中应存放的位置;

S3:在系统知识库中添加该话题及相应应答。

   可以看到,这里涉及到两个问题:给出一个话题,系统是如何分词的?词库要如何设计才能又快又准地应答?

2.11分词

这是因为聊天机器人的存储并不以句子为单位(那样太费时费空间),而是以词。于是,分词,几乎成为聊天机器人的核心。

中文分词技术俨然是一个重要的研究方向,隶属于自然语言处理。现有的分词算法可以分为三大类:基于字符串匹配的分词方法基于统计的分词方法基于理解的分词方法。 用户在聊天时的一个显著特点是所提出的话题一般都是比较短小的,而不是长篇大论,不具有段落篇章结构,绝大多数就是少数几句话。基于统计的分词方法适用于有段落、篇章结构以及上下文关系的文段。基于理解的分词方法目前并不成熟,且时间复杂度高,速度慢。于是,只有基于字符串匹配的分词是比较适合的。

基于字符串匹配的分词方法,又叫做机械分词方法。按照扫描方向的不同,机械分词法可以分为正向匹配和逆向匹配。(e.g. 字符串“北京华烟云”,正向匹配为《北京,华烟云》,逆向匹配为《北,京华烟云》)逆向匹配的切分正确率要高于正向匹配法,为了便于发现歧义切分,有时候将两者结合起来形成双向匹配法。按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配,也就是长词优先和短词优先。按照匹配不成功时重新切取的策略,机械分词法可以分为增字法和减字法。

基于词典的“双向最大匹配”法是目前中文信息处理中最简单有效的方法,有这样的统计:汉语文本中90%左右的句子,其与双向最大匹配的结果相吻合,而且是正确的分词结果。

当正、反向最大匹配算法得出来的切分结果不一样时,就必须对其进行歧义处理,在此不再赘述。

 2.12词库设计

   由于中文词的特点:1.中文词是一个开放集,词数在增长;2.以不同字开头的      词的数目变化很大,多的达到数百个,少的也有可能只有一个或者没有;3.词的长度变化也很大,有单字词,也有由六、七个字成词的。这就要求在设计词典时,除了考虑访问效率外,还得充分考虑存储利用率。

请看这种数据结构,就能很好地平衡时间与空间。


首字Hash表通过一次哈希运算就可以直接定位汉字在表中的位置。一个单元包括三项内容:C:存储首字;F标志位:存储以C为首字的最长词条的长度;P:指向词表索引表。

 

 

训练例子

现在举一个训练的例子:我教“大白天的做什么美梦啊?”回答是“哦哈哈哈不用你管”。

S1:应用双向最大匹配算法分词:双向分词结果,正向《大白天,的,做什么,美梦,啊》;反向《大白天,的,做什么,美梦,啊》。正向反向都是一样的,所以不需要处理歧义问题。长词优先选择,“大白天”和“做什么”。

S2:以“大白天”举例,假设hash函数为f(),并设f(大白天)指向首字hash表项[大,11,P]。于是由该表项指向“3字索引”,再指向对应“词表”。

S3:将结构体<大白天,…>插入队尾。体中有一个Ans域,域中某一指针指向“哦哈哈哈不用你管”。

S4:完成训练。


2.2匹配

       可以被描述成如下流程:S1:用户通过聊天界面向系统提出一个话题;S2:系统对该话题进行分词处理;S3:在系统知识库中寻找与该话题匹配的话语回复用户。

基于词典的分词算法分为词典加载预处理最大匹配歧义消解几个阶段。

 

其具体流程如下:

S1:预处理阶段,按照特殊字符(英文字母、数字、标点符号等)将待分析文本进行断句,将待切分的文本切分为只有中文的短句子,这些句子是下一步分词处理的基本单位;

(举个栗子:输入“asdfadf东北师范大学哈哈哈dfadflakfl(*^__^*) 嘻嘻……”,simi只会对其中的中文“东北师范大学哈哈哈嘻嘻”做出响应;输入“(*^__^*)”时,输出“I have no response.”)

S2:对断句出来的句子进行 双向最大匹配(双向匹配,长词优先)分词,分词后的结果作为S3的输入;

(举个栗子:输入“东京古巴比伦”,正向与反向切词结果均为《东京,古巴比伦》,长词优先,所以simi只对“古巴比伦”做出响应;输入“古巴比伦埃菲尔铁塔”,正向与反向切词结果均为《古巴比伦,埃菲尔铁塔》,此时Simi对“埃菲尔铁塔”做出响应)

S3:对上一步分词得到的结果进行比较,判断是否存在歧义,如果存在歧义,就进行一定的歧义消解

S4:重复S2、S3,直到处理完步骤一中断句所切分出的所有句子单元。


这里给出与小黄鸡对话的例子:我问小黄鸡:“埃菲尔铁塔上45度角仰望星空”。

S1:双向最大匹配分词:正向反向均为《埃菲尔铁塔上,45度角,仰望星空》,没有歧义。长词优先,系统选择了“埃菲尔铁塔上”作为关键词;

S2:系统在知识库中用刚才说的哈希函数f(埃菲尔铁塔上),找到比如[埃,11,P] 的表项,顺着指针找到6字词的索引,顺着索引找到6字词表,遍历词表,找到<埃菲尔铁塔上,…>结构体;

S3:系统随机选择该结构体Ans域中的一个回答(也有可能是根据频率高低来选择)。比如“两年之后等着你”。

S4:输出回答,匹配结束。


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值