2. 广东工业大学 计算机学院, 广东 广州 510006
2. School of Computers, Guangdong University of Technology, Guangzhou 510006, China
计算机为了判断人们待求解的问题是否为矛盾问题(即判断在当前条件下能否实现人们所希望的目标),必须分离待求解问题的目标和条件,并且形式化,即建立问题的可拓模型[1],才能针对不同类型的问题采取不同的解决方法(非矛盾问题用常规方法求解,矛盾问题用可拓学方法解决)。然而,用户问题经常是用自然语言表述的,比如,“我如何提高自己的职业能力才能应聘项目经理”,或者“我如何找到一份工作,工资待遇较好,符合个人兴趣,而且工作条件不会太差”等。如果直接让计算机理解这些自然语言信息是很困难的,导致可拓模型难以建立。文献[2]曾介绍过如何借助Agent技术协助建立矛盾问题的可拓模型,该方案是让Agent处理半结构化的信息,而不涉及自然语言理解。但如何构造半结构化的信息也相当复杂,不容易实现。文献[3]利用分类思想对矛盾问题建模,并要求用户输入目标句,但没有提及条件,即默认用户的条件一定不满足目标(矛盾问题)。这就把那些非矛盾的问题排除在外,无法用计算机求解了。文献[4]建立可拓模型的方法是:当用户提供的需求语句可能只是目标或条件之中的一个,或者提供了不完整的目标和条件的情况时,利用数据库中数据对可拓模型进行补充和完善[4]。然而,如果数据库中没有相关数据时则无法成功建模,也就无法用计算机求解该问题了。物元有各种属性,文献[3]介绍的方法是相关属性由用户自己输入,此方法虽然灵活,但仍需要人的操作。文献[4]的方法是预先准备好若干个属性,再让计算机处理。此方法发挥了计算机的作用,但灵活性不足。另外,文献[3]和文献[4]都未对文献[5]中提出的对矛盾问题的界定与建模时出现的语义歧义问题进行处理。
针对这些不足,我们开展了深入的研究,探索更好的建立待求解问题可拓模型的方法。在研究过程中,我们分析了知网(HowNet)[6]的KDML(knowledge database mark-up language)——知网知识系统描述语言[7]。郝长伶等设计了这种知识描述规范体系,他们经过对中英文两种语言各8万多条概念的描述,证明这种体系便于对意义的计算,更直观,有较好的可读性[8]。文献[9]认为中文词语间的组合主要基于语义,并指出:与其他的中文语块抽取系统不同的是,经过用知网中文信息结构抽取器处理后的中文信息结构内部的语义关系是清晰明确的,其每一个部分的语义都被确定并保留了[9]。本文在上述工作的基础上,提出一种增强计算机建立待求解问题可拓模型能力的方法:结合人机界面Agent的智能引导能力,并充分利用KDML表达性,增强计算机的语义处理能力,使计算机能更有效地将自然语言描述的待求解问题的目标和条件进行分离和形式化,建立待求解问题的可拓模型,为进一步协助解决待求解问题奠定基础。
1 KDML的语义描述能力有关KDML的详细内容请阅读文献[7],这里只做简单介绍:
1) KDML总规定有7点,确定描述规范。
2) KDML中的特定标识符有7种,分别是左括号({)、右括号(})、冒号(:)、逗号(, )、等号(=)、分号(; )、引号(“)。
3)3种特殊的指示符号:义原~、义原?、义原$。
4) 事件类概念的描述方法包括简单概念和复杂概念。
5) 实体类概念的描述方法包括简单概念和复杂概念。
6) 属性类概念的描述方法。
7) 属性值类概念的描述方法。
8)89种动态角色的使用,复杂概念需要用这些动态角色。
知网利用KDML把概念表示成义原(也叫义元)的DEF表达式,可称为一个语义表达式。例如:“阿姨”这个词知网用两个不同的义项将它们的语义表达如下:
NO.=000808 W_C=阿姨 S_C= E_C= W_E=aunt G_E=N S_E= E_E= DEF={human人:belong={family家庭},modifier={collateral旁系}{female女}{ senior长辈}} |
NO.=000807 W_C=阿姨 G_C=N [a1 yi2] S_C= E_C= W_E=nurse G_E=N S_E= E_E= DEF={human人:HostOf={Occupation职位},{TakeCare照料:agent={~},patient={human人:modifier={ child少儿}}}} |
NO.=000807的DEF表达式的首义原是“人”,说明“阿姨”是人。冒号(:)后用HostOf={Occupation职位}和{ TakeCare照料:agent={~},patient={human人:modifier={child少儿}}}两个描述项来说明此复杂概念人,第1个描述项是动态角色HostOf(之宿主),说明此人是义原“职位”的宿主,第2个描述项“照料”也是复杂概念,用动态角色agent和patient来说明。agent={~}说明,照料的施事(agent)是此人, 照料的受事(patient)是另一个人,这另一个人的描述(modifier)值是义原“少儿”。
NO.=000808的DEF表达式的首义原是“人”,说明“阿姨”是人。冒号(:)后用belong={family家庭}和modifier={collateral旁系}{female女}{senior长辈}两个描述项来说明此复杂概念“人”,第1个描述项是动态角色belong(归属),说明此“人”属于义原“家庭”,第2个描述项是动态角色描述(modifier)的3个值:义原“旁系”、义原“女”、义原“长辈”。
通过这样的KDML语义表达,可以把两个有歧义的概念区分开,不至于产生语义二义性。
KDML除了对词语所代表的概念进行描述外,它还使得每一种信息结构也都成为可以计算的对象[9]。因此,有利于计算机理解用户输入问题的目标和条件,减少语义模糊。
2 增强的可拓模型建立方法可拓学原理指出:必须把待求解问题解析出目标和条件,才能建立问题的可拓模型。如果计算机直接接收用户用自然语言描述的问题,要解析出目标和条件无疑会陷入自然语言理解的困境中。因此,我们提出让Agent引导用户分别输入问题的目标和条件,而不要两者混杂在一起输入。
以求职问题为例:Agent可以问用户想应聘什么职位,用户必然输入希望应聘的职位,这相当于问题的目标部分;然后Agent再引导用户输入个人资质信息,这相当于问题的条件部分。这样,问题的目标和条件就基本分离了。
分离了问题的目标和条件后,还要形式化,以便计算机处理。我们可以用文献[3]的分词步骤或文献[4]的组块分析步骤对目标和条件句进行处理,也可以用国内外文献介绍的各种方法进行处理,但这些方法处理中文语义不如知网。本文提出用文献[9]的描述基于“知网”的中文信息结构抽取方法对问题目标和条件进行处理,再用KDML形式化。
假设用户目标是“应聘成本会计师”,该短语可以解析出两个知网词语,“应聘”和“成本会计师”,其KDML表达式如下:
NO.=100746 W_C=应聘 G_C=V E_C= W_E=accept an offer of employment G_E=V E_E= DEF=accept接受,content=employ雇用 |
NO.=017547 W_C=成本会计师 G_C=N [cheng2 ben3 kuai4 ji4 shi1] S_C= E_C= W_E=cost accountant G_E=N S_E= E_E= DEF={human人:HostOf={Occupation职位},domain={finance金融},{calculate计算:agent={~},content={wealth钱财}}} |
NO.=100746的DEF表达式的语义是接受,内容是雇用;NO.=017547的DEF表达式的语义清楚说明,“成本会计师”是人,是职位的宿主,该人属于“金融”领域,是“计算”的施事者,计算内容是“钱财”。对此表达式,用户和计算机都不难理解其语义。
从知网-中文信息结构库[10]知道,“应聘成本会计师”的信息结构是SYN_S=V --> N,SEM_S=(事件) --> [内容] (万物/部件),其中SYN_S表示相应的句法结构式,SEM_S表示信息结构模式,“应聘”是(事件),而“成本会计师”是[内容] (万物/部件)。
假设用户输入的资质条件是“大学本科毕业,英语过了四级”。“大学本科毕业”可以解析出两个知网词语,即“大学本科”和“毕业”,“大学本科毕业”的信息结构是SYN_S=N < --V,SEM_S=(万物/部件)[内容] < --(事件,行动),“大学本科”是(万物/部件)[内容],而“毕业”是(事件,行动)。“英语过了四级”可以解析出4个知网词语:“英语”“过”“四”“级”,“过四级”的信息结构类似SYN_S=V < --{NUM --> N},SEM_S=(事件,行动) < --[动量]{(数量值) --> (物质,用具/部件,%动物)}。
目标和条件用KDML形式化后,为了建立可拓模型,还需要把KDML表达的词语转变成基元。本课题组曾研究过相关的内容,主要是靠人来建立基元,存储后作为基础库[11]。本文提出用人机交互方式建立基元,发挥计算机的作用,减轻人的劳动。基元可以是物元M、事元A、关系元R,详细内容见文献[1]。比如,目标“应聘成本会计师”的KDML表达式句法是SYN_S=V→ N,动词“应聘”为首,名词“成本会计师”为后,计算机将前者转变为可拓学的事元A,后者转变为物元M。本文让计算机从KDML表达式中提取物元各属性值,再提交给用户确认属性名。经用户确认后,目标基元如下:
$ M=\begin{matrix} A=\left[应聘, 支配对象, M \right] \\ \left[\begin{matrix} \left\{ 成本会计师 \right\}, & 领域, & 金融 \\ {} & 职位内容, & {{A}_{1}} \\ \end{matrix} \right] \\ {{A}_{1}}=\left[计算, 支配对象, 钱财 \right] \\ \end{matrix} $ |
条件“大学本科毕业,英语过了四级”是求职者的属性,计算机把KDML表达式填入求职者物元属性值中,再经过用户确认属性名后建立起条件物元M1:
$ {{M}_{1}}=\left[\begin{matrix} 求职者\text{B}, & 学历, & 大学本科 \\ {} & 英语水平, & 四级 \\ \end{matrix} \right] $ |
因此,用户问题P:“我大学本科毕业,英语过了四级,如何应聘成本会计师?”就成功地被建立为以下可拓模型:
$ \begin{matrix} P=\left[应聘, 支配对象, M \right]\cdot \\ \left[\begin{matrix} 求职者\text{B}, & 学历, & 大学本科 \\ {} & 英语水平, & 四级 \\ \end{matrix} \right] \\ \end{matrix} $ |
综上所述,增强计算机可拓建模能力的方法归纳如下:
1) 引导用户输入待求解问题的目标部分;
2) 引导用户输入待求解问题的条件部分;
3) 用基于“知网”的中文信息结构抽取方法分别解析目标和条件,用KDML形式化;
4) 将KDML表示的目标和条件通过人机交互转变成目标基元G和条件基元L;
5) 形成待求解问题P的可拓模型P=G·L。
3 方法实践我们将职业学院毕业生求职问题作为应用实践来说明本文所提方法的有效性。
为了实现智能引导,我们采用本课题组曾研究过的MVC架构的人机界面Agent[12],不同之处是领域知识不一样。文献[12]的知识库存放的是旅游领域知识,本文则要存放职业信息。我们搜集了国家职业大典,部分信息如图 1所示。
这些信息是Agent处理用户目标的背景知识,用Excel表存放在计算机中备用。Agent用Java技术[13]开发,运行在Web[14]环境下,系统采用开源的Tomcat服务器[15]和MySQL数据库[16]。
3.1 引导目标和条件为了使Agent引导用户输入目标,我们采用与文献[17]相似的交互策略。在输入界面给予示范,引导用户输入问题信息,并灵活对待不同的问题。
假设Agent问:“您想应聘什么职位?”用户输入某职位名称后,Agent先检查国家职业大典Excel表有无此职位,有则Agent可以转向引导用户输入,无则要求用户进一步指明。我们在实践中发现大致有3种情形:1) 用户有时输入错误;2) 用户输入的职位名称不是职业大典使用的名称,但实际上语义是一致的,比如用户输入“软件开发人员”,而职业大典中的“计算机与应用工程技术人员”的确解释为“从事计算机硬件、软件、网络研究、设计、开发、调试、集成、维护和管理以及系统分析的工程技术人员”;3) 职业大典未明确列出的新职位。对于这些情形,Agent巧妙地回答“我尚未发现此类职位,它属于哪个大类?”同时列出职业大典的八大类职业名称来请用户选择,并逐步引导至中类甚至小类,最后选项是“不便分类的其他从业人员”,至此解决目标问题。
目标明确后,Agent下一步又问“您目前有什么工作经验或知识水平”,请用户输入个人资质条件,比如“爱好编程”“会Java语言”等。
3.2 KDML形式化对于五花八门的目标和条件,如“应聘软件开发人员”“爱好编程”等,本文提出用基于“知网”的中文信息结构抽取方法进行处理,知网-中文信息结构库是Word文档,如图 2所示。
我们采用文献[18]介绍的切分、组词、消歧和中文语块抽取步骤,可以做到最后从文本中抽取到的不只是句法结构,更是语义结构[18]。如“爱好编程”的切分是“爱-好-编-程”,在知网知识库的支持下组词(本文采用知网中英双语知识词典.txt文件,存放在计算机中)得到“爱好-编程”,因为组词时可能会产生歧义[18],“爱好”可以是名词,也可以是动词(“编程”也是如此)。所以分别写出“爱好”的两个KDML语义表达式让用户确定:
NO.=001198
W_C=爱好
G_C=V [ai4 hao4]
S_C=PlusFeeling正面情感
E_C=~唱京戏,~跳舞,~书法,~滑冰,音乐~者
W_E=be fond of
G_E=V
S_E=PlusFeeling正面情感
E_E=
DEF={FondOf喜欢}
NO.=001202
W_C=爱好
G_C=N [ai4 hao4]
S_C=
E_C=~广泛,不要因为你的~影响学习,仅凭~学习会偏科
W_E=interest
G_E=N
S_E=
E_E=
DEF={emotion情感:CoEvent={FondOf喜欢}}
Agent此时需要在人机交互下消歧,在屏幕显示“爱好”的两个KDML语义表达式后问用户哪一个“爱好”是符合语义的词,用户选出这里的“爱好”应该是动词(NO.=001198),因此Agent将“爱好-编程”中“爱好”名词消去,保留动词(同理将“编程”动词消去,保留名词),再抽取信息结构:SYN_S=V--> N,SEM_S=(事件,精神状态/变精神)-->[对象] (万物/属性)(例子:爱好-音乐),并将结果显示给用户,通过人机交互更有效地确认形式化。
“会Java语言”的切分是“会-Java-语-言”(英语不用切分),组词得到“会-Java-语言”,“会”在知网中有多个义项数,如:
DEF=BeAble能够
DEF=ComeTogether集聚
DEF=aValue属性值,ability能力,able能,desired良
DEF=community团体
DEF=fact事情
DEF=fact事情,@communicate交流
DEF=meet会面
DEF=pay付
DEF=time时间
DEF=time时间,important主
DEF=understand领会
DEF={modality语气}
Agent根据自主性[19]排除了与求职者属性无关的义项,保留了以下义项:
NO.=039130
W_C=会
G_C=V
E_C=
W_E=grasp
G_E=V
E_E=
DEF=understand领会
据此抽取信息结构:SYN_S=V-->N,SEM_S=(事件)-->[受事] (万物/部件/属性/时间)。
3.3 转变为基元Agent引导了目标和条件,并对目标和条件用KDML规范形式化后,还需转变为基元。
目标“应聘软件开发人员”根据句法表达式SYN_S=V→N可以转变为事元A和物元M,物元M的属性值是计算机从“软件开发人员”的KDML表达式中抽取并填入的,属性名通过人机交互由用户确定:
$ M=\begin{matrix} A=\left[应聘, 支配对象, M \right] \\ \left[\begin{matrix} 软件开发人员, & 领域, & \text{IT} \\ {} & 工作内容, & {{A}_{1}} \\ \end{matrix} \right] \\ {{A}_{1}}=\left[编写, 支配对象, 程序 \right] \\ \end{matrix} $ |
条件“爱好编程”和“会Java语言”是求职者的属性,用类似的方法转变为条件物元M1:
$ {{M}_{1}}=\begin{matrix} \left[\begin{matrix} 求职者\text{C}, & 爱好, & 编程 \\ {} & 资质, & {{A}_{2}} \\ \end{matrix} \right] \\ {{A}_{2}}=\left[了解, 支配对象, \text{Java}语言 \right] \\ \end{matrix} $ |
经过上述步骤,用户问题P“我爱好编程,会Java语言,想应聘软件开发人员”被引导出,目标G=“应聘软件开发人员”,条件L=“爱好编程,会Java语言”,最后成功地建立为以下可拓模型P=G·L:
$ P=\left[应聘, 支配对象, M \right]\cdot \left[\begin{matrix} 求职者\text{C}, & 爱好, & 编程 \\ {} & 资质, & {{\text{A}}_{2}} \\ \end{matrix} \right] $ |
从我们的实践来看,Agent对特定问题的智能引导还是有效的,因为我们对特定问题输入的目标或条件的可能性基本都估计到了。但是,对于过于广泛的问题,由于人本身无法预料全部输入,因此也无法为Agent准备有效的应对措施,目前只能输出“抱歉”等字样来表明Agent无法引导某些问题。另外,在人机交互时如果用户对某词语的多个(比较接近的)义项理解有偏差,会导致计算机建立的可拓模型不符合现实逻辑的情况,这点只能由集体智慧[20]来发现和纠正。
4 结束语本文提出了利用KDML并结合人机界面Agent的智能引导的方法增强计算机建立可拓模型能力,本方法一方面减轻了计算机自然语言理解的困难,另一方面减少了语义歧义,计算机可以更快速有效地建模,从而为用计算机求解问题奠定了基础。
如何评价所提方法的有效性?我们认为通过集体智慧发表意见比较可行。每当建立了一个可拓模型后,让其他人对结果进行评议,如果多数人认为建模成功,该次建模就有效。如果多数人认为建模不正确,该次建模就失败,这时就要分析原因,进行改进,不断完善。
建立了待求解问题的可拓模型,只是计算机协助人们解决问题的第一步,后面的工作还很艰巨。因为“自然语言理解”这样对人来说不太困难的任务,计算机都完成得相当困难,那么后面的“求解问题”这样对人来说很不轻松的任务,计算机就更难解决了。然而我们认为,充分发挥人的智慧和机器智能进行人机交互,扬长避短,是利用计算机求解问题的有效方法,是未来的研究方向。
[1] | 杨春燕, 蔡文. 可拓学[M]. 北京: 科学出版社, 2014: 1-381. (0) |
[2] |
李卫华. Agent协助建立矛盾问题的可拓模型研究[J]. 数学的实践与认识, 2009, 39(4): 173-177. LI Weihua. The research of extension model for contradiction problems with Agent[J]. Mathematics in practice and theory, 2009, 39(4): 173-177. (0) |
[3] |
汪中飞, 李卫华, 陶星. 基于分类的ESGS矛盾问题建模的研究[J]. 广东工业大学学报, 2014, 31(4): 14-19. WANG Zhongfei, LI Weihua, TAO Xing. Research on ESGS contradiction problem modeling based on classification[J]. Journal of Guangdong university of technology, 2014, 31(4): 14-19. (0) |
[4] |
王定桥, 李卫华, 杨春燕. 从用户需求语句建立问题可拓模型的研究[J]. 智能系统学报, 2015, 10(6): 865-871. WANG Dingqiao, LI Weihua, YANG Chunyan. Research on building an extension model from user requirements[J]. CAAI transactions on intelligent systems, 2015, 10(6): 865-871. (0) |
[5] |
赵杰, 李卫华. 基于知网的矛盾问题语义二义性研究[J]. 广东工业大学学报, 2014, 31(2): 21-26. ZHAO Jie, LI Weihua. Research on the ambiguity of contradiction based on hownet[J]. Journal of Guangdong university of technology, 2014, 31(2): 21-26. (0) |
[6] | 董振东, 董强. 知网[EB/OL]. http://www.keenage.com/zhiwang/c_zhiwang.Html. (0) |
[7] | KDML. 知网知识系统描述语言[EB/OL]. http://www.keenage.com/html/c_index.Html. (0) |
[8] |
郝长伶, 董强. 知网知识库描述语言[C]//语言计算与基于内容的文本处理——全国第七届计算语言学联合学术会议论文集. 哈尔滨: 中国中文信息学会, 2003: 371-377. HAO Changling, DONG Qiang. Knowledge database mark-up language of HowNet[C]//Language Computing and Content Based Text Processing, Proceedings of the 7th National Joint Academic Conference on Computational Linguistics. Harbin, 2003: 371-377. (0) |
[9] | 董强, 郝长伶, 董振东. 基于知网的中文信息结构抽取[EB/OL]. http://www.keenage.com/html/c_index.html. (0) |
[10] | 董振东, 董强. 关于知网-中文信息结构库[EB/OL]. http://www.keenage.com/html/c_index.html. (0) |
[11] |
陶星. 基于知网的领域可拓基础库的研究与实现[D]. 广州: 广东工业大学, 2015: 1-61. TAO Xing. Research and implementation of extension domain base on HowNet[D]. Guangzhou: Guangdong University of Technology, 2015: 1-61. http://cdmd.cnki.com.cn/Article/CDMD-11845-1015311759.htm (0) |
[12] |
方卓君. 基于Agent的用户信息智能引导的研究[D]. 广州: 广东工业大学, 2010: 1-54. FANG Zhuojun. Research on Agent-based intelligent guide for user information[D].Guangzhou: Guangdong University of Technology, 2010: 1-54. http://d.wanfangdata.com.cn/Thesis/Y1745729 (0) |
[13] | 李卫华. Java技术及其应用[M]. 北京: 清华大学出版社, 2009: 1-281. (0) |
[14] | 刘甫迎, 饶斌, 郑显举, 等. Java EE Web编程技术教程[M]. 北京: 电子工业出版社, 2010: 1-374. (0) |
[15] | 孙卫琴. Tomcat与Java Web开发技术详解[M]. 2版. 北京: 电子工业出版社, 2009: 1-734. (0) |
[16] | KOFLER M. MySQL 5权威指南[M]. 杨晓云, 王建桥, 杨涛, 等, 译. 北京: 人民邮电出版社, 2006: 1-662. (0) |
[17] |
李卫华, 杨春燕, 方卓君. 提高软件Agent策略生成的语义互操作能力[J]. 数学的实践与认识, 2012, 42(11): 131-138. LI Weihua, YANG Chunyan, FANG Zhuojun. Improve the semantic interoperability for software Agents strategy generation[J]. Mathematics in practice and theory, 2012, 42(11): 131-138. DOI:10.3969/j.issn.1000-0984.2012.11.017 (0) |
[18] |
董强, 郝长伶, 董振东. 基于《知网》的中文语块抽取器[C]//语言计算与基于内容的文本处理——全国第七届计算语言学联合学术会议论文集. 哈尔滨: 中国中文信息学会, 2003: 234-239. DONG Qiang, HAO Changling, DONG Zhendong. HowNet-based Chinese chunk extractor[C]//Language Computing and Content Based Text Processing, Proceedings of the 7th National Joint Academic Conference on Computational Linguistics. Harbin, China, 2003: 234-239. (0) |
[19] | WOOLDRIDGE M. 多Agent系统引论[M]. 石纯一, 译. 北京: 电子工业出版社, 2003: 1-258. (0) |
[20] |
庄子匀, 陈敬良, 罗尧成. 网络集体智慧研究述评[J]. 情报杂志, 2014, 33(5): 31-37. ZHUANG Ziyun, CHEN Jingliang, LUO Yaocheng. A review on web-enabled collective intelligence[J]. Journal of intelligence, 2014, 33(5): 31-37. (0) |