刚参加完关于aiui的一个技术培训,对于什么是aiui有了进一步的认知,之前的一些问题也获得了解答,很好,需要记录下来。
首先AIUI是一个语音系统,主要分为AIUI Client和Server两部分。主工作流程是:客户端拿到用户语音输入后就发送到服务端进行语音识别,语义断句,包括场景拒识;之后将处理后的信息传送到Agent端进行语义理解,对话管理,最终给出回复结果再传送回客户端。其中代号为雅典娜服务系统是核心。
中间有介绍一些专业术语,例如文法,贴弧模块,文法贴弧等,不懂。大概意思是通过这种技术能够更好的理解语意。
解答了之前疑惑的问题是:是不是在撰写语料的时候,都需要把每一条写全?例如,在家庭看电视的场景中,通过语音技术找到一部想看的影视剧,我们需要撰写很多类似这样的语料:“我想看电影”“看部电影”“搜一部好看的电影”。。。 那么问题来了,(1)是不是需要我们交互设计师或者产品经理绞尽脑汁在语料库里写出接近所有能够表达这个意思的语言?(2)是不是“搜一部好看的电影”和“搜索一部好看的电影”这种一个字差别的语料都需要给出?
其实问题的本质还是指向系统的NLU能力。技术leader给出的答案是,在开放平台上,现有的技术还是需要给出尽可能多的比较全乎的语料,一般在100条以内,特殊情况可以申请扩容。开放平台也支持模糊语料理解,但是功能没有想象的那么强大,保险起见,还是要多写。而在内部前端技术研发上,正在只用多种语料模型进行优化,能够有效解决相似语料的问题。
一个问题的解决,可以走技术,我认为也可以走设计。
如果从体验设计的角度来分析,可以从两点优化。(1)引导用户说固定句式。比如在某功能的介绍之后引导用户说固定句式。“您好,我是医生小伊。如果您哪里不舒服,可以说小伊小伊,我不舒服。”用户在短时记忆中,可以有效记住最后一句话,一般而言会照着说。(2)通过用户研究,找出关键用户,设计好场景和问题,搜集用户最常表达的语料。这样能够确保90%以上的语料库正确率即可。后期可以根据后台数据不断扩容。
最后,技术负责人说在撰写语料的时候有一套规则:比如()表示该语料插槽是必须,[]{}表示非必须。通过这种约定的句式表达,可以提升语料撰写的效率。