接到上峰(浩姐)指令,要搞一个人工智能机器人客服系统,让我先搞一个1.0版本出来用用,并且,不能占用工作日时间,我瞬间就¥%…………%¥%……。
本着我为公司,公司为我的精神,接下这个码无前例的任务。but,我对人工智能一点都不懂啊!!!那就先调研一波吧。
其实本质上就是想搞一个问答系统,并且能根据用户提问的方式,和本身内置的回答不断的学习、升级、进化……,就是所谓的机器学习。
要想建立问答,首先要先能理解用户的语言,这里我们就暂定汉语这一种语言,要做语言处理,也就是NLP(自然语言处理)。
汉语博大精深,算是NLP中王者的存在。对比英语,空格的分词结构相对比较容易,但是汉语并没有明显的区分符号。并且不同的语气有着不同的含义,(虽然英语也是)。 (汉语:“不是我瞧不起谁,在座的都是垃圾”)。
不信你就分析一下二级汉语的意思【一把把把把住了】。哈哈哈。
言归正传,NLP从大方向上分为以下两阶段
- NLU(自然语言理解)
- NLG(自然语言生成)
NLP五大难点
- 语言是没有规律的,或者说规律是错综复杂的。
- 语言是可以自由组合的,可以组合复杂的语言表达。
- 语言是一个开放集合,我们可以任意的发明创造一些新的表达方式。
- 语言需要联系到实践知识,有一定的知识依赖。
- 语言的使用要基于环境和上下文。
四个典型应用
- 情感分析
- 聊天机器人
- 语音识别
- 机器翻译
NLU 自然语言理解
基于NLU的应用:机器翻译、机器客服、智能音响等。
NLU的难点
举些例子:
- 校长说衣服上除了校徽别别别的
- 过几天天天天气不好
- 看见西门吹雪点上了灯,叶孤城冷笑着说:“我也想吹吹吹雪吹过的灯”,然后就吹灭了灯。
- 今天多得谢逊出手相救,在这里我想真心感谢“谢谢谢逊大侠出手”
- 灭霸把美队按在地上一边摩擦一边给他洗脑,被打残的钢铁侠说:灭霸爸爸叭叭叭叭儿的在那叭叭啥呢
- 姑姑你估估我鼓鼓的口袋里有多少谷和菇!!
- “你看到王刚了吗”“王刚刚刚刚走”
- 张杰陪俩女儿跳格子:俏俏我们不要跳跳跳跳过的格子啦
归档一下NLU的五大难点
- 语言的多样性
- 语言的歧义性
- 语言的鲁棒性
- 语言的知识依赖
- 语言的上下文
NLU的实现方式
- 基于规则的方式
- 基于统计的方式
- 基于深度学习的方式
前两个不说了,说一下基于深度学习的方式,目前分为3类
- CNN(卷积神经网络)
- RNN(循环神经网络)
- Transformer
CNN
(也是浩姐天天和我念叨的让我了解一下的东西,我觉得他也不太懂)。
2大特点
- 能够有效的将大数据量的图片降维成小数据量
- 能够有效的保留图片特征,符合图片处理的原则
构成
- 卷积层(提取特征):卷积层负责提取图像中的局部特征
- 池化层(下采样):池化层用来大幅降低参数量级(降维)
- 全连接层(输出结果):全连接层类似传统神经网络的部分,用来输出想要的结果
应用
- 图片分类、检索
- 目标定位检测
- 目标分割
- 人脸识别
- 骨骼识别
RNN
特点
- 比较适合处理序列性的数据,比如文本等
- 跟传统神经网络最大的区别在于每次都会将前一次的输出结果,带到下一次的隐藏层中,一起训练
缺点
- RNN 有短期记忆问题,无法处理很长的输入序列
- 训练 RNN 需要投入极大的成本
RNN的优化算法:LSTM(长短期记忆网络) 特点就是:抓重点
应用
- 文本生成:类似填空题,给出前后文,然后预测空格中的词是什么。
- 机器翻译:翻译工作也是典型的序列问题,词的顺序直接影响了翻译的结果。
- 语音识别:根据输入音频判断对应的文字是什么。
- 生成图像描述:类似看图说话,给一张图,能够描述出图片中的内容。这个往往是 RNN 和 CNN 的结合。
Transformer
如果你是做人工智能相关的人员,这个你肯定很了解了。也是目前最强的方法
Transformer 和 CNN / RNN 的比较
- 语义特征提取能力 Transformer >>CNN=RNN
- 长距离特征捕获能力 Transformer>RNN>CNN
- 任务综合特征抽取能力 Transformer>>CNN=RNN
- 并行计算能力及运算效率 Transformer >CNN>RNN
NLG 自然语言生成
3个level
- 简单的数据合并
- 模板化的 NLG:这种形式的NLG使用模板驱动模式来显示输出
- 高级 NLG :这种形式的自然语言生成就像人类一样。它理解意图,添加智能,考虑上下文,并将结果呈现在用户可以轻松阅读和理解的富有洞察力的叙述中
6个步骤
- 第一步:内容确定 作为第一步,NLG 系统需要决定哪些信息应该包含在正在构建的文本中,哪些不应该包含。通常数据中包含的信息比最终传达的信息要多。
- 第二步:文本结构 确定需要传达哪些信息后,NLG 系统需要合理的组织文本的顺序
- 第三步:句子聚合 不是每一条信息都需要一个独立的句子来表达,将多个信息合并到一个句子里表达可能会更加流畅,也更易于阅读
- 第四步:语法化 当每一句的内容确定下来后,就可以将这些信息组织成自然语言了。这个步骤会在各种信息之间加一些连接词,看起来更像是一个完整的句子
- 第五步:参考表达式生成 这个步骤跟语法化很相似,都是选择一些单词和短语来构成一个完整的句子。不过他跟语法化的本质区别在于“REG需要识别出内容的领域,然后使用该领域(而不是其他领域)的词汇
- 第六步:语言实现 最后,当所有相关的单词和短语都已经确定时,需要将它们组合起来形成一个结构良好的完整句子
应用的3个目的
- 能够大规模的产生个性化内容
- 帮助人类洞察数据,让数据更容易理解
- 加速内容生产
典型的应用场景
- 自动写新闻
- 聊天机器人
- BI 的解读和报告生成
基本的NLP调研就是这些,上述总结略过了复杂的神经学算法、高级数学模型等相关知识(我不会啊),综上考虑,Transformer也许是最适合的方式。这也只是总体上的分析,针对我们的需求,中文的NLP也许还有所不同,我下次再讲。
码字不易,转载请注明出处~🤗
文章评论