1.本发明涉及人工智能领域,具体提供了一种用于人工智能的概念网络及其生成方法。
背景技术:
::2.第三次人工智能ai热潮来袭,ai在语音识别、机器视觉、数据挖掘等多个领域走进了业界的真实应用场景。作为其中重要的发展方向之一,自然语言处理技术也得到迅猛发展和应用。如何让机器理解自然语言是人工智能中最为困难的问题之一。3.概念网络的理论基础最早要追溯到1973年美国人工智能专家r.c.尚克提出的概念从属论。概念从属论(简称cd理论)是自然语言自动处理中的一种理论。尚克认为,人脑中存在着某种概念基础,语言理解的过程就是把语句映射到概念基础之中去的过程。技术实现要素:4.为了解决以上问题,本发明提供了一种用于人工智能的概念网络。5.一种用于人工智能的概念网络,定义事物概念及概念间语义关系的系统,包括概念和概念连接,一个概念可以跟多个概念形成一种或多种的语义关系,同时概念间的语义关系可以是多层的。6.(1)概念网络的定义:概念及概念连接。7.概念都有一个唯一的编号id。概念id可以是任何一种形式,例如字符串、数字、词向量等。概念分为三类:词概念(word),无词概念(non_word),未知概念(unknown)。8.词概念包含一般词概念、带有关系成分的词概念、组合词概念、词集合概念。词概念的特点是存在自然语言词与此概念直接相对应,同时也存在实现该概念定义def的转换器。9.无词概念包含不带本体概念的无词概念、带有本体概念的无词概念。无词概念的特点是不存在自然语言词与此概念直接相对应,但通常存在概念识别器,使得自然语言词能与概念之间间接相对应。10.未知概念包含未知词概念、未知词集合概念。未知概念的特点是无法为该概念生成概念定义def,在自然语言处理过程中将被忽略。11.概念连接即概念间的语义关系链,用来描述概念间的多层语义关系。其特点是:12.a/一个概念可以跟多个概念形成一种或多种的语义关系,同时概念间的语义关系可以是多层的。当然并不是所有的概念相互之间都能形成语义关系。13.b/有些概念连接并非固有的、或者在概念网络建设时并没有生成,而是在自然语言的理解过程中逐步形成这些连接。14.c/存在特征。这些特征表示概念连接中反映关系的肯定、否定、可能、范围、概率、程度、频率、时间、语气等。15.另外,本发明还提供了概念网络的生成方法。16.概念网络的生成方法:可通过基础定义、生成、扩展定义以及动态形成等几个方面来实现。17.基础定义定义基础的概念及概念连接。在实现的技术手段上主要选用xml、jso格式的配置文件来定义这些概念及概念连接,然后再通过对这些配置文件解析生成概念及概念连接。18.生成方法将数据结构、程序设计语言、语义网络/词典/知识库等转换生成为概念及概念连接。实现该转换生成的主程序,即为概念生成引擎。19.数据结构20.a.包含行列形式、键值对形式两种。行列形式常使用excel、关系型数据库等来表示和存储,表现为二维形式的数据,有行有列,有预定义的数据模型。键值对形式常使用非关系型数据库存储数据,它不需要预定义结构。21.b.生成方法过程:22.①概念生成引擎将每个表分别作为一个概念,该表的表名、或指代该表的词作为该概念的词。同时,基础定义的概念id=object与由这些表生成的概念构成species种属关系。23.②引擎将表每个字段分别作为一个概念,该字段的字段名、或指代该字段的词作为该概念的词。同时,所属表生成的概念与由这些字段生成的概念构成attribute属性关系。24.③引擎可将每个字段类型分别作为一个概念。这些概念通常都是无词概念,通过各自的概念识别器来识别词是否为与之匹配的概念。同时,具有对应字段类型的字段所生成的概念与由这些字段类型生成的概念构成value值关系。25.④当然,对于一些字段它们的值带有一定的约束性或特殊性,例如字典数据,可以自定义无词概念。26.⑤另外,有些字段与其它表构成的外键关系,那么由这些字段类型生成的概念与其关联的主表所生成的概念构成value值关系。27.c.通过对象数据管理技术实现。对象数据管理技术使用xml格式的对象模板文件来定义对象结构,并与数据库表建立映射关系。概念生成引擎可根据对象模板xml生成概念及概念连接。生成方法过程:28.①概念生成引擎可将每个对象模板(或称对象)分别作为一个概念,该对象的名称、或指代该对象的词作为该概念的词。同时,基础定义的概念id=object与由这些对象生成的概念构成species种属关系。29.②引擎可将模板定义的每个属性分别作为一个概念,该属性的字段名、或指代该属性的词作为该概念的词。同时,所属对象生成的概念与由这些属性生成的概念构成attribute属性关系。30.③引擎可将每个属性数据类型分别作为一个概念。这些概念通常都是无词概念,通过各自的概念识别器来识别词是否为与之匹配的概念。同时,具有对应数据类型的属性所生成的概念与由这些属性类型生成的概念构成value值关系。当然也可以通过配置对属性值自定义概念。针对对象类型的属性,该属性与类型中指定的对象关联,构成value值关系。针对复合类型的属性,该属性与类型中指定的成员(子属性)构成part部件关系。针对结构类型的属性,该属性与类型中指定的成员(子属性)构成attribute属性关系。31.程序设计语言32.a.程序设计语言的实质是语法规则,概念生成引擎的生成方法就在于对语法规则进行分析并转换生成概念及概念连接。33.b.格式化脚本语言gscript也是一种程序设计语言。gscript语言也有语法分析器,可以将代码转换成语法树,同时也可以将语法树转成代码。gscript语言还有一个很重要的特点,就是它可以调用不同的指令函数库解析或编译执行代码生成其它程序设计语言。gscript语言现版本已支持生成以下这些程序设计语言:java、javascript、html、css、xml、json、text。概念生成引擎根据gscript语法规则、java语法规则以及目标程序语言的语法规则来生成概念及概念连接。生成方法过程:34.①gscript语言语法由指令函数、操作符与运算函数三部分组成。概念生成引擎优选配置方式为gscript语言语法的指令函数、操作符与运算函数定义一系列概念以及概念连接。配置方法可以使用与基础定义相一致的技术手段。35.②java语言语法包含类、属性、方法、数据类型、枚举、注解等。概念生成引擎优选配置与java注解来配置与定义概念及概念连接。配置方法可以使用与基础定义相一致的技术手段。而java注解则是使用了java的语言特性,使得概念及概念连接的定义在代码开发过程中即可进行。36.i概念生成引擎可将每个类分别作为一个概念,该类的类名、或指代该类的词作为该概念的词。允许多个类指向同一个概念,例如接口与它的实现类通常会表示同一个概念。同时,基础定义的概念id=object与由这些类生成的概念构成species种属关系。37.iijava枚举虽然本身也是类但须不同处理,其须定义两个概念。其中一个概念是带有本体概念的无词概念且是另一个概念的值,而另一个概念却是那个无词概念的本体概念。38.iii引擎针对类的每个字段(field)的引用情况不同进行分别处理:39.i如果字段field被配置或注解定义了概念,则此类的概念与该字段的概念构成attribute属性关系;40.ii如果字段field的数据类型指向某个类(或java枚举),而且该类的组件类型(componenttype)是已经被定义概念的类,则此类的概念与该字段数据类型的概念构成attribute属性关系;41.iii否则,引擎则为该字段定义一个概念,该字段的字段名、或指代该字段的词作为该概念的词,然后此类的概念与字段所生成的概念构成attribute属性关系。42.iv引擎针对不同数据类型也需要进行分别处理:43.①类:基本的数据类型及所对应的一些对象类型。例如图35。44.②类:集合类型,主要包括数组、实现java.lang.collection的类。例如图36。45.③类:其它类型,含java.lang.object、java.lang.class、枚举等。例如图37。46.v引擎定义类字段(field):如果字段没有被配置或注解定义了概念连接,那么:47.i如果字段为固定常量时定义一个概念,常量值、或指代该常量值的词作为该概念的词,然后字段的概念与该生成的概念构成value值关系。48.ii如果字段的概念id与它数据类型的概念id不一致时两者之间构成value值关系。49.vi引擎定义类的方法(method):如果方法没有被配置或注解定义了概念及概念连接,那么:50.i如果方法名符合javabean的规范(即getter和setter方法),那无需定义。因为基础定义中常定义概念id=get、id=set与概念id=object构成sv主谓关系。51.ii否则,定义一个概念,该方法名、或指代该方法的词作为该概念的词,然后此类的概念与该生成的概念构成sv主谓关系。52.vii引擎定义类的继承(extends):如果父类与子类概念id不一致时,父类的概念与子类的概念之间构成species种属关系。53.③目标程序语言的概念及概念连接的生成与gscript“指令函数-扩展指令”相对应章节一致。54.语义网络/词典/知识库55.概念网络也是一种语义网络,因此在技术上是可以实现与现有主流的语义网络/词典/知识库相互转换。56.扩展定义进一步扩展定义概念及概念连接。在实现的技术手段上可以选用与基础定义一样的技术手段。57.动态形成概念及概念连接。例如在自然语言理解过程中动态为概念之间形成连接,或者人为操作为概念添加词、增加概念连接等。58.词向量的使用。与概念直接或间接对应的词可以使用词向量替代。概念id可以直接使用词向量。59.最后,本发明提供了概念网络在人工智能语言理解与生成中的应用。60.本文的概念网络在实现原则与范畴定义上与cd理论有着根本不同。本文讲述了概念网络的定义:概念及概念连接,并且从五个方面提出了建设方法。与此同时,为人机自然语言交互、机器协同编程等应用提供了技术基础。附图说明61.图1概念组成部分62.图2概念间的语义关系示意图63.图3概念网络建设方法64.图4概念配置文件concepts/base1.json65.图5概念配置文件concepts/action1.json66.图6概念连接配置文件connectivities/base1.json67.图7概念连接配置文件connectivities/action1.json68.图8数据结构转换生成概念及概念连接方法69.图9对象模板文件department.xml70.图10复合类型complex示例:属性(字段)价格price定义71.图11结构类型structure示例:属性(字段)授权功能functions定义72.图12概念生成引擎根据对象模板xml生成概念及概念连接73.图13复合类型74.complex/结构类型structure示例:与类型中指定的成员(子属性)构成part或attribute属性关系75.图14根据对象模板文件department.xml生成的概念及概念连接76.图15概念生成引擎对程序设计语言的语法规则分析并转换生成概念及概念连接77.图16java、javascript、html、css、xml、json、text程序设计语言配合相应的语法分析器经过gscript语法分析器可以直接转换为gscript语言,同时gscript语言有语法分析器,可以将代码转换成语法树,也可以将语法树转成代码78.图17概念生成引擎根据gscript语法规则、java语法规则以及目标程序语言的语法规则来生成概念及概念连接79.图18将gscript指令函数基本指令转换生成的概念及概念连接80.图19将gscript指令函数扩展指令text转换生成的概念及概念连接81.图20将gscript指令函数扩展指令json转换生成的概念及概念连接82.图21将gscript指令函数扩展指令xml转换生成的概念及概念连接83.图22将gscript指令函数扩展指令html转换生成的概念及概念连接84.图23将gscript指令函数扩展指令css转换生成的概念及概念连接85.图24将gscript指令函数扩展指令js转换生成的概念及概念连接86.图25将gscript操作符转换生成的概念及概念连接87.图26将gscript运算函数转换生成的概念及概念连接88.图27使用包名索引表的概念配置concepts/c.o.g.p.c.i.actioncontext.json89.图28使用包名索引表的概念连接配置connectivities/c.o.g.p.c.i.actioncontext.json90.图29使用java注解概念配置com.onegrid.grid.platform.nlp4.impl.conceptnetwork.annotation.classconcept91.图30使用java注解概念连接配置92.com.onegrid.grid.platform.nlp4.impl.conceptnetwork.annotation.classconceptconnectivity93.图31java类的概念id小技巧:使用包名索引表来缩减概念id的长度94.图32将java枚举转换生成的概念及概念连接示例95.图33将java类成员对象类型的字段field转换生成的概念连接示例96.图34将java类成员字段转换生成的概念连接示例97.图35将java基本数据类型及所对应的一些对象类型转换生成的概念示例98.图36将java常用集合类型转换生成的概念示例99.图37将java其它类转换生成的概念示例100.图38执行gscriptjs(javascript)代码生成javascript代码示例101.图39默认的gscript配置102.图40将javascript程序设计语言转换生成的概念及概念连接示例具体实施方式103.下面结合附图对本发明的实施例进行进一步详细说明:104.概念网络(conceptnetwork)是定义事物概念及概念间语义关系的系统,其本质上是一种语义网络,它为本文所述的自然语言理解与生成提供语义基础。下述文中的“自然语言词”(或“词”)泛指自然语言的字(符)、词、短语(词组)。105.1.1.定义106.概念网络包含两个部分,一是概念,二是概念连接。107.1.1.1.概念108.概念都有一个唯一的编号id,以标识概念网络中概念的唯一性。概念id可以是任何一种形式,例如字符串、数字、词向量等。概念分为三类:词概念(word),无词概念(non_word),未知概念(unknown)。概念分类如图1。109.1.1.1.1.词概念110.表示存在自然语言词与此概念直接相对应,同时也存在实现该概念定义def的转换器。此概念也称为直接概念。111.概念定义def是指概念的具体定义或实现,也可称为概念实例。它不同于知网hownet所述知识词典中的def,两者不应混淆。112.一个自然语言词可以与一个或多个概念相对应。有些词存在多个词性,因此也可以设定特定词性的词与一个或多个概念相对应。113.√例如概念id=unit,其可有词“单位”与之对应。语句“数量的单位是?”,“单位”即为该概念。114.上述示例中的词概念不带有任何关系成分,称为一般词概念。115.词概念还包括:116.◆带有关系成分的词概念117.这类概念带有关系成分,即词的两侧或一侧作为该概念的关系成分。118.√例如概念id=selt,可有带有成分的词“{0}或者{1}”,语句“苹果或者西瓜”,“或者”的两侧“苹果”、“西瓜”为该概念的关系成分,表示选择;119.同时通过关系成分可以间接实现自然语言中所要表达的语义关系。示例如下:120.[0121][0122]◆组合词概念[0123]这类概念是由多个词联合组成的,至少这些词之间的是该概念的关系成分。[0124]√例如概念id=eban,可有组合词“宁可{1}也不{2}”,语句“我宁可累死也不劳烦你”,“宁可”的右侧与“也不”的右侧都为该概念的关系成分,表示取舍或选取,先取后舍、先舍后取。[0125]◆词集合概念[0126]这类概念,表示有多个词、或者带有成分的词、或者组合词与该概念相对应。[0127]√例如概念id=caru,其可有"因为{1}所以{2}"、"之所以{2}是因为{1}"、"既然{1}就{2}"、"因{1}"、"因为{1}"、"由于{1}"、"为{1}"、"为了{1}"、"为着{1}"、"因此{2}"、"以致{2}"、"所以{2}"、"之所以{2}"、"为了{1}起见"、"以便{1}"等词相对应,表示因果,前提出原因、目的,后说明结果;例如概念id=create,其可有"定义"、"创建"、"新建"、"建立"、"构建"、"搭建"、"构造"、"初始"、"建造"、"建"、"造"等词相对应,表示创建动作。[0128]1.1.1.2.无词概念[0129]表示不存在自然语言词与此概念直接相对应,但通常存在概念识别器,使得自然语言词能与概念之间间接相对应。此概念也称为间接概念。[0130]√例如概念id=@time,用于指时间、日期,例如词“20150712”、“明天”、“前些天”、“某一天”。需要借助概念识别器来识别词是否为时间概念。[0131]有些无词概念表达了某一类概念,这一类概念就称为本体概念。因此无词概念分为不带本体概念的无词概念与带有本体概念的无词概念。例如:[0132]◆带有本体概念的无词概念[0133]这类概念,通常用于描述一类概念的词,它有具体词概念与之相对应。[0134]√例如概念id=*action,用于描述概念关系角色——动作,该概念本体概念是词概念id=&action,词概念id=&action对应词则可以是“动作”、“行为”、“操作”;例如概念id=*attribute,用于描述概念关系角色——属性,该概念本体概念是词概念id=&attribute,词概念id=&attribute对应词则可以是“属性”;例如概念id=*part,用于描述概念关系角色——部件,该概念本体概念是词概念id=&part,词概念id=&part对应词则可以是“部件”;例如概念id=*value,用于描述概念关系角色——值,该概念本体概念是词概念id=&value,词概念id=&value对应词则可以是“值”;例如概念id=@string,用于描述字符串一类的词,该概念本体概念是词概念id=string,词概念id=string对应词则可以是“字符串”;例如概念id=@number,用于描述数字一类的词,该概念本体概念是词概念id=number,词概念id=number对应词则可以是“数字”;例如概念id=@time,用于描述时间一类的词,该概念本体概念是词概念id=time,词概念id=time对应词则可以是“时间”、“日期”。[0135]1.1.1.3.未知概念unknown[0136]表示无法为该概念生成概念定义def,在自然语言处理过程中将被忽略。[0137]这类未知概念还包括:[0138]◆未知词概念[0139]这类概念有单个自然语言词与之相对应。[0140]◆未知词集合概念[0141]这类概念存在多个自然语言词与之相对应。[0142]1.1.2.概念连接[0143]1.1.2.1.基本[0144]即概念间的语义关系链,用来描述概念间的多层语义关系。例如以下几种语义关系:[0145]■种属(species)[0146]类属-属种的关系,也包含上下位关系。特定性较强的词叫做概括性较强的词的下位词,概括性较强的词叫做特定性较强的词的上位词。动作之间也存在此关系。[0147]√例如事物thing——事件event|物体object;例如对象object——新闻news|用户user|部门department;例如红色red——猩红色vermilion|胭脂红carmine|绯红色crimson。[0148]■部件(part)[0149]整体-部件的关系。[0150]√例如数量quantity——数字number|单位unit;例如时间time——年year|月month|日day|时hour|分minute|秒second|毫秒millisecond;例如人human——头head|身体body。[0151]■属性(attribute)[0152]宿主-属性、宿主-领属、宿主-特征、材料-成品等的关系。宿主也包含动作。[0153]√例如变量var——名称name|值value;例如新闻news——标题title|正文content|附件attachments|作者author;例如人品personality——好坏goodbad;例如格式化format——模式pattern。[0154]■值(value)[0155]属性-值、实体-值的关系。[0156]√例如数量quantity——@quantity;例如标题title——@string;例如颜色color——@color。[0157]■主谓(sv)[0158]动作来源-动作的关系。[0159]√例如我me——创建create|修改modify|删除delete|查询query|发布publish;例如@number——加add|减sub。[0160]■谓宾(vo)[0161]动作-动作目标的关系。[0162]√例如创建create——变量var;例如发布publish——新闻news。[0163]■相关(r)[0164]相关关系,其有同义、反义、下义、不相容、有关五类子关系。其中,下义指一个概念的语义在另一个概念的语义之中,不相容为从一个概念的语义中排除另一个概念的语义,有关指两个概念有关联但不清楚两者之间具体的关系。[0165]√例如冷cold——热hot;例如好good——坏bad。[0166]一个概念可以跟多个概念形成固有的一种或多种的语义关系,同时概念间的语义关系可以是多层的,示例如图2。[0167]1.1.2.2.动态形成[0168]一个概念可以跟多个概念在自然语言的理解过程中可以逐步形成新的概念连接。[0169]√例如语句“我有个一个包”表达了我me跟包bag之间形成了attribute(属性宿主与领属)的连接,然而在表述该语句之前我me跟包bag之间可能还没有形成这种连接[0170]1.1.2.3.特征[0171]表示概念连接中反映关系的肯定、否定、可能、范围、概率、程度、频率、时间、语气等。[0172]√例如语句“我没有包”表达了我me跟包bag之间形成了attribute(属性宿主与领属)的连接,但此连接的特征是否定;例如语句“我可能没有包”其表达的连接特征除了否定外还有可能;例如语句“我百分之80可能没有包”其表达的连接特征除了否定、可能外还有概率。[0173]1.2.建设方法[0174]概念网络的建设可通过基础定义、生成、扩展定义以及动态形成等几个方面来实现,如图3。[0175]1.2.1.基础定义[0176]定义基础的概念及概念连接。在实现的技术手段上主要选用xml、json格式的配置文件来定义这些概念及概念连接,然后再通过对这些配置文件解析生成概念及概念连接。但也不排除使用其它格式的配置文件来实现。[0177]√例如概念配置文件concepts/base1.json见图4、concepts/action1.json见图5,概念连接配置文件connectivities/base1.json见图6、connectivities/action1.json见图7。[0178]1.2.2.生成[0179]将数据结构、程序设计语言、语义网络/词典/知识库等转换生成为概念及概念连接。实现该转换生成的主程序,即为概念生成引擎。[0180]1.2.2.1.数据结构[0181]■结构化数据[0182]结构化数据,行列形式,是指可以使用excel、关系型数据库等来表示和存储,表现为二维形式的数据,有行有列,有预定义的数据模型。在结构化数据存储定义过程中,使用表来表示处理数据和建立excel、关系型数据库及应用程序等的基本单元。表的“列”常称为“字段”。每个字段由若干按照某种界限划分的相同数据类型的数据项组成。就像“通讯录”数据库中,“姓名”、“联系电话”等这些都是表中所有行共有的属性,所以把这些列称为“姓名”字段和“联系电话”字段。而存放在表行列交叉处的数据叫做“值”,它是最基本的存储单元。字段类型定义了可存储值的数据类型。[0183]√例如excel字段类型(在单元格格式中定义)有:数值、货币、日期、时间、文本等;例如microsoftaccess字段类型有:text、byte、integer、long、single、double、date/time等;例如mysql字段类型有:char、varchar、tinytext、text、mediumtext、int、bigint、float、double、date、datetime等;[0184]在关系型数据库,对于一个表定义了一个主键,则表示可以为通过该键唯一地表示表中每一记录。外键则表示了两个关系之间的联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。[0185]●关系模型指的是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。关系模型中常用的概念:关系——可理解为一张二维表,每个关系都具有一个关系名,即表名;元组——可理解为二维表中的一行,在数据库中常被称为记录;属性——可理解为二维表中的一列,在数据库中常被称为字段;域——属性的取值范围,即数据库中某一列的取值限制;关键字——一组唯一标识元组的属性,数据库中常称为主键,由一个或多个列组成;关系模式——指对关系的描述,其格式为:关系名(属性1,属性2,......,属性n),在数据库中成为表结构;[0186]■非关系型数据库[0187]非关系型数据库,键值对形式,也是一种数据结构化存储方法的集合。它不需要预定义结构,以键值对形式存储数据,因此很容易适应数据类型和结构的变化。常用的非关系型数据库主要有:[0188]√bigtable——bigtable是一个键值映射,但沿用了很多关系型数据库的术语,像表、行、列等;[0189]√hbase——hbase以表的形式存储数据。表有行和列组成。列划分为若干个列族。列族是列的集合,一个列族中包含多[0190]个列。rowkey是行键,每一行的id,这个字段是自动创建的。表中每个列都归属于某个列族。列族是表chema的一部分,必须在使用表之前定义。列名都以列族作为前缀。hbase中通过row和columns确定的为一个存贮单元称为cell。每个cell都保存着同一份数据的多个版本。版本通过64位整型的时间戳来索引。cell中的数据是没有类型的,全部是字节码形式存贮。[0191]√mongodb——文档是mongodb中数据的基本单元,类似关系型数据库中的行。文档以键值对方式,其值可以是字符串、整数、数组以及文档等类型,文档的键是用双引号标识的字符串,相当于列名。集合在mongodb中是一组文档,类似关系型数据库中的数据表。集合是由唯一的命名来标识。不同键值对形式的文档可以在同一个集合中存储。mongodb中多个文档构成集合,多个集合构成数据库。[0192]1.2.2.1.1.生成方法[0193]概念生成引擎将每个表分别作为一个概念,该表的表名、或指代该表的词作为该概念的词。[0194]√例如表user,生成概念id=user,可有词“user”、“用户”等;例如表news,生成概念id=news,可有词“news”、“新闻”、“资讯”等。[0195]同时,基础定义的概念id=object与由这些表生成的概念构成species种属关系。[0196]√例如概念id=object与上述例子中的概念id=user、id=news构成species种属关系。[0197]引擎将表每个字段分别作为一个概念,该字段的字段名、或指代该字段的词作为该概念的词。[0198]√例如表user的字段name,生成概念id=user.name,可有词“name”、“名称”、“名字”、“名”、“姓名”等;表user的字段sex,生成概念id=user.sex,可有词“sex”、“性别”等;例如表news的字段title,生成概念id=news.title,可有词“title”、“标题”、“正标题”等;表news的字段creator,生成概念id=news.creator,可有词“creator”、“创建者”等;[0199]同时,所属表生成的概念与由这些字段生成的概念构成attribute属性关系。[0200]√例如上述例子中的概念id=user与概念id=user.name、id=user.sex构成attribute属性关系;例如上述例子中的概念id=news与概念id=news.title构成attribute属性关系;[0201]引擎可将每个字段类型分别作为一个概念。这些概念通常都是无词概念,通过各自的概念识别器来识别词是否为与之匹配的概念。[0202]√例如文本字段类型,生成带有本体概念的无词概念id=@string,本体概念为id=string;例如数字字段类型,生成带有本体概念的无词概念id=@number,本体概念为id=number;例如时间日期字段类型,生成带有本体概念的无词概念id=@time,本体概念为id=time;[0203]同时,具有对应字段类型的字段所生成的概念与由这些字段类型生成的概念构成value值关系。[0204]√例如表user的字段name、表news的字段title类型都为文本字段类型,则概念id=user.name、id=news.title与概念id=@string构成value值关系;[0205]当然,对于一些字段它们的值带有一定的约束性或特殊性,例如字典数据,可以自定义无词概念。[0206]√例如表user的字段sex,其值是字典数据:男、女,自定义无词概念id=@sex,可以自定义该概念的概念识别器识别“男”、“女”、“男性”、“女性”等词。同时概念id=user.name与概念id=@sex构成value值关系;[0207]另外,有些字段与其它表构成的外键关系,那么由这些字段类型生成的概念与其关联的主表所生成的概念构成value值关系。[0208]√例如表news的字段创建者creator,其与表user构成外键关系,那么概念id=news.creator与概念id=user构成value值关系;[0209]上述示例如图8。[0210]1.2.2.1.2.对象数据管理技术[0211]现有主流的对象关系映射框架,例如hibernate,为面向对象的领域模型到传统关系型数据库的映射提供了一个使用方便的框架。这样的框架根据上述的生成方法将非常容易扩展实现概念生成引擎。[0212]本节讲述的对象数据管理技术也是一种java语言下的对象关系映射框架,它对jdbc进行了非常轻量级的对象封装。它把表看作对象,把表的字段看作对象的属性,通过值类型来表达属性部件、表之间的主外键以及主表-子表等关系。它使用xml格式的对象模板文件来定义对象结构,并与数据库表建立映射关系。[0213]√常用的非关系型数据库如hbase、mongodb已实现了jdbc驱动,使用jdbc就可访问这些数据库。该技术对这些非关系型数据库访问api进行了对象封装,同时针对mongodb进行了归一化处理,即集合里的文档、内嵌文档使用一致的键值对形式;[0214]对象模板文件支持中文、英文等多语言。它定义了指代该表的词,定义了属性字段名、指代该属性的词,也定义了属性的数据类型。对象模板文件可以在运行时动态被管理,例如用户可以通过数据管理界面新定义对象模板、创建或修改属性等。[0215]√例如对象模板文件department.xml如图9。[0216]对象数据管理技术中定义的数据类型分为简单类型simple、复合类型complex、结构类型structure三种。[0217]■简单类型simple[0218]包含有字符串型string、整型integer、短整型short、双浮点数double、单浮点数float、长整型long、布尔型boolean、文本htext:string、html文本htext:html、bbcode文本htext:bbcode、xml文本htext:xml、json文本htext:json、日期型htime:date、时间型htime:timestamp、对象模板类型thing:base、整型编号类型hidentity:integer、长整型编号类型hidentity:long、字符串编号类型hidentity:string、对象类型等。其中,对象类型表示被定义的属性(字段)与当前表或其它表形成外键关系。[0219]√例如上述对象模板文件department.xml中属性上级parent为对象类型,指向当前对象表。[0220]■复合类型complex[0221]该类型表示某个属性是由多个子属性组成,例如价格可由数值和单位组成。也就是说,属性与子属性之间构成了part部件关系。[0222]√mongodb可以使用内嵌文档类型实现;[0223]√例如图10中的属性(字段)价格price定义,表示价格由数值和单位组成;[0224]■结构类型structure[0225]该类型表示某个属性存在多行记录,即主表-子表的关系。例如一个角色拥有多个授权的功能,那么这个授权功能functions是角色role的一个属性,且为结构类型。这类属性也由多个子属性组成,属性与子属性之间也构成attribute属性关系。[0226]√mongodb可以使用数组类型以及其元素为内嵌文档类型实现,表现为文档-内嵌文档的关系;[0227]√例如图11中的属性(字段)授权功能functions定义[0228]对象数据管理技术不仅实现了对象/属性定义与数据库表的映射(还包括对象属性数据类型与sql/nosql数据库数据类型的映射),还提供了面向对象的数据查询/管理机制,使得java程序员可以随心所欲的使用对象编程思维来操纵数据库。[0229]概念生成引擎可根据对象模板xml生成概念及概念连接,如图12。[0230]概念生成引擎可将每个对象模板(或称对象)分别作为一个概念,该对象的名称、或指代该对象的词作为该概念的词。同时,基础定义的概念id=object与由这些对象生成的概念构成species种属关系。[0231]引擎可将模板定义的每个属性分别作为一个概念,该属性的字段名、或指代该属性的词作为该概念的词。同时,所属对象生成的概念与由这些属性生成的概念构成attribute属性关系。[0232]引擎可将每个属性数据类型分别作为一个概念。这些概念通常都是无词概念,通过各自的概念识别器来识别词是否为与之匹配的概念。同时,具有对应数据类型的属性所生成的概念与由这些属性类型生成的概念构成value值关系。当然也可以通过配置对属性值自定义概念。针对对象类型的属性,该属性与类型中指定的对象关联,构成value值关系。针对复合类型的属性,该属性与类型中指定的成员(子属性)构成part部件关系。针对结构类型的属性,该属性与类型中指定的成员(子属性)构成attribute属性关系。[0233]√例如数据类型与概念。[0234][0235]上述示例对象模板文件department.xml生成的概念及概念连接如图14。图中概念id=@phone、id=@fax为自定义的无词概念,它们分别用来识别电话号码、传真。[0236]1.2.2.2.程序设计语言[0237]程序设计语言(programminglanguage),是一组用来定义计算机程序的语法规则。它是一种被标准化的交流技巧,用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。[0238]程序设计语言一般都可以通过语法分析器将代码转成语法树以及将语法树转成代码,如下表:[0239][0240]另外,模板语言也是一种程序设计语言,它们有自己的语法规则以及模板引擎,能让计算机编译执行,甚至还可以生成其它语言。例如freemarker、velocity,它可以从模板生成html、sql、postscript、xml、rtf、java源代码等等。[0241]本文将讲述的格式化脚本语言gscript同样也是一种程序设计语言,目前版本使用java语言编写。它有双引擎,支持解释执行和编译执行。编译执行时可以将代码编译成java字节码,快速提升代码运行的效率。它也可以作为模板引擎,如同freemarker、velocity基于模板来生成文本输出。gscript语言也有语法分析器,可以将代码转换成语法树,同时也可以将语法树转成代码。gscript语言还有一个很重要的特点,就是它可以调用不同的指令函数库解析或编译执行代码生成其它程序设计语言。[0242]1.2.2.2.1.生成方法[0243]程序设计语言的实质是语法规则,那么概念生成引擎的生成方法就在于对语法规则进行分析并转换生成概念及概念连接,如图15。[0244]本文在下节着重讲述有关gscript语言的生成方法。而其它多数程序设计语言例如java、html、js、css、html、json、xml等其方法与此基本一致,不再一一详述。[0245]1.2.2.2.2.gscript语言[0246]1.2.2.2.2.1.gscript语法规则[0247]gscript语言语法由指令函数、操作符与运算函数三部分组成。[0248]■指令函数[0249]指令函数的形式为:[0250]《函数名》(《函数参数1》,《函数参数2》,……){[0251]《函数体》[0252]};[0253]函数参数:函数名后面的参数是用()包裹起来,多个参数之间用,隔开。并非所有函数都有参数。如无参数则()可省略。函数体:函数体用{}包裹起来。函数体内部则可书写多个指令函数。并非所有函数都有函数体。如无函数体则{}可省略。函数结束符:使用;作为结束符。[0254]指令函数库包括基本指令与扩展指令。基本指令函数包括代码块(script)、变量定义与赋值(var、assign)、条件控制(if、else)、循环(do、while、for)、遍历(loop、list)、循环与过程中断(break、continue、return)、函数定义与调用(function、call)、抛出与捕获异常(throw、try、catch、finally)、外部脚本加载(include)、空执行(void)、打印(print、printf、println)、调试(info、debug、trace、warn、error)、排序(sort)、标记(mark)等。而扩展指令与目标生成的程序语言相关,在使用时可动态扩展。[0255]■操作符[0256]gscript支持以下字符,以及优先级顺序如下表:[0257][0258]操作符按功用划分为算术操作符、关系运算符、逻辑操作符、位运算符、三元表达操作符、类型转换操作符、null赋值操作符、取值操作符、转义操作符、注释操作符、字符或字符串操作符、保留操作符。[0259]■运算函数[0260]运算函数主要包括数学、字符串、html、日期、数组、对象、取值、json、调试等运算函数以及扩展的运算函数。[0261]gscript语言有很多高级特性,例如类型推断、常量优化、函数参数化等等。gscript语言现版本使用java语言编写,并且和java的交互性很好,可以说是无缝连接。通过取值操作符和取值运算函数即可访问java常量、类、属性以及调用方法等。gscript语言现版本已支持以下这些计算机语言,如下表所示:[0262]已支持的计算机语言指令函数库java基本javascript基本、javascript扩展html基本、html扩展css基本、css扩展xml基本、xml扩展json基本、json扩展text基本、text扩展[0263]当然,上述这些计算机语言配合相应的语法分析器经过gscript语法分析器可以直接转换为gscript语言,从而可以间接通过gscript语言来转换生成概念及概念连接。[0264][0265]gscript语法分析器分析gscript语言成指令函数树。该指令函数树即为gscript的语法树。反之gscript语法分析器可以将指令函数树生成相应的gscript语言。因此使用gscript语言有一个很大优势:能够将不同的计算机语言生成统一的语法树,便于分析处理,如图16。[0266]1.2.2.2.2.2.java语法规则[0267]java语言是一种面向对象的程序设计语言。面向对象具有封装,继承和多态等特征。(1)封装:把对象的属性和操作结合在一起,构成一个独立的对象。同过修饰符的使用外部对象不能直接操作对象的属性,只能使用对象提供的服务。(2)继承:即扩展,子类继承父类几乎全部属性和行为,但是继承只能是单继承,一个子类只能有一个直接父类;继承是可以传递的。子类可以当作父类看。(3)多态:通过方法重载和方法重写实现。[0268]类是对象的抽象,而对象是类的实例;对象都有属性和行为两大要素,属性是对对象的静态描述。而行为则体现了对象的功能和行为。一个类的使用是通过对该类实例化来完成的。[0269]属性和行为构成了类的成员。作为类的属性,可以是基本数据类型,也可以是引用类型;方法则体现出了行为;get和set方法作为一种约定被用于提供对属性的操作。一个类可以作为另外的类一个属性,即属性可以是引用性数据。[0270]类的继承即扩展,其关键词是extends。继承准则:总是让子类执行超类可执行的所有行为;确保子类包含超类的所有信息;向子类添加成员,从而定义子类的特有行为;将共同特性迁移到超类上;允许同一超类的不能子类执行相同的行为,但实现方式不同——方法重写。[0271]接口是一群抽象行为的集合。通过接口实现了多重继承。应该这样更好的设计类,让类封装所代表对象的属性和行为。对象外部的功能可通过接口来实现。[0272]枚举是限定有限可能值的一种手段,使用枚举可以降低程序出错的几率,并可以提高代码的可读性与可维护性。java中的枚举并不是简单常量的集合,而是一个对象,其本质依然是类。[0273]1.2.2.2.2.3.概念生成引擎[0274]概念生成引擎根据gscript语法规则、java语法规则以及目标程序语言的语法规则来生成概念及概念连接,如图17。[0275]1.2.2.2.2.3.1.gscript[0276]概念生成引擎优选配置方式为gscript语言语法的指令函数、操作符与运算函数定义一系列概念以及概念连接。配置方法可以使用与基础定义相一致的技术手段。[0277]■指令函数[0278]◆基本指令[0279][0280][0281]◆扩展指令[0282]●text[0283][0284]●json[0285][0286]●xml[0287][0288][0289]●html[0290][0291][0292]●css[0293][0294]●js(javascript)[0295][0296]■操作符[0297][0298][0299]■运算函数[0300][0301][0302][0303]1.2.2.2.2.3.2.java[0304]gscript语言通过取值操作符和取值运算函数无缝与java的常量、对象等交互。同时使用var、assign指令函数定义的局部变量与全局变量也是以java对象的形式存储在存储区,通过取值操作符@@、@和取值运算函数@@、@、fromcontext取得这些变量。也可以通过插件方法访问引入的第三方jar包。[0305]优选配置与java注解来配置与定义概念及概念连接。配置方法可以使用与基础定义相一致的技术手段。而java注解则是使用了java的语言特性,使得概念及概念连接的定义在代码开发过程中即可进行。[0306]√java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。[0307]√例如使用包名索引表的概念配置concepts/c.o.g.p.c.i.actioncontext.json见图27、connectivities/c.o.g.p.c.i.actioncontext.json见图28,java注解com.onegrid.grid.platform.nlp4.impl.conceptnetwork.annotation.classconcept见图29、com.onegrid.grid.platform.nlp4.impl.conceptnetwork.annotation.classconceptconnectivity见图30。[0308]概念生成引擎可将每个类分别作为一个概念,该类的类名、或指代该类的词作为该概念的词。允许多个类指向同一个概念,例如接口与它的实现类通常会表示同一个概念。[0309]√例如图31。类的概念id常使用一个小技巧:使用包名索引表来缩减概念id的长度,如图示中的索引c.o.g.p.c.i来表示包名com.onegrid.grid.platform.context4。[0310]同时,基础定义的概念id=object与由这些类生成的概念构成species种属关系。[0311]√例如概念id=object与上述例子中的概念id=c.o.g.p.c.i.actioncontext、id=c.o.g.p.c.i.applicationcontext构成species种属关系;[0312]java枚举虽然本身也是类但须不同处理,其须定义两个概念。其中一个概念是带有本体概念的无词概念且是另一个概念的值,而另一个概念却是那个无词概念的本体概念。例如图32。[0313]引擎针对类的每个字段(field)的引用情况不同进行分别处理:[0314]①如果字段field被配置或注解定义了概念,则此类的概念与该字段的概念构成attribute属性关系;[0315]②如果字段field的数据类型指向某个类(或java枚举),而且该类的组件类型(componenttype)是已经被定义概念的类,则此类的概念与该字段数据类型的概念构成attribute属性关系;[0316]√例如类com.onegrid.grid.platform.context4.impl.actioncontext(概念id=c.o.g.p.c.i.actioncontext)见图33。[0317]③否则,引擎则为该字段定义一个概念,该字段的字段名、或指代该字段的词作为该概念的词,然后此类的概念与字段所生成的概念构成attribute属性关系。[0318]√例如类com.onegrid.grid.platform.core4.impl.bean.requestpage(概念id=c.o.g.p.c.i.b.requestpage)见图34。引擎针对不同数据类型也需要进行分别处理:[0319]①类:基本的数据类型及所对应的一些对象类型。例如图35。[0320]②类:集合类型,主要包括数组、实现java.lang.collection的类。例如图36。[0321]③类:其它类型,含java.lang.object、java.lang.class、枚举等。例如图37。[0322]引擎定义类字段(field):如果字段没有被配置或注解定义了概念连接,那么:[0323]◆如果字段为固定常量时定义一个概念,常量值、或指代该常量值的词作为该概念的词,然后字段的概念与该生成的概念构成value值关系。[0324]◆如果字段的概念id与它数据类型的概念id不一致时两者之间构成value值关系。[0325]√例如上述示例概念id=c.o.g.p.c.i.b.requestpage.uri与概念id=@string构成value值关系;例如上述示例概念id=c.o.g.p.c.i.b.requestpage.titles与概念id=map构成value值关系。[0326]引擎定义类的方法(method):如果方法没有被配置或注解定义了概念及概念连接,那么:[0327]◆如果方法名符合javabean的规范(即getter和setter方法),那无需定义。因为基础定义中常定义概念id=get、id=set与概念id=object构成sv主谓关系。[0328]◆否则,定义一个概念,该方法名、或指代该方法的词作为该概念的词,然后此类的概念与该生成的概念构成sv主谓关系。[0329]引擎定义类的继承(extends):如果父类与子类概念id不一致时,父类的概念与子类的概念之间构成species种属关系。[0330]1.2.2.2.2.3.3.html[0331]html语法主要有:html文档是由html元素定义的;html元素以开始标签起始,以结束标签终止;元素的内容是开始标签与结束标签之间的内容;某些html元素具有空内容(emptycontent);空元素在开始标签中进行关闭(以开始标签的结束而结束);html标签可以拥有属性,属性总是以名称/值对的形式出现;html文档存在外部样式,由标签link引入;html文档存在内部样式,有标签style定义;html元素存在内联样式,主要由属性style定义;html元素事件以属性形式存在,即通过事件属性使事件在浏览器中触发动作的能力。概念及概念连接的生成见上一节gscript“指令函数-扩展指令-html”。[0332]1.2.2.2.2.3.4.css[0333]css语法主要有:css规则由两个主要的部分构成:选择器,以及一条或多条声明;selector{declaration1;declaration2;...declarationn};每条声明由一个属性和一个值组成;selector{property:value};每个属性有一个值,属性和值被冒号分开;可以通过依据元素在其位置的上下文关系来定义样式;id选择器可以为标有特定id的html元素指定特定的样式,且以"#"来定义;类选择器以一个点号显示;可以为拥有指定属性的html元素设置样式,而不仅限于class和id属性。概念及概念连接的生成见前一节gscript“指令函数-扩展指令-css”。[0334]1.2.2.2.2.3.5.xml[0335]xml指可扩展标记语言,它被设计用来传输和存储数据。xml语法规则很简单且很有逻辑。xml语法主要有:xml文档必须有根元素;xml元素的标签没有被预定义,须自行定义标签;xml元素都必须有关闭标签;xml元素的标签对大小写敏感;与html元素类似,xml元素也可拥有属性(名称/值的对);xml元素的属性值须加引号。概念及概念连接的生成见前一节gscript“指令函数-扩展指令-xml”。[0336]1.2.2.2.2.3.6.json[0337]json:javascript对象表示法(javascriptobjectnotation)。json是存储和交换文本信息的语法。类似xml。json比xml更小、更快,更易解析。json语法是javascript语法的子集。json语法主要有:json名称/值对:名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值;json值可以是:数字(整数或浮点数)、字符串(在双引号中)、逻辑值(true或false)、数组(在方括号中)、对象(在花括号中)、null;json对象在花括号中书写,且包含多个名称/值对;json数组在方括号中书写,且可包含多个对象。概念及概念连接的生成见前一节gscript“指令函数-扩展指令-json”。[0338]1.2.2.2.2.3.7.js(javascript)[0339]gscript语言通过取值操作符和取值运算函数无缝与javascript的浏览器对象、函数等交互。同时也使用var、assign指令函数与javascript的变量定义var映射;使用function指令函数与javascript的函数定义function映射;通过取值操作符@和取值运算函数@、fromcontext与javascript的变量获取映射,等等。[0340]√例如执行gscriptjs(javascript)代码生成javascript代码见图38。[0341]gscript语言可以通过配置将浏览器、外部脚本例如jquery框架等内置的对象、函数引入到gscript内,使得在gscript内部可以访问到这些对象、函数。[0342]√例如默认的gscript配置见图39。[0343]javascript是一种轻量级的编程语言,可由所有的现代浏览器执行。javascript跟java一样,也有变量、数据类型、对象、函数、运算符、比较和逻辑运算符、if...else条件、switch、for、while、return、break和continue、throw、try、catch等。同时javascript对象也拥有属性和方法,属性是与对象相关的值,而方法是能够在对象上执行的动作。例如图40。[0344]部分概念及概念连接的生成见前一节gscript“指令函数-扩展指令-js(javascript)”、“运算函数-扩展运算函数-js(javascript)”。[0345]1.2.2.3.语义网络/词典/知识库[0346]现在主流的语义网络/词典/知识库主要有:conceptnet、framenet、wordnet、hownet等。本文所述的概念网络也是一种语义网络,因此在技术上是可以实现与现有主流的语义网络/词典/知识库相互转换。[0347]1.2.3.扩展定义[0348]通过上述方法生成概念及概念连接可能会存在一定的不足,或者说在一定程度上可能会无法满足语义分析推理的需要,因此可以进行进一步扩展定义。在实现的技术手段上可以选用与基础定义一样的技术手段。[0349]另外借助词典如《同义词反义词词典》、word2vec工具等等可以帮助扩充概念词及概念间的相关关系。[0350]√《同义词反义词词典》是华东师范大学出版社出版的图书。共收入同义词、反义词词目1200余组。[0351]√word2vec是一个将单词转换成向量形式的工具。可以把对文本内容的处理简化为向量空间中的向量运算,计算出向量空间上的相似度,来表示文本语义上的相似度。[0352]1.2.4.动态形成[0353]例如概念连接的“动态形成”章节所述,在自然语言理解过程中动态为概念之间形成连接即关系。因此可以将这些概念连接动态加入到概念网络中。通常加入到概念网络中的概念连接其特征都只有一个肯定,其目的在于:概念网络中概念连接不仅满足自然语言理解的需要,而且还可以适用于不同语境。[0354]√例如语句“我没有包”表达了我me跟包bag之间形成了attribute(属性宿主与领属)的连接,但此连接在当前语境[0355]下特征为否定。但加入到概念网络中的连接其特征却是肯定。[0356]例如自然语言理解过程中人为的操作,为概念添加词、增加概念连接等。[0357]这取决于实际的应用情况。[0358]1.2.5.词向量[0359]词向量就是用来将语言中的词进行数学化的一种方式,顾名思义,词向量就是把一个词表示成一个向量。主要有两种表示方式:[0360]√one-hotrepresentation。创建一个词表库并把每个词顺序编号。在实际应用中,一般采用稀疏编码存储,主要采用词的编号。这种表示方法一个最大的问题是无法捕捉词与词之间的相似度,就算是近义词也无法从词向量中看出任何关系。此外这种表示方法还容易发生维数灾难,尤其是在deeplearning相关的一些应用中。[0361]√distributedrepresentation。其基本思想是通过训练将每个词映射成k维实数向量(k一般为模型中的超参数),通过词之间的距离(比如cosine相似度、欧氏距离等)来判断它们之间的语义相似度。word2vec使用的就是这种词向量表示方式。[0362]传统上自然语言处理(nlp)系统把词编码成字符串。这种方式是随意确定的,且对于获取词之间可能存在的关系并没有提供有用的信息。词向量是nlp领域的一个替代方案。它把词或短语映射成实数向量,把特征从词汇表大小的高维度空间降低到一个相对低的维度空间。目前最流行的词向量模型是由mikolov等人在2013年提出的word2vec。[0363]主要有两种方式可以跟词向量结合在一起。[0364]■与概念直接或间接对应的词使用词向量替代。人为无法为概念对应全部且都准确的词,而通过词向量捕捉词与词的相似度,有助于为概念扩充词,或者为概念间建立相关关系。[0365]■概念id直接使用词向量。当前第1页12当前第1页12
技术特征:
1.一种用于人工智能的概念网络,其特征在于:包括概念和概念连接,一个概念跟多个概念形成一种或多种的语义关系,同时概念间的语义关系是一层或多层;所示概念都有一个唯一的编号id;概念连接即概念间的语义关系链,用来描述概念间的多层语义关系。2.根据权利要求1所述的用于人工智能的概念网络,其特征在于:所述概念id为字符串、数字、词向量。3.根据权利要求1所述的用于人工智能的概念网络,其特征在于:所述概念分为三类:词概念,无词概念,未知概念;词概念包含一般词概念、带有关系成分的词概念、组合词概念、词集合概念;词概念的特点是存在自然语言词与此概念直接相对应,同时也存在实现该概念定义def的转换器;无词概念包含不带本体概念的无词概念、带有本体概念的无词概念;无词概念的特点是不存在自然语言词与此概念直接相对应,但通常存在概念识别器,使得自然语言词能与概念之间间接相对应;未知概念包含未知词概念、未知词集合概念;未知概念的特点是无法为该概念生成概念定义def,在自然语言处理过程中将被忽略。4.根据权利要求1所述的用于人工智能的概念网络,其特征在于:所述概念连接具有如下特征:a/一个概念跟多个概念形成一种或多种的语义关系,同时这些语义关系是多层的;b/一个概念跟多个概念在自然语言的理解过程中逐步形成新的概念连接;c/存在特征:这些特征表示概念连接中反映关系的肯定、否定、可能、范围、概率、程度、频率、时间、语气。5.要求1或2或3或4所述概念网络的生成方法,其特征在于:所述方法包括基础定义、转换生成、扩展定义或动态形成中的一种或多种方法;其中,基础定义为定义基础的概念及概念连接,主要选用xml、json格式的配置文件来定义这些概念及概念连接,然后再通过对这些配置文件解析生成概念及概念连接生成的方法为将数据结构、程序设计语言、语义网络/词典/知识库等转换生成为概念及概念连接;实现该转换生成的主程序,即为概念生成引擎;扩展定义为采用基础定义的方法进一步扩展定义概念及概念连接;动态形成为动态的形成概念及概念连接,包括在自然语言理解过程中动态为概念之间形成连接,或者人为操作为概念添加词、增加概念连接。6.根据权利要求5所述概念网络的生成方法,其特征在于:所述生成的方法中,数据结构包含行列形式、键值对形式两种。7.根据权利要求5所述概念网络的生成方法,其特征在于:所述生成的方法中,将数据结构转换生成概念及概念连接的方法过程为:
①
概念生成引擎将每个表分别作为一个概念,该表的表名、或指代该表的词作为该概念的词;同时,基础定义的概念id=object与由这些表生成的概念构成species种属关系;
②
引擎将表每个字段分别作为一个概念,该字段的字段名、或指代该字段的词作为该概念的词;同时,所属表生成的概念与由这些字段生成的概念构成attribute属性关系;
③
引擎可将每个字段类型分别作为一个概念;这些概念通常都是无词概念,通过各自
的概念识别器来识别词是否为与之匹配的概念;同时,具有对应字段类型的字段所生成的概念与由这些字段类型生成的概念构成value值关系;
④
当然,对于一些字段它们的值带有一定的约束性或特殊性,例如字典数据,可以自定义无词概念;
⑤
另外,有些字段与其它表构成的外键关系,那么由这些字段类型生成的概念与其关联的主表所生成的概念构成value值关系。8.根据权利要求5所述概念网络的生成方法,其特征在于:所述生成的方法中,将数据结构转换生成概念及概念连接的生成方法过程还可以通过对象数据管理技术实现;对象数据管理技术使用xml格式的对象模板文件来定义对象结构,并与数据库表建立映射关系;概念生成引擎可根据对象模板xml生成概念及概念连接;生成方法过程:
①
概念生成引擎可将每个对象模板5分别作为一个概念,该对象的名称、或指代该对象的词作为该概念的词;同时,基础定义的概念id=object与由这些对象生成的概念构成species种属关系;
②
引擎可将模板定义的每个属性分别作为一个概念,该属性的字段名、或指代该属性的词作为该概念的词;同时,所属对象生成的概念与由这些属性生成的概念构成attribute属性关系;
③
引擎可将每个属性数据类型分别作为一个概念;这些概念通常都是无词概念,通过各自的概念识别器来识别词是否为与之匹配的概念;同时,具有对应数据类型的属性所生成的概念与由这些属性类型生成的概念构成value值关系;当然也可以通过配置对属性值自定义概念;针对对象类型的属性,该属性与类型中指定的对象关联,构成value值关系;针对复合类型的属性,该属性与类型中指定的成员构成part部件关系;针对结构类型的属性,该属性与类型中指定的成员构成attribute属性关系。9.根据权利要求5所述概念网络的生成方法,其特征在于:所述生成的方法中,将程序设计语言构转换生成概念及概念连接的生成方法是在于对语法规则进行分析并转换生成概念及概念连接。10.根据权利要求5所述概念网络的生成方法,其特征在于:所述生成的方法中,gscript语言也是一种程序设计语言,使用java语言编写,也可以作为模板引擎,同时也有语法分析器,可以将代码转换成语法树,也可以将语法树转成代码;gscript语言可以调用不同的指令函数库解析或编译执行代码生成其它程序设计语言。11.根据权利要求5所述概念网络的生成方法,其特征在于:所述生成的方法中,java、javascript、html、css、xml、json、text程序设计语言配合相应的语法分析器经过gscript语法分析器可以直接转换为gscript语言,从而间接通过gscript语言来转换生成概念及概念连接。12.根据权利要求5所述概念网络的生成方法,其特征在于:所述生成的方法中,将gscript语言转换生成概念及概念连接的生成方法根据gscript语法规则、java语法规则以及目标程序语言的语法规则来生成概念及概念连接,生成方法过程:
①
gscript语言语法由指令函数、操作符与运算函数三部分组成;概念生成引擎优选配置方式为gscript语言语法的指令函数、操作符与运算函数定义一系列概念以及概念连接;
配置方法可以使用与权利要求4基础定义相一致的技术手段;
②
java语言语法包含类、属性、方法、数据类型、枚举、注解等;概念生成引擎优选配置与java注解来配置与定义概念及概念连接;配置方法可以使用与基础定义相一致的技术手段;而java注解则是使用了java的语言特性,使得概念及概念连接的定义在代码开发过程中即可进行;i概念生成引擎可将每个类分别作为一个概念,该类的类名、或指代该类的词作为该概念的词。允许多个类指向同一个概念,例如接口与它的实现类通常会表示同一个概念。同时,基础定义的概念id=object与由这些类生成的概念构成species种属关系;ii java枚举虽然本身也是类但须不同处理,其须定义两个概念。其中一个概念是带有本体概念的无词概念且是另一个概念的值,而另一个概念却是那个无词概念的本体概念;iii引擎针对类的每个字段(field)的引用情况不同进行分别处理:i如果字段field被配置或注解定义了概念,则此类的概念与该字段的概念构成attribute属性关系;ii如果字段field的数据类型指向某个类(或java枚举),而且该类的组件类型(component type)是已经被定义概念的类,则此类的概念与该字段数据类型的概念构成attribute属性关系;iii否则,引擎则为该字段定义一个概念,该字段的字段名、或指代该字段的词作为该概念的词,然后此类的概念与字段所生成的概念构成attribute属性关系;;iv引擎针对不同数据类型也需要进行分别处理:
①
类:基本的数据类型及所对应的一些对象类型;;;
②
类:集合类型,主要包括数组、实现java.lang.collection的类;;;
③
类:其它类型,含java.lang.object、java.lang.class、枚举等;;;v引擎定义类字段(field):如果字段没有被配置或注解定义了概念连接,那么:i如果字段为固定常量时定义一个概念,常量值、或指代该常量值的词作为该概念的词,然后字段的概念与该生成的概念构成value值关系;ii如果字段的概念id与它数据类型的概念id不一致时两者之间构成value值关系;vi引擎定义类的方法(method):如果方法没有被配置或注解定义了概念及概念连接,那么:i如果方法名符合javabean的规范(即getter和setter方法),那无需定义;因为基础定义中常定义概念id=get、id=set与概念id=object构成sv主谓关系;ii否则,定义一个概念,该方法名、或指代该方法的词作为该概念的词,然后此类的概念与该生成的概念构成sv主谓关系;vii引擎定义类的继承(extends):如果父类与子类概念id不一致时,父类的概念与子类的概念之间构成species种属关系;
③
目标程序语言的概念及概念连接的生成与gscript“指令函数-扩展指令”相对应章节一致。13.权利要求1或2或3或4所述概念网络在人工智能语言理解与生成中的应用。
技术总结
本发明涉及人工智能领域,具体提供了一种用于人工智能的概念网络及其生成方法。一种用于人工智能的概念网络,定义事物概念及概念间语义关系的系统,包括概念和概念连接,一个概念可以跟多个概念形成一种或多种的语义关系,同时概念间的语义关系可以是多层的。本文讲述了概念网络的定义:概念及概念连接,并且从五个方面提出了建设方法。与此同时,为人机自然语言交互、机器协同编程等应用提供了技术基础。础。础。
技术研发人员:任浙东
受保护的技术使用者:杭州格沃智能科技有限公司
技术研发日:2022.02.20
技术公布日:2022/5/25
转载请注明原文地址:https://tc.8miu.com/read-6629.html