写在前面
- 为了学习,写了一个简易问答客服。主要是为了打通整个问答流程,数据主要来自一个家乡商会的册子(非常少),识别率、准确率等等等什么的,大家就权当笑话,望各位看官海涵。
-
整个描述过程基本属于大白话,看官了解一下即可。
image.png
问答客服步骤
- 步骤依次
分词——》再分词——》链接——》问句含义分析——》 图数据库——》反馈
原理和实现简单介绍
分词
再分词
- 这一步是为了根据上一步的结果(词性,句法依赖树)进行纠错。但实际上,如果想要分词效果真正提升,都应该在“分词”那一步进行,毕竟“再分词”属于补充环节,本质为trick。
- 这一步使用的主要是各种字符串匹配+字典相关的算法。
链接
- 链接也非常重要,说白了,链接就是给分出的词,找到确定的对应对象。比如,句子里是“姚明”,我们链接成“姚明(篮球巨星)”
- 这一步使用的主要是各种字符串匹配+字典相关的算法。
问句含义分析
- 带有链接的分词结果出来后,下一步就是理解该句子的意图了。
- 目前,我用的low方法——正则匹配。不过,这里借助了工具refo。git链接 refo算是正则匹配里的高级工具,还不错,大家可以试用一下。
图数据库
- 知道问句含义了,下一步就是根据分词结果+问句含义,生成“查询语句”了,对数据存储引擎进行查询。
- 使用图数据库,是因为图数据库支持复杂的查询。推荐入门使用neo4j,如果需要开源且支持分布式的,可以学习下janusgraph。这个工具是基于titan的一个fork,据说很赞。
反馈

- 毕竟,咱还没牛逼到什么问题都能回答。所以,问题回答不上来时,对应的给几条类似的反馈也是必须的。
-
这块使用elasticsearch实现。简单来说,就是用带有ik和拼音插件的es来做,另外,es做搜索词提示,也是非常赞的,大家可以尝试一下。(注意下目前pinyin插件只支持到es6.3.0,其实大家可以改一下限制,重新生成下即可避免限制。)
image.png
image.png
其他
es pinyin插件安装
- 下载插件插件地址
-
使用ide或者其它途径,生成以下target内容,其中下图release里的zip,即为所需压缩包。(注意版本)
image.png
- 解压该压缩包的内容到对应版本es下的plugins的pinyin(这个可自行定义,但会影响后面的使用,比如这里叫pinyin, 那么该插件就得按pinyin作为关键词来用)文件夹下。
- 重启es服务。
网友评论