◆田海平 刘艳松
(湖南中医药高等专科学校公共课部计算机教研室 湖南 412000)
内容描述语言是通过语法规则把内容组织起来用于传输和存储的技术,它提供标准化的方法来描述和交换独立于应用程序或供应商的结构化数据,实现内容和程序的分离。内容描述语言通常有统一的标准格式和语法,能够实现跨平台通信,为通信应用提供了非常大的便利。
内容描述语言是信息化通信的重要部分。目前应用最广泛的语言有XML、HTML等标记语言。HTML已经成为描述网页的一种基本语言和标准,使用XML进行数据交换已经成为计算机软件领域的标准技术模式,并发展出较成熟的数据交换的解决方案[1];通过XML实现数据的标准化、结构化,解决了在不同平台、不同系统之间的数据结构/模式的差异[2]。
虽然目前的内容描述语言种类多,但是却普遍缺乏描述过程内容的功能。过程内容表示有过程变化的事物,它具有时序性的特征。由于HTML不能描述过程,为了实现网页的动画效果,而不得不另外借助JavaScript这样的脚本语言[3]。编程语言是最常见用于描述过程的,比如C、JAVA等,但它们只能用于自身系统而不能用于通信。
在通信领域一直缺乏过程内容的描述方式主要原因还是应用需求不足。但是随着人工智能和Agent技术的发展,智能体间的通信出现语义表达更拟人化的趋势[4],比如两个智能体交互中需要描述一个事件的过程。目前,已有Agent的通信语言KQML用于智能体间的通信的研究[5],但是有限的语义在表达能力方面不丰富。
针对目前通信中缺少有效的过程内容描述语言,本文提出一种基于JSON格式扩展的过程内容语言。文中将详细讲述语言的技术、语法和语义,并通过一个语音助手的应用场景来说明它的实用性。
该语言主要是利用JSON的数据格式功能和结构化的控制结构来实现过程内容的描述。
JSON是一种轻量级的数据交换格式。由于JSON易于机器解析和生成,目前有不少基于JSON的数据交换模型研究[6],有研究表明JSON的传输效率甚至高于XML[7]。JSON中的对象可以包含多个key/value(键/值)对,并且JSON有数组结构,该语言正是以此实现过程内容的描述。
编程语言中代码是由表达式连接组合而成的,表达式是一个时序单位,多个表达式连续组合在一起表达一个时序过程。该语言借鉴了编程语言的过程表示方式,把单个内容作为时序单位,描述一个命题或一个事件,多个内容按规则连续组合在一起来表示事物变化的过程。
为实现流程化的描述,该语言为每个内容单位设置有4种连接控制方式,分别为顺序、选择、循环和结束,类似于结构化编程语言。结构化定理表明[8],任何一个复杂问题的程序设计都可以用顺序、选择和循环3种基本结构组成。该语言使用这3种基本控制结构实现过程的描述在理论上是严谨和正确的。
语言的表示从下到上分为三层结构,分别为元素、词和句式。
元素是语言中的基本数据单元,书写格式是:名称/值对。值的简单数据类型有字符串、数字和布尔值,复杂的数据类型有对象和数组。其中对象是元素的集合,对象可以包含多个子元素,形成有层次的树形结构,比如一个描述苹果的对象写为{“Name”:“apple”,“Shape”:“round”}。
词是用于描述具体内容的,是一种结构化数据。根据表达的意义把词分为对象词、谓词和联结词3种词类型,其中联结词是用于辅助表达其他两种词的。对象词可描述事物或事件,谓词和关联词用于描述命题。词的数据类型是对象,所有词中都含有”Type”和”Name”元素,数据类型为字符串。其中”Type”表示该词的类型,”Name”表示名称。
表1 词的类型
词中元素的数据类型除了基本数据类型外,几乎任何一种类型的词都可以以另一种类型的词作为元素,从而使语法非常简单。一般来说,对象词或谓词都可作为另一个对象词或谓词的元素,而联结词中的”Word”元素需是同类型词的数组。句式的内容虽然只有一个词,但通过嵌套其他词作为子元素从而扩展出更复杂的内容。语法的描述如下:
句式是描述过程内容的数组结构的基本单元,由静态内容和控制结构两部分组成,元素名分别为”Content”和”Control”。其中”Content”数据类型为词,”Control”数据类型为对象,其子元素”Type”表示控制的类型。
图1 语言的结构图
句式有顺序、选择、循环和结束4种控制方式。其中选择和循环有判断条件,其句式的内容一般为谓词或联结词构成的命题。选择和循环的结构是由多个句式组成句式块。结束分为过程结束和块结束两种,过程结束表示整个过程的终止,块结束表示跳出句式块。
表2 句式的控制结构
本文中以一名用户通过手机语音助手订外卖为例,用户手机和语音助手服务系统分别为通信的双方。以下为用户和手机助手的对话内容。
用户:“在上午12点订肯德基的鸡腿汉堡和炸鸡,如果天气热则再加冰激凌或者可乐,不然就加拿铁咖啡,如果能够在半小时内送到则明天继续同样的一份。”
助手:“订好了汉堡、炸鸡和拿铁咖啡,发好评可赚积分。”
把语言信息转换成语言内容来传输,描述如下:
内容分成用户和助手两个部分。用户订购一份肯德基餐,首先以”order”对象词表示订购行为,订购的汉堡和炸鸡是该词的元素;接着以谓词”be”判断天气开启选择,分支均用”add”对象词表示加餐行为;最后用谓词”less_than”判断到达时间,决定是否再次预定。助手回复用户,首先用”orderKFC”告之订购完成,餐品包含在该词中,再以”evaluate”谓词告诉用户如果好评则加积分。
本文设计了一个可描述过程内容的语言,从原理实现、语法结构对该语言进行详细描述,并通过一个手机助手订餐的示例论证该语言的可行性。该语言主要在通信中作为过程内容的描述语言,以解决目前通信领域缺乏描述过程内容方式的问题。随着智能技术的发展,对通信内容的要求会不断提高,可描述过程的语言将会有越来越多的用武之地。