服务机器人自然语言处理的研究与应用

2018-11-06 01:34尹浩伟蒋峰岭郭玉堂
安徽科技学院学报 2018年4期
关键词:组块关键字实例

王 凡, 尹浩伟, 蒋峰岭, 郭玉堂

(合肥师范学院 计算机学院,安徽 合肥 230601)

随着人们对人工智能研究的深入,越来越多的服务机器人进入普通家庭,帮助年轻人照顾老人、小孩,减轻他们的负担[1]。为了更好地服务人类,降低人类操作机器人的难度,最方便、最有效的方式是使用人类的自然语言操作机器人。因而,在机器人与人类的交互中,自然语言处理便是核心要点[2-3]。自然语言信息方便了人们的日常交流,但是对于机器人来说,信息搜索难、信息迷失和信息超载等问题都阻碍了机器人与人的直接交流,要想让机器人在丰富的自然语言信息中获取到人们希望机器人完成的任务变得很困难,这就要求提高机器人信息检索效率来帮助机器人获取人类希望它们知道的信息[4-5]。在信息检索中,可以通过搜索关键字信息来分析信息含义,帮助机器人理解自然语言,完成处理自然语言任务。

在自然语言处理中,目前比较流行的处理技术仅仅是简单的搜索匹配,在程序中尽可能地扩大处理自然语言的案例数,来实现自然语言处理。在任务规划中,目前较成熟的技术是回答集编程(ASP)技术,ASP是一种非单调推理编程技术,已成为很多研究者用于非单调推理的知识表示和推理工具,可以解决服务机器人指令语言任务规划这种非单调问题[6]。ASP技术在服务机器人自然语言任务信息的应用中,求解效率不是很高,为了提高机器人的自然语言理解能力,论文中采用关键字搜索算法处理自然语言,利用改进的ASP技术进行任务规划。相比于以处理自然语言案列为对象来处理自然语言的方法,关键字搜索算法通过处理并分析自然语言句子中的若干关键字来理解整个句子所表达的意思,增加自然语言处理的通用性,简化了程序从自然语言转换为指令语言的处理,降低了时间复杂度,提高了自然语言识别效率;再利用改进的ASP技术进行任务规划和动作规划,使用特定的模型求解实例化的程序,可以提高服务机器人的信息获取和动作规划的效率,最终提高了机器人对自然语言的理解能力。为了验证该算法的执行效果,以中国机器人大赛中家庭服务机器人仿真项目为测试平台,解决平台中自然语言处理问题,提高机器人任务求解效率。

1 自然语言处理流程

1.1 处理问题描述

场景抽象为一个10 m×10 m大小的室内环境,其内部规定了机器人的属性以及当前环境下出现的物体及其属性。机器人被抽象为一个有机械手和托盘且可移动的3D仿真机器人模型,机械手可以拿物体,托盘可以装物体,机器人可以随意移动到场景中的任何位置;场景中存在大物体和小物体,大物体有独立的物体和可以装小物体的容器,这些物体有编号、种类、位置、大小、颜色等属性,其中物体编号可以唯一确定某一个物体。为了便于形象地描述场景信息,图1是文本格式的一种场景描述信息。其中,(hold 0)表示机器人机械手上没有物体,(plate 15)表示机器人托盘里是15号物体,(at 0 5)表示0号物体(即机器人)的位置是5号位置,(sort 1 worktable)表示1号物体的类别是“worktable”,(size 1 big)表示1号物体是大物体,(type 2 container)表示2号物体是容器,(closed 2)表示2号容器的门是关着的,(color 8 red)表示8号小物体的颜色是红色的。

图1 场景信息描述Fig.1 The description of scene information

在任务描述中,任务描述类型分为三种:目标、信息和约束。目标表示平台要求机器人完成的工作;信息表示机器人还可以从场景中获取到的额外信息;约束表示机器人在执行任务时不能执行的动作,或者过程中必须保持某一场景状态的约束条件[7-8]。在任务表示方式上,平台采用受限的词汇组成英文句子来描述,即自然语言描述方式。为了便于分析,将其实例编号为1到8(图2)。每个实例都表达一种任务信息,如实例1表达的含义是有一个红色瓶子在工作桌上。

图2 自然语言描述的任务信息Fig.2 The task information described in natural language

1.2 自然语言处理算法介绍

处理上述问题时,主要采用的是关键字搜索算法。利用某个或某些关键字信息匹配出英文句子中的词汇,根据匹配出关键字含义或关键字组合含义,利用分组标记,谓词转换等处理方法,分析出整个句子所表达含义,从而完成机器人对自然语言理解的算法。

在算法中,关键字一词,英文表达为“keywords”,指一个句子中能概括表达出整句意思的某个或某几个词语,获取这些关键字可以分析整句话表达的意思,不需要处理整个句子中其他部分。对于句子中的关键字,利用关键字搜索算法中匹配模式,遍历句子中所有词汇,匹配出句子中的关键字,根据匹配出的关键字信息进行进一步分析。基于关键字搜索算法处理自然语言,具有操作方便、查找词汇全面等优点[9-10]。

1.3 自然语言处理过程

为了解决自然语言处理问题,采用一种支持家庭服务机器人仿真项目的自然语言处理体系结构(图3),将自然语言处理过程分成两个模块,即自然语言预处理模块和任务规划模块。

自然语言预处理模块包含格式化、分组标记和谓词集转换。在预处理阶段,通过格式化处理,将平台中自然语言描述的任务信息处理为便于机器处理的格式,利用关键字搜索算法,理解句子表达的含义,使用分组标记和谓词转换等自然语言处理技术,将自然语言格式的任务描述处理为指令格式,为任务规划做准备。

图3 自然语言处理体系结构Fig.3 The architecture of natural language processing

任务规划模块包括场景信息识别、指令语言任务规划和ASP规则编写。利用实验平台提供的场景信息和经预处理转换的指令语言任务信息,获得场景的初始状态和机器人需要完成的任务,编写ASP规则并调用iclingo求解器,求解出一组机器人执行的动作序列。

2 自然语言预处理

通过关键字来分析自然语言表达的含义,有利于自然语言的预处理工作,将其“翻译”为指令语言格式,进而有利于使用回答集编程(ASP)技术进行任务规划和动作规划。下面将详述格式化处理,分组标记和谓词集转换这三个步骤,来论述预处理过程。

2.1 格式化处理

以英文句子来描述自然语言格式的任务信息,会存在字母大小写、空格等情况,这在以某些合成词为关键字信息时,需要使用多组词汇进行匹配,以“keyboard”为例,在句子可能有多种形式出现,如“key board”、“Key board”、“keyboard”等,在搜索“keyboard”时,需要进行多种情况匹配,增加了程序的时间复杂度。

为了简化程序处理以及便于快速地搜索特定的关键字信息,需要将自然语言信息进行格式化处理,英文句子中字母全部变为小写字母,并去掉空格,以英文句号为分界,处理每一条任务信息。对于某个或某些词汇中某几个字母可以构成其他词汇这种情况,可以以原词汇和包含词汇为关键字信息进行搜索匹配,比如,“worktable”中有“table”词汇,可以直接以这两个词汇作为关键字进行搜索匹配,若存在“worktable”和“table”时,可以确定为“worktable”;若搜索到“table”且不含“worktable”,则可以确定为“table”。又如,“capboard”、“keyboard”中都含有“board”,若需要识别“cap”、“key”、“board”、“capboard”和“keyboard”这些词时,可以以“cap”、“capb”、“keyb”、“capboard”和“keyboard”这组词为关键字,若搜索到“cap”,且不含“capb”,可以识别为“cap”;若搜索到“capboard”可以识别为“capboard”,同理,可以确定“key”和“keyboard”。图2实例中任务信息经过“格式化处理”后的形式如图4所示,比如,图中第二句话“pleasegivehumantheredcan”,可以搜索“give”、“human”、“red”、“can”这些关键字信息来判断这是一条需要给用户红色罐头的任务。

图4 格式化处理结果Fig.4 The result of formatted processing

2.2 关键字分析

完成格式化处理后,在进行分组标记之前,需要对仿真平台中的词汇进行关键字分析和预处理,便于将不同任务信息进行分类处理。用于实验的测试平台提供有限词汇(表1)。名词是用来保存任务的对象、形容词是用来描述名词的特性,程序不用专门处理;代词在平台中只有一个“me”,特指场景中的用户,自动处理为“human”即可;动词包括目标中的实意动词,可能代表一个目标或者约束,在处理时能够直接判断它具体代表什么类型的目标;介词表示两个物体之间的关系,过去分词表示物体的状态,若程序只搜索到这两类词,那么它可能是一个补充信息;助动词“must”和“be”,在英文中,它带有情感色彩,可能会描述为约束信息,因此程序需要先搜索判断;冠词如果出现在句子中,一般是帮助机器人定位小物体,可以和名词,形容词一起处理;副词中的“there”可以用来表达陈述句,“not”可以用来否定,都需要进行搜索判断其表达的任务类型。

对于有实际意思的任务动词,可以进行搜索,直接判断其表达任务的含义。若在一条任务信息里找到give、pick、take、put、go、open、close这些动词,这样的一条任务可能是包含完成目标或者约束中的不能执行的目标。只要获取到动词,并获取动词后面的名词,即可分析出这条任务。实例第2条关键字分析如下:动词“give”、名词“can”和“human”、介词“on”,该句子可以分析为目标。

表1 自然语言词汇表Table 1 Natural language vocabulary

对于介词in、inside、on、near,介词和名词的组合onplate、inplate,以及介词与介词的组合netxtto、downto等情况,表示两个物体之间的位置关系;对于opened、closed这类过去分词表示某个容器门的开关状态,这两类词汇是属于补充信息一类的。若任务类型是补充信息,在英文语法中第三人称要用单数,这类词一般不会与“be”集合,故这类情况需要获取介词前后的词汇,从而可以分析出句子表达的意思。实例中第1条,名词为“bottle”和“worktable”,介词为“on”,该句子中无表示实际含义的动词,且出现“is”,该句子可以分析为补充信息。

对于助动词must、be,在英文语法中表示有种强烈的情感色彩。通常这类句子用来表达约束,剩下部分可以按照目标或补充信息进行分析。实例中第6条,助动词是“must”,介词是“on”,名词是“book”和“sofa”,名词“book”描述的是“red”,该句子可以分析为红色的书必须在橱柜上的约束信息。

对于冠词“a/an/the”,能够分析出若表达方式为“an opened door”,说明这是一个补充信息,表达某个容器的门是开着的;若冠词用于修饰表示小物体的名词,可以判断小物体的编号,从而定位小物体。实例中第3条是要捡起红色的罐头,而第4条是要将黑色的罐头从微波炉里拿出来,这两条信息中的“the”使得在处理第3条目标和第4条目标时可以定位是哪个罐头。

对于副词“there”可以表达“thereis”或者“theremust”两种形式。“thereis”表示该句子是陈述句,没有情感色彩,可能是一条补充信息;“theremust”带有一定的感情色彩,可以初步判断为约束信息。

2.3 分组标记

经过关键字分析后,可以得到动词大多数情况包括了任务信息中的目标;介词大部分情况包括了任务信息中的补充信息;而任务信息中的约束主要根据关键字“not”和“must”判断的,剩下部分可处理为目标信息或补充信息。利用分组标记的方法处理自然语言描述的任务信息,可以将任务信息的组成部分分为目标组块、服务组块、描述组块、位置组块、“not”标记组块和“must”标记组块,若不满足其中的基本组块,则标记为null。在仿真平台中,对5种任务类型使用分组标记进行句法分析。

2.3.1 单个服务对象的目标 对于这种类型的任务,可以标记有目标含义的动词为目标组块;句子中出现的名词标记为服务组块;若句子中出现形容词,则标记为描述组块。这种类型的任务有“pickup”、“putdown”、“open”、“close”、“goto”等动词表达的目标,在实例中第3条,“pick”标记为目标组块,“up”标记为位置组块,“can”标记为服务组块,“red”标记为描述组块,其余组块标记为null。

2.3.2 多个服务对象的目标 对于“putin”、“puton”、“takeout”、“takefrom”、“givehuman”等表示的目标,这些目标一般有两个服务对象,其中目标“givehuman”有一个服务对象是“human”。这些目标一般把这些动词标记为目标组块;两个服务对象分别标记为服务组块1和服务组块2,若有形容词描述其服务对象,相应地看标记为描述组块1和描述组块2。在实例中第2条,可以将“give”标记为目标组块,“on”标记为位置组块,“can”标记为服务组块1,“human”标记为服务组块2,“red”标记为描述组块1。

2.3.3 补充信息 如果句子中仅含有“in”、“on”、“inside”、“near”等介词,或者句子中包含“opened”、“closed”等过去分词,该句子表达的含义是一条补充信息,补充信息可以表示为两个物体之间的关系,或者是某个物体的状态。可以将表示物体之间关系的介词或者表示物体状态的过去分词标记为目标组块,表示物体的名词可以标记为服务组块,若有形容词描述物体,可以将形容词标记为描述组块。实例中第1条任务信息表达的是补充信息,可以将“on”标记为目标组块,“bottle”、“worktable”标记为服务组块。

2.3.4 带“not”标记的约束信息 句子中含有“not”标记,且没有表示状态的过去副词,这样的句子表达的含义就是一条约束信息。对于包含“not”标记的约束信息,可以是一条不能执行的目标,或者是一条不能保持的场景信息,将这两种情况转换为相应的目标信息,然后将其标记为不能执行。实例中第5条任务信息,可以将“not”标记为“not”标记组块,“open”标记为目标组块,“closet”标记为服务组块。

2.3.5 带“must”标记的约束信息 若句子中包含“must”关键字,且句子中没有表示目标的动词,该句子表达的含义是一条约束信息,表示场景中必须保持的信息,在机器人执行任务的全程不能改变该约束信息。在实例中第6条,可以将“must”标记为“must”标记组块,“on”标记为目标组块,“book”标记为服务组块1,“red”标记为描述组块1,“sofa”标记为服务组块2。

2.4 谓词转换

在分组标记处理中,实现了对任务信息的分类,确定了自然语言中关键字及语义组块之间的关系。其中,目标组块在语义上对应的是该任务信息表达的类别,若该组块是动词,需要进一步分析其位置组块;若该组块是介词,可以得出是补充信息。服务组块在语义上表示完成该任务信息机器人操作的物体对象,若有描述信息,则对应描述组块;“not”约束信息组块表示约束信息中不能保持的情况;“must”约束信息表示约束信息中必须保持的情况。分组标记后的任务信息已经分为不同的任务类型,但是这种分类仅仅是概念化,为了便于程序处理,需要对其进行谓词转换,实现自然语言转换为指令语言。经过谓词转换,可以得到具体的任务类型,便于程序转换为指令语言,其中谓词转换规则如表2所示。为了便于分析情况,从实例中选取第2条,第3条和第4条加以说明。实例中第2条可以转换的谓词为“puton(bottle, human)”,第3条可以转换的谓词为“pickup(red can)”,第4条可以转换的谓词为“takeout(black can, microwave)”。

表2 谓词转换规则Table 2 The rule of predicate transformation

2.5 实例分析

为了便于形象化理解自然语言预处理过程,下面将以上述实例为例,介绍预处理过程每一步骤的处理结果。

(1)处理自然语言中英文原句中字母大小写和空格问题。算法将英文原句中的字母全部转换为小写,并去掉空格,每一条任务用英文的句号进行分隔。结果如图4所示。

(2)算法从第一步处理过的字符串找关键字,根据动词、介词、助动词、冠词和副词,分别找出不同类型的任务,并记录每一条任务经过关键字分析后的结果。

(3)算法在处理第二步结果前,在要保存处理结果的字符串前面加上“(:ins”标记。第二步处理结果可以划分为五类,分别为带“not”标记的约束信息,带“must”标记的约束信息,补充信息,单个服务对象的目标和多个服务对象的目标。对于带“not”标记的约束信息的情况,算法可以加上“(:cons_not”标记;对于带“must”标记的约束信息的情况,算法可以加上“(:cons_notnot”标记;对于包含有目标的动词,算法可以加上“(:task”标记;对于有表达状态信息的字符串,算法可以加上“(:info”标记。然后,将任务的主体以指令语言的格式加到第三步保存的字符串中。

(4)算法将任务中物体obj1,物体obj2分别用颜色形容词和物品种类名词以指令语言格式加入到第三步保存的字符串里,完成自然语言转化为指令语言。实例中的预处理结果如图5所示。

图5 实例的预处理结果Fig.5 Preprocessing results of the instance

3 自然语言任务规划

3.1 指令任务规划

经过自然语言预处理后,仿真平台能够得到指令语言任务描述,之后利用回答集编程(ASP)技术进行指令语言任务规划,生成相应的待执行动作序列。回答集编程(ASP)作为具有非单调推理能力的知识表示和推理工具,可以将场景信息、指令语言任务信息等外部输入信息转换为相应的ASP规则,描述机器人对环境的感知和其行动能力,并利用这些信息进行任务规划,解决自然语言指令任务规划的问题[11]。ASP的求解包括两个步骤:

(a)实例化,将程序中含有的变量实例化为相应的实例。

(b)模型搜索,计算实例化后程序的回答集。

任务规划中使用的iclingo工具是一种增量式的ASP求解器,使用ASP求解家庭服务机器人仿真平台中指令语言任务信息的流程图(图6)。

图6 任务规划流程图Fig.6 The flow chart of task planning

从图6中可以看出,基于ASP对指令语言任务信息求解动作序列的过程如下:(a)对指令语言的任务信息进行处理,将任务信息以事实或规则的形式添加到ASP程序中,同时对场景信息处理,若任务信息中存在补充信息,将其添加到场景信息,确定最终的初始场景信息;(b)根据ASP求解状态及初始场景状态、目标状态,调用iclingo求解器进行求解;(c)求得最优的机器人动作序列。如果出现超时(大于5 s),则需要对任务信息重新规划,查看是否有错误或遗漏的信息,直到得到最优的动作序列为止。

3.2 实例分析

为了提高回答集编程(ASP)在自然语言任务规划中的求解效率,可以使用关键字搜索算法处理自然语言,再使用ASP对处理后的指令语言任务进行求解。例如,实例中第3任务“Please pick up the red can”,在预处理阶段能够得到指令语言格式为“pickup(red can)”,是命令机器人将红色罐头放到机械手中。由图1的场景描述第8条信息“(sort 8 can) (size 8 small) (color 8 red) (at 8 2)”所示可知,红色罐头的编号为8,位置是在2号容器上,要想执行图2中第3条任务,就必须执行动作“pickup(8)”。此时应该判断8号物体是否有要去某个位置的其他任务,若有,则可以将这两个任务组成复合任务。实例中第2条任务经预处理后得到指令语言格式为“puton(red can, human)”,可以将第3条和第2条任务复合起来,放在一起执行,相应的ASP编程为:move(2)——pickup(8)——move(6)——putdown(8)。

利用关键字之间的关系,可以将相关的原子动作进行合并,进而可以提高ASP的搜索空间,使程序的时间复杂度下降,缩短机器人执行动作时间,提高ASP的求解效率。实例中ASP任务规划的结果如图7所示。

图7 实例中的任务规划结果Fig.7 The results of task planning in the instance

4 结果与分析

为测试关键字搜索算法在自然语言信息处理中的效果,以及在较大数据下的计算性能,试验采用中国机器人大赛中家庭服务机器人仿真项目为测试平台。测试平台提供自然语言描述的场景信息和任务信息,用户程序识别并解析场景和任务相关的信息,通过算法求解出合理的行动序列来完成任务要求,平台根据程序运行时间、已完成的任务数、遵守约束数、执行动作数和问题求解效率综合给出用户程序的最终评分。

从2017年中国机器人大赛中家庭服务机器人仿真项目比赛内容中随机抽取20个任务场景,每个任务场景包含5到6个任务信息,总共约120多条子任务,关键字搜索算法的处理结果与简单处理结果对比结果(表3),其中每个任务场景的测试分数进行对比(图8)。

表3 对比实验结果Table 3 Comparison of experimental results

图8测试分数对比

Fig.8 The contrast of test score

从上述对比试验可以看出,关键字搜索算法在处理家庭服务机器人仿真项目的自然语言任务处理中具有良好的效果,其中大部分情况的自然语言信息都被准确地“翻译”为指令语言,大多数任务所获得的分数都明显高于简单处理情况,该算法提高了服务机器人自然语言规划效率。在自然语言指令规划中,自然语言准确地转换为指令语言,对下一步的任务规划有很大的帮助作用[12-13],在大量数据的测试过程,关键字搜索算法能够将绝大部分的自然语言准确地翻译成指令语言,为回答集编程(ASP)技术进行任务规划做好了良好的预处理工作,同时也间接地改善了ASP任务规划的性能,最终提高了自然语言处理整体效率。

5 结论

综上所述,关键字搜索算法在绝大数情况下可以准确地将的自然语言翻译成指令语言描述格式,通过词性之间的联系以及句子中的关键字,能够将人类表达的自然语言处理信息识别为指令语言格式,提高了机器人对自然语言的理解能力,对家庭服务机器人仿真项目中自然语言处理有良好效果;通过改进回答集编程(ASP)技术进行指令语言任务规划,能够求解出更优的机器人动作序列,提高机器人自然语言规划效率,更好地方便利用回答集编程技术进行任务规划和自动规划,提高机器人求解自然语言问题的性能。

猜你喜欢
组块关键字实例
履职尽责求实效 真抓实干勇作为——十个关键字,盘点江苏统战的2021
组块理论的解读及启示
成功避开“关键字”
大型半潜式起重船坞内建造整体合拢方案论证
为什么听得懂却不会做
完形填空Ⅱ
完形填空Ⅰ
让你的记忆力更棒
智能垃圾箱