机器人已经进入大家的视野,现在无论是到商场管家,有些大型商场已经有机器人做引路,还是给你打电话卖保险、卖房子的各种销售电话,都有可能是机器人,而不是真人,知识通过声音,现在已经可以做到让你分不清是真人还是机器人,科技进度,如此之大,最近在研究文字机器人,已经在企业层面上得到应用,可以看下他的组成部分。
由于是NLP能力,那么可以做的事情就非常的多,我主要讲下分词、实体抽取、词向量的一些基础知识,
上面是一个比较通用的流程,一个对话请求进来后,首先进行意图识别(关键字、相似问、词向量等),槽位实体解析,然后看下命中哪些个标准问,也就是意图已经识别到后,看下进行策略优化,看进入多轮还是单轮,然后根据回复管理进行意图返回。
中文分词:Python中分分词工具很多,包括盘古分词、Yaha分词、Jieba分词、清华THULAC等,大同小异,我们使用的是jieba分词,为什么使用jieba只要是他的ES插件比较方便,但也不是主要选择他的原因,我们分词还是依靠积累起来的特殊词库和行业词库,我们大概积累了800W多万个,基本解决了冷启动的问题
jieba分词支持的三种分词模式包括:
(1) 精确模式:试图将句子最精确地切开,适合文本分析;
(2) 全模式:把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义问题;
(3) 搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
我们主要用到了1、3,主要是用来做语义分析,和查找标准问,也就是所谓的意图。
实体抽取:我们把他分为几个类似,枚举、正则、关键字抽取,在另一篇文章中,我会着重写我们如何构建多轮会话系统的建模过程,实体抽取的问题在于如何快和准,之前参加过腾讯具备的机器人交流会,他们也是既有规划式,然后通过L2R进行在归总:
词向量:做词向量的算法很多,词向量经典模型:从word2vec、glove、ELMo到BERT,词向量对分词的准确性要求和语料要求很高,语料我们使用了很多家公司合起来的语料进行训练,也有试过腾讯实验室公布的词向量模型,如果在特殊行业,还是需要对语料进行积累,不然冷启动是个很大的问题,这里我就不一一讲解各个算法了,外面对这些算法的文章实在太多,搜一下一大把,不过后续我还是会逐一根据我自己的理解去写一些东西,帮助大家理解。
意图识别:个人认为是现在公共解决方案比较弱的一个环节,如何做好词向量、搜索引擎的得分、关键词的得分,然后进行组装,需要根据场景对这几个比重进行调节,比较繁琐