帖子

[资源经验分享] 各种'人工智能-AI开放平台'爬过的那些坑

[复制链接]

该用户从未签到

910 wzyrsm@qq.com 发表于 2019-7-14 01:31:46 1#
本帖最后由 wzyrsm@qq.com 于 2019-7-14 01:45 编辑


各种人工智能-AI开放平台"爬过的那些坑

    故事背景:一个憧憬着人工智能时代的人,一直希望能抓住AI1.0的这个风口做点有成就感的事情。机缘巧合之下,帮朋友公司做一个微信公众号的空调产品推广项目,决定用AI开放平台+微信公众号去实现项目的功能要求以及检验自己的想法和能力。可惜本人不是计算机专业的科班出身,仅仅从网上花钱自学了一些编程的基础,HTML、CSS、JavaScript、PHP、Python都是学了皮毛(略懂略懂)。所以只能找一些好的平台去开发,期望可以减少编程的依赖(扬长避短)。历时3个多星期,终于把公众平台做得初见成效,下面我会把爬过的坑跟大家分享,大神们看见我说的不对的地方请多多指导。

第一章    选平台

    既然做微信公众号,肯定得先搞定微信公众开放平台,(为什么不做微信小程序或者百度小程序?因为纯手工编程的话我的水平还达不到,只能以后慢慢一边学习一边做了)注册、认证就不说了,先做好界面,把各种产品资料,公司品牌,企业文化等放上去。然后就是找AI开放平台,先后尝试过百度UNIT,讯飞AIUI、图灵机器人、腾讯AI开放平台。也是一轮的注册、认证。然后就是看他们家的开发文档,教学视频,案例等等。
   
1.图灵机器人
    第一印象:微信试用机器人界面很萌。深入了解后:功能相对单一,简单的聊天可以(基本问答对功能,也就是一问一答,没发现有支持二次代码或者逻辑开发),而项目至少需要多轮对话才能满足,所以很遗憾pass。

   

  
2.腾讯AI开放平台
    初看:“语义理解”这个功能貌似符合我的要求,点进去一看。。。什么鬼?只有一个空壳吗?请恕我眼拙,我实在是找不到我想要的对话功能,如果有知道的朋友请告诉我在哪里!所以pass,原谅我智商不够!

   

   
3.百度UNIT
   说到“百度UNIT-理解与交互技术平台”,我不得不给他一个赞,无论教学视频,开发文档,是这么多平台做的最详细最好的。从创建对话-->富集样本-->技能训练-->测试-->调优,都有很清晰的新手指引。只要你先跟着教学视频里面声音甜美的小姐姐 一步一步的操作和理解关键名词,你都能很快的上手,难的地方在于自己的项目的时候怎么去画好逻辑图,做好对话的故事线,以及理解每句话里面哪个词是词槽,哪个词是特征词,需要建立几个意图,每个意图之间怎么串起来,剩下的都是富集各种语句模板词槽资料。





   
    虽然百度在图形化操作这方面做的很好,但是。。。我没有选用他是因为对于我来说二次开发的学习成本太高。感觉就像去相亲对方条件都很好左看右看都很满意,等到提亲的时候直接来一句:让我先去完成一个小目标,赚一个亿!直接傻眼!具体到项目来说就是AI助手给顾客推荐产品,问了顾客一堆需求,然后就只能回复一句相同的话,你说这合适吗?我又不是推车卖茶叶蛋只有一个产品。然鹅unit说你觉得不ok,那你可以用DMKit这个离线工具去撸代码啊,全部撸一遍,然后自己去接API也好SDK也好,随意!DMKit支持:linux系统,mac系统,至于windows系统嘛你自己试试啦。。。然后还要装一对依赖文件。。。不懂看DMKit的使用文档啊。。。(对于我是天书,没有一个字不懂,但就是不知道什么意思。 )
   
    想想我要为了一个工具要额外头学一大堆其他的编程知识,然后还可能要装双系统在我的破电脑上。。。算了吧,百度UNIT我们分手吧,或许有一天我一不小心实现了小目标我会回来找你的。
轻轻的我走了, 正如我轻轻的来; 我轻轻的招手, 作别西天的云彩。

4.讯飞AIUI
    最后是“
讯飞AIUI开放平台”,如果说“图灵机器人”是一个萝莉,“腾讯AI开放平台”是一个网红,“百度UNIT”是一个白富美,那么“讯飞AIUI”就是小家碧玉,麻雀虽小五脏俱全。虽然功能界面没有UINT人性化,没有UNIT的教程详细,没有友好的新手引导,但是至少没有让我去完成一个小目标。只需要一点点的JavaScript基础就能满足我的业务需求。
    当然虽说是小家碧玉(还是个女汉子),但也耗费我很多心血和脑细胞才完成工作,期间出现的各种莫名其妙的BUG,都是因为没有详尽的理解,只能慢慢一点点尝试,调优。
    在讯飞AIUI这里,多伦对话要掌握的**是:意图,实体,辅助词;而百度UNIT是:意图,词槽,特征词。其实都差不多理解就行。关键是讯飞AIUI的“技能后处理”功能,用的是JS的网页代码编辑器,这个语言我略懂啊!不需要额外学习别的东西,成本相对UNIT低了不是一个档次。







第二章    爬坑

1.准备工作

首先先拿纸笔,那张纸,把业务逻辑,对话故事线等先梳理一下,这是在百度UNIT教学里面学到的(有兴趣的朋友可以去看看),不能偷懒否则后面你会后悔。因为没有写在纸上你的思路会恨不清晰,无论是创建意图对话还是撸代码都很懵。而且写纸上的业务逻辑直接决定了代码的框架,如果业务逻辑出问题,代码只能推倒重来(我就犯过这个错误,悔不该悔不该啊! )。

    然后就是:

    1.创建 “意图”:通过模拟客户的意图提问写几句样例;当创建多“意图”的时候有个坑,后面慢慢解释。

    2.通过例句,创建实体和辅助词。这里创建实体是个坑,尤其是你不理解什么是实体和辅助词的区别,以及实体的种类(如静态实体,动态实体,所见即所得,三种的含义及用法区别)的时候,你会搞出很多莫名其妙的bug。以我的工程项目为例子,我向顾客推荐空调,需要用到的实体就是:空间大小,空调类型,以及空间户型。

    一开始我以为只是三个静态实体,而我也只是单意图,所以空间大小用的是官方的实体,其他的两个就是自定义实体。所以做出来的对话V1.0版本没出大问题,只是显得很“人工智障
”!后来为了更智能一些,对话更流畅,增加了多意图串联,具体控制意图间的关系只能通过意图的“入口”开关按钮,具体开or关看业务需求吧。(这里我不得不提一下百度UNIT的多意图串联功能,他家的是下拉菜单条件式串联,人性化操作,各种组合灵活程度相对高。白富美就是白富美,有优点这必须得承认 。还有就是同一个意图下话术的追问顺序UNIT是可以直接点击排序的,而AIUI则要按关联顺序排,你若是排错?不好意思你得删除关联重新再来,简直是反人类操作

    这下好了,增加了多意图以后就出问题了,不是日志报错就是回答的东西驴唇不对马嘴,一遍遍的检查代码都没发现问题,简直快把我逼疯了。后来调整代码查看日志才发现是“
实体”惹的祸。。。全部都共用一个实体id,怪不得明明是意图3的话术偏偏转到意图1去了。好吧,只能拆分实体,意图1的对应实体1,意图2的对应实体2。拆分的时候又遇到了坑,简直是坑里有坑,钙中钙坑中坑, 空间大小用到的实体是内容是数值,这是个无穷枚举的,而官方的实体只有一个id而且不能改,三个和尚没水喝啊! 怎么办?幸好我发现自定义创建的静态实体可以引用别的静态实体,引用官方的数字实体用自己编的id不就成了?嗯。。。原来是我想太多,能引用的官方实体不包括无穷枚举的类型。。。(心里一万只草泥马走过 )好吧,逼我出绝招,我引用自己创建的实体总可以吧?!虽然自己创建的实体是同一个意图下,但没有解决问题,一招不行那就来连招!在意图里面的对话样本可以改对应实体的内容,我把它改成官方的数字实体,这样通过一波三折的方法终于解决这个画皮鬼问题!


    在各种调试--修改--调试 x N次 后终于做好现在的V2.0版本,比起V1.0那个“人工智障”来说,V2.0起码算是“人工稍微智能”,能满足最基本的业务需求了。以后有时间精力再考虑V3.0,V4.0...或者慢慢研究百度UNIT这个“白富美”的DMKit“小目标”吧!

    当我以为终于冲坑里爬出来走上小康道路一马平川的时候,又作死的尝试了一下更“智能”,然后发现还有个坑,而且这不是我能爬出来的,算了,我绕过去吧,睁只眼闭只眼。这个坑就是“技能后处理”这个编辑器里面的代码,当意图的 实体(词槽)填满以后(也就是一个if(条件){回复内容}),只能回复一次,如果你写了2段“
回复内容的代码(就是这句:
response.setOutputSpeech(“你回复的内容”
)),不好意思,系统只能调用最后一句代码,也就是说你要么长篇大论回复一次,要么只能回复你拆分的最后内容,反正你看着办。这和JS的语法逻辑简直是悖论。而且你的if(条件)

里面的条件内容也不支持小括号合并,JS的语法里面明明可以 0<a<100, 而AIUI偏偏要拆分开 0<a && a < 100, 所以这在撸代码的时候也是一大坑!

    最后说了这么多我也困了累了,没有红牛,附上略懂的代码就洗洗睡了

代码.zip

1.36 KB, 下载次数: 0

代码.zip

1.36 KB, 下载次数: 2