要更好的了解语音交互,那么就不得不了解背后的技术知识,国庆花了几天大致看完了宗成庆的《统计自然语言处理》,这本书主要讲的是语言交互里最关键的部分,即Natural languge Processing。为了自我梳理,把本书和看的吴军的《数学之美》 一起汇总了下,整理出来给需要的童鞋。
本文分四个部分,相对比较长,而且又是技术的,可能会比较难看进去,但是….要坚持。 一,语音交互的系统构成 二,语音交互面临的困难 三,自然语言处理的关键技术 四,具体场景语音交互实现的技术原理 一,语音交互的构成 语音交互一般包括三个模块: 语音识别 ASR(Automatic Speech Recognition),主要工作是将声音信息转化为文字。 自然语言处理 NLP(Natural Language Processing),主要工作是理解人们想要表达的意思,并给出合理的反馈。 语音合成TTS( Text To Speech),主要工作是指将文字转化为声音 《统计自然语言处理》给了更细致和完整的的人机对话系统组成结构,主要包括如下6个技术模块:
1,语音识别模块(speech recognizer) 实现用户输入语音到文字的识别转换,识别结果一般以得分最高的前n(n≥1)个句子或词格(word lattice)形式输出。(把用户说的语音转成文字) 2,语言解析模块 (language parser) 对语音识别结果进行分析理解,获得给定输入的内部表示。(即把用户说的转成机器理解的语言) 3,问题求解模块(problem resolving) 依据语言解析器的分析结果进行问题的推理或查询,求解用户问题的答案。 (即解决用户问题的模块,比如调用的百度搜索) 4,对话管理模块(dialogue management) 是系统的核心,一个理想的对话管理器应该能够基于对话历史调度人机交互机制,辅助语言解析器对语音识别结果进行正确的理解,为问题求解提供帮助,并指导语言的生成过程。可以说,对话管理机制是人机对话系统的中心枢纽。( 能够记录历史对话数据,通过训练能够给到用户更好的回答) 5,语言生成模块(language generator) 根据解析模块得到的内部表示,在对话管理机制的作用下生成自然语言句子。 (把回答的机器语言再转换成 口语语言) 6,语音合成模块(speech synthesizer) 将生成模块生成的句子转换成语音输出。(把口语语言再转化成语音) 二,语音交互的面临的困难 下图是知乎问题 为什么 Siri 听懂了我的话,还是不能做出有效的回答或准确的操作?的内容,很好的例证了语音交互里的最大的问题在于 语义理解,即准确的理解用户的对话目的。Siri可以很好的识别语音,即能知道用户说的是“ 明天早上9点帮我预约出租车去公司“,但是却不能理解你的对话目的,到底是要设定预约提醒日历,还是要提前预约出租车。
而造成Siri不能理解用户的原因是,1,原本的对话有多个含义,2, 原本的对话里 滴滴打车对于Siri来说是未知语言。(当时内置系统并没有对接滴滴) 因此语音交互最终需要解决的关键问题是歧义消解(disambiguation)问题,和未知语言现象的处理问题。 理解了这个背景,我们在和Siri对话或者设计语音交互的功能时就能理解它们为什么不能做出有效的回答。下面一篇讲的就是怎么做语义理解。 三,自然语言处理的关键技术 怎么让机器去理解 “ 明天早上9点帮我预约出租车去公司“ 这句话, 就像对于一个2年纪小孩子,它可能听得懂但是看不懂,那么我们是不是先要要教她这句话是这样读: “ 明天/早上/9点/帮/我/预约/出租车/去/公司”——即 中文分词 然后教她意思是 “明天早上9点/帮我/预约出租车/去公司”——即 句法结构 然后告诉她这里的“预约”不是预约提醒,即语义分析 最后 “刚说的明天早上9点帮我预约出租车去公司。 但是我现在不需要了”—是转折,即篇章分析 1,中文分词 词是对话最小单元,因此理解一句话的前提是能够知道对话里用了哪些词。 比如:“上海大学城书店在哪里”,就需要拆分成“上海/大学城/书店/在/哪里”,而不是: “上海大学/城/书店/在/哪里” 下面是《数学之美》吴军讲的 分词的统一方法,他讲的比较直接好了解,就直接截图了。 (责任编辑:admin) |