文 / 张俊林
Siri是iPhone 4S内置的智能语音识别系统,吸引了许多用户的关注。本文将从技术层面详解Siri,主要讲述输入系统和活跃本体两部分内容。
寰球今日,苹果正红。
iPhone 4S无疑是苹果公司的博利杀手及系列产品中的当家小生,除采用A5双核处理器、800万像素摄像头以及全新的iOS 5外,最吸引眼球的还是其内置的智能应用Siri。
Siri并非苹果公司自主研发,最初只是苹果App Store上的一款应用,由Siri公司开发。2010年4月28日,苹果公司收购了Siri公司,传言收购价格在2亿美元左右。不久之后Siri从App Store下架,集成进iPhone 4S。
从纯技术角度,Siri是一套较准确的语音识别系统,也是具有环境感知能力的持续自学习系统,更是一整套集成上述所有优点的新型人工智能框架。本质上,Siri是通过多轮对话来获得用户事务意图的意图识别系统。为了做到这一点,其内部综合了语音识别、自然语言理解、任务控制、意图理解、服务集成等多项技术。
用一句话来概述Siri:Siri能理解用户的语言语义,并经过多轮会话弄清用户的意图后,集成能够满足用户意图的多种服务(内部和外部)来帮助用户达成特定领域的事务。
Siri整体技术框架
从整体上来说,Siri符合云计算的技术架构,图1展示了其物理架构。Siri正常运转需要调用词典资源、计算模型等很多资源,客户端也会存储部分数据资源和计算资源,但绝大部分数据和资源存储在服务器端。客户端接收用户输入并做简单处理。
就语音流来说,Siri会将语音数据传输给服务端进行语义理解和意图识别等操作,并将服务结果在客户端展示给用户。Siri对用户需求的满足,最终要体现在能够集成提供一定功能的各种服务上。Siri提供的所有服务,一部分是苹果自身提供的,但大部分服务都是通过调用外部网站提供的服务API来完成的。
Siri是一个功能繁复的综合AI框架,图2展示了其包含的数据、模型和计算模块。为了更易于理解整个框架,本文将其划分为能顺序执行有先后依赖关系的四部分。
- 输入系统支持用户多种模态的输入,并在内部统一以标注文本的方式表示。
- 在用户输入表示为文本后,Siri利用活跃本体和对应的执行系统将文本表示解析为用户意图。
- 理解用户意图只是一个中间过程。为了能够帮助用户完成事务,Siri的服务系统将调用各种内部和外部服务,作为满足用户意图的结果。
- 输出系统将Siri的运算结果返回给用户,完成一次服务,输出系统同样支持多模态输出方式。
Siri的资源主要分为数据资源和计算资源两类,其中数据资源有领域模型、词汇表数据库、短期记忆系统、长期记忆系统、领域本体数据库、对话流模型、服务模型、服务能力模型和外部服务;计算资源包括语音识别系统、语言模式识别器、语言解释器、对话流控制器、任务控制器、服务集成模块和语音生成系统。
Siri系统的复杂性由上面众多的数据资源和计算资源可窥一斑。下面将讲述输入系统和活跃本体两大子模块。
输入系统
Siri系统以用户输入开始,以输出服务结果为终,其间与用户进行多轮交互。Siri的输入系统主要提供了以下三个功能。
- 支持多通道输入模式。所谓多通道,即不仅支持键盘文本输入模式,也支持语音自动识别模式、GUI界面操作模式以及系统事件触发的输入等多种输入模式。
- 消除用户输入信息的歧义。自然语言理解系统的最大难点是在各级别的处理过程中会遇到形式各异的语言歧义现象,而输入系统也会对用户输入的信息进行初步的歧义消解工作。
- 尽可能将用户的注意力引导到Siri能够提供的服务上。虽然Siri可用于趣味性的聊天对话,但其根本目的并不在此,能够为用户提供各个领域的实用服务是其本原,因此在Siri整个运作流程中都会尽量将用户引导到其能够提供的服务,而输入系统也肩负这一重任。
多模态输入
Siri提供多模态输入,即给用户多种可选择的输入方式(如图3所示)。用户可以选择文本键入方式,也可以选择语音输入方式或者在GUI界面通过点选来进行功能选择。
Siri提供了多种输入通道,供用户随意选择。在用户输入前,根据与用户个人兴趣的相关性提供给用户一些可能感兴趣的选择项。如果用户没有从提供的选择项里选择,则接受用户的主动输入,在用户输入过程中Siri自动判断用户输入是否完成。如果判断用户还需继续输入,则将当前的输入追加到之前的输入流中,同时根据与目前输入数据的相关性自动给出一些输入建议。如果判断用户输入完成,则结束输入过程。
在用户以任意一种输入方式输入信息的过程中,Siri都会实时地进行引导或提示,尽可能将用户的输入引导到Siri可以识别的商业实体或能够提供服务的功能上。归根结底,Siri是要根据用户的输入提供一些服务,采用主动引导而非被动等待用户自由输入,能帮助用户节约时间,充分展示出Siri的能力。
Siri的输入提示是引导用户的重要组件。在用户输入部分信息后,Siri根据目前的信息,结合自己能够提供的服务,提供了功能强大的输入提示来引导用户到某项功能上来。这种输入提示可以是单词这种表层拼写级别的,也可以是语法语义和任务功能等深层级别的。
比如,最简单的输入提示是自动补全功能,用户输入了“rest”,此时Siri可以提示用户restaurants,通过直接选择减少用户的输入成本。Siri也提供如替换和语义改写类型的输入提示,比如用户输入:find restaurants of style,此时Siri可以提示用户:Italian,而用户点选了这个提示后,Siri可以将这个输入语义改写为:Find Italian restaurants。这是Siri在输入阶段就体现出来的智能。
语音输入流程
语音自动输入也是Siri最吸引人的特性之一。图4展示了Siri的语音输入流程。系统接收用户的声音流信号,通过调用“语音文字转换器”来将语音信号转换成可能的文字信号,这个“语音文字转换器”是Nuance通信公司提供的。
虽说如此,但这个转换器可被认为是Nuance通信公司为苹果公司特别制作的。我们知道,“语言模型”在语音识别系统中起到至关重要的作用,因为音频符号转换为文字信息时,有多种可能选项,而哪个选项才是用户真正表达的内容呢?此时语言模型在进行正确答案选择时会发挥很大的作用。
举个例子,假设用户语音输入:“我喜欢苹果”。语音识别后输出两个可能答案:1.我喜欢苹果;2.我稀饭苹果。此时可以利用语言模型来对两个结果进行打分,语言模型本质上是通过大规模语料统计来获得相连两个单词的连接紧密程度,通过语言模型可知“喜欢苹果”比“稀饭苹果”更容易在真实语料中出现,于是选项1的得分就高于选项2,此时Siri会将选项1作为识别结果。
之所以说这个转换器是为苹果公司定制的,是因为转换器的语言模型是根据Siri专门训练的。Siri是多个垂直领域的垂直智能助手,所以数据中包含领域相关的商业实体名称以及用户的个性化信息。在训练语言模型时也会考虑这一点,并将这些信息在语言模型中的权值加大,这样在识别时更容易被识别为能由Siri提供的服务。所以说整个Siri系统都有引导用户到其能够提供的服务上来的机制,这点从语音识别中也可看出。
尽管经过语言模型调整有助于明确输入内容,但语音识别结果仍然不是唯一可确定的,会有语音流的多种文本解释。此时Siri会对其语法语义进行检查,判断哪些是符合语义的,哪些是不符合语义的。
比如语音识别结果为两个候选项:1.Italian food for lunch;2.Italian shoes for lunch。此时Siri可以判断出选项1在语义上更合理,所以会根据语义合理性进行排序。如果得分最高的选项超过一定阈值,则Siri认为这就是语音识别的结果,并进行一些语义标注工作作为最终识别结果。否则,会将多个选项提交给用户进行选择,把用户的选择结果作为最终识别结果。在上面的例子中,Siri可能会问用户:“Did you mean shoes or food?”然后根据用户的选择来挑选正确答案。
活跃本体
活跃本体和执行系统是Siri中最具技术含量的两个核心组件。活跃本体可以被理解为整个Siri系统的具体执行环境和场所;执行系统调用所有系统数据、词典、模型和程序,在活跃本体内将用户输入的信息解析为用户真正的意图,然后根据意图来调用外部的服务。
如果进行类比的话,可将活跃本体类比为人工智能系统里著名的“黑板系统”,即将数据放入黑板中,各个程序来对黑板内的数据进行加工。
在程序执行时,活跃本体内放入的数据和模型包括:领域模型、用户个性化信息、语言模式、词汇表和领域实体数据库等。
领域模型
领域模型包括某个领域内的概念、实体、关系、属性和实例的内部表示,这其实就是Semantic Web研究领域常说的ontology。Siri包含很多垂直领域的领域模型,如外出就餐领域包括餐馆这个概念,而这个概念又具有名称、地址和电话等属性;另外就餐事件(Meal Event)也是该领域一个概念,具有人数、日期和时间等属性;多个领域的领域模型被Siri用来引导输入、解析自然语言、派发服务和生成输出内容。
领域模型有以下一些功能。
- 表层单词到领域概念的映射关系。
- 单词分类,比如判断某个单词是个餐馆名称。
- 保存概念关系,比如“菜系”和“餐馆”的关系,以方便Siri在内部作出推理功能。假设用户输入是local mexican food,因为领域模型体现了菜系和餐馆其中一个是概念,另一个是概念的属性,于是通过内部推理可以表示为:find restaurants with style=mexican。
- 组织领域有关的服务地址,比如哪个网站提供餐馆评论。
- 在输出系统生成语言时,提供信息并进行语义转写。
领域模型采用被动触发机制,当外部任务或事件达到一定阈值后相关概念会被触发。
个性化信息
Siri在个性化方面也做得非常出色。在和用户沟通的过程中,一台本来冰冷无知的机器能够叫出你的名字,并且知晓你的个人爱好,用户体验无疑会非常好。
从具体技术手段上,Siri有长期记忆和短期记忆两个记忆系统,来实现个性化和与用户交流。短期记忆和长期记忆是存储个性化信息的场所,主要功能有两个:一方面在Siri将文本映射为语义或者用户意图时消除歧义,帮助Siri更准确地判断用户想要干什么;另一方面可以增加亲和力(知道用户的个人信息,在交互时增加亲切感)。
Siri的短期记忆系统会记录以下内容。
- 最近用户和Siri的完整对话记录。
- 最近用户通过GUI界面所做的选择项,比如打过哪些电话、浏览过哪些页面、查询过哪些商业实体查的地图等。
- 最近用户发出的查询请求及对应的查询结果。
- 最近用户和Siri交互时对应的传感器信息,比如地理位置、时间、手势等信息。
短期记忆系统是通过触发机制发挥作用的,比如当一些条件或者事件发生时,如果强度超过一定阈值,就会触发短期记忆系统。
长期记忆系统会记录以下内容。
- 用户个人信息,如名字、居住地址、账户信息及个人偏好等。
- 记载用户收集的相关信息,比如收藏书签等。
- 记录用户使用过的商业实体,比如电影院、餐馆、旅馆等,不仅记录其名称,还记录电话、地点等更详细的完备信息。
- 记录娱乐相关实体,比如电影、视频、歌曲等。
- 个人计划或者社交关系,比如待做列表、定时提醒或者其电话联系人列表等。
- 商品或者服务的历史购物记录或者心愿表。
与短期记忆系统类似,长期记忆系统也通过触发机制发挥作用。用户和Siri交互的任何时刻都有可能触发长期记忆系统,比如用户浏览网页或者在进行网络购物都可能触发长期记忆系统来获取其个人偏好信息。另外,长期记忆保存的账户信息也能避免用户输入繁琐的登录步骤。
语言模式识别系统
语言模式识别系统是对用户输入的表层、语法层、习惯用语和成语等进行模式匹配的模块。在Siri内部,这个系统的数据以模式定义的形式存在,而有专门代码解析这个模式定义数据。其实这就是我们平常说的模板系统。
匹配模式的代码在Siri内部采用正则表达式或者状态机等方式实现。这个模式识别系统的使用场合包括引导用户输入、NLP解析、识别任务类型和对话类型等。比如对于常用语what’s happening来说,这就是一个具体的模式。在Siri匹配发现这个模式后,会在内部被认为是事件计划任务以及本地事件类型任务,这有助于进一步处理。
词汇表
词汇表用于维护Siri中的表层单词到领域模型或任务模型中定义的的概念、关系、属性的映射关系,被用来引导用户输入、自然语言解析和生成输出结果。
领域实体数据库
领域实体数据库是被Siri的执行系统直接使用的,其主要目的是存储领域实体的比较全面的信息并提供统一的查询接口。其存储的领域实体包含以下几方面。
- 商业类型实体,比如与餐馆相关的信息(名称、地址、电话等信息)。
- 娱乐类实体,如电影、视频、歌曲等实体信息。
- 其他领域的实体。
- 事件。
- 地理位置信息,比如著名地点、地标型建筑、机场及国家区划等地理信息。
假设用户的输入需求是要寻找一个合适的就餐地点,图5展示了Siri在某个运行时刻时活跃本体的即时快照。从图5中可以看出,在活跃本体中已经存储了被激活的相关概念及其属性,其中餐馆和就餐事件是两个具体的激活概念,而餐馆这一概念又包含名称、菜系、地理位置三个属性信息,地理位置本身既是一个属性,也是一个概念,而街道名称又是地理位置这一概念的属性。同样的就餐事件也有时间段、就餐人数等属性。在运行时刻,活跃本体中的餐馆概念可能已经根据领域实体数据库中的餐馆名称将某个具体餐馆具象化,即名称内已经填写入候选的具体餐馆名称作为这个激活概念的实例。
上述被激活的概念属性信息属于领域模型中的外出就餐这一具体垂直领域中的概念。而就餐事件同时也属于一种具体的任务流,隶属于任务流模型中的事件规划这一具体通用任务模型的领域子类型,用于确定任务的步骤和流程。假设此时Siri已经获得了一些用户输入信息,但还缺乏就餐人数这一约束条件,会话流模型会发现这一点并据此询问用户就餐人数信息。
作者张俊林,《这就是搜索引擎:核心技术详解》作者,新浪微博研发人员,中科院软件博士,主要研究方向为自然语言处理、搜索技术、推荐系统及机器学习。
原文链接:http://www.programmer.com.cn/11696/