CN115345153A - 一种基于概念网络的自然语言生成方法 - Google Patents

一种基于概念网络的自然语言生成方法 Download PDF

Info

Publication number
CN115345153A
CN115345153A CN202210477540.3A CN202210477540A CN115345153A CN 115345153 A CN115345153 A CN 115345153A CN 202210477540 A CN202210477540 A CN 202210477540A CN 115345153 A CN115345153 A CN 115345153A
Authority
CN
China
Prior art keywords
concept
def
word
concepts
natural language
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210477540.3A
Other languages
English (en)
Inventor
任浙东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Gewo Intelligent Technology Co ltd
Original Assignee
Hangzhou Gewo Intelligent Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Gewo Intelligent Technology Co ltd filed Critical Hangzhou Gewo Intelligent Technology Co ltd
Priority to CN202210477540.3A priority Critical patent/CN115345153A/zh
Publication of CN115345153A publication Critical patent/CN115345153A/zh
Priority to PCT/CN2023/077271 priority patent/WO2023155914A1/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • G06F40/211Syntactic parsing, e.g. based on context-free grammar [CFG] or unification grammars
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/253Grammatical analysis; Style critique
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Machine Translation (AREA)

Abstract

本发明涉及人工智能领域,具体提供了一种基于概念网络的自然语言生成方法。本发明讲述的自然语言生成方法,包括如下步骤:基于概念网络,对所要表达的意图依次进行:DEF生成、句法分析;本发明基于概念网络提出了一种全新的自然语言生成方法,其更大的意义在于全面讲述如何将要表达的意图、程序设计语言生成自然语言语句。本文还讲述了多种语言间转换的方法。本文所述的方法及系统为机器生成自然语言提供了一种方法论,更是提供了一种全新的解决方案。

Description

一种基于概念网络的自然语言生成方法
技术领域
本发明涉及人工智能领域,具体提供了一种基于概念网络的自然语言生成方法。
背景技术
第三次人工智能AI热潮来袭,AI在语音识别、机器视觉、数据挖掘等多个领域走进了业界的真实应用场景。作为其中重要的发展方向之一,自然语言处理技术也得到迅猛发展和应用。如何让机器理解自然语言是人工智能中最为困难的问题之一。
概念网络的理论基础最早要追溯到1973年美国人工智能专家R.C.尚克提出的概念从属论。概念从属论(简称CD理论)是自然语言自动处理中的一种理论。尚克认为,人脑中存在着某种概念基础,语言理解的过程就是把语句映射到概念基础之中去的过程。
发明内容
为了解决以上问题,本发明提供了一种基于概念网络的自然语言生成方法。
本发明讲述的自然语言生成方法,包括如下步骤:基于概念网络,对所要表达的意图依次进行:DEF生成、句法分析;
自然语言生成过程的特点:
(1)基于概念网络实现;
(2)过程依次是:DEF生成、句法分析。目的是:能够生成与意图相符的自然语言语句,满足生成篇章/ 段落以及实现单轮/多轮对话的需要。
(3)上下文会话贯穿整个生成过程。
本发明提供了一种用于人工智能的概念网络。
一种用于人工智能的概念网络,定义事物概念及概念间语义关系的系统,包括概念和概念连接,一个概念可以跟多个概念形成一种或多种的语义关系,同时概念间的语义关系可以是多层的。
(1)概念网络的定义:概念及概念连接。
概念都有一个唯一的编号ID。概念ID可以是任何一种形式,例如字符串、数字、词向量等。概念分为三类:词概念(WORD),无词概念(NON_WORD),未知概念(UNKNOWN)。
词概念包含一般词概念、带有关系成分的词概念、组合词概念、词集合概念。词概念的特点是存在自然语言词与此概念直接相对应,同时也存在实现该概念定义DEF的转换器。
无词概念包含不带本体概念的无词概念、带有本体概念的无词概念。无词概念的特点是不存在自然语言词与此概念直接相对应,但通常存在概念识别器,使得自然语言词能与概念之间间接相对应。
未知概念包含未知词概念、未知词集合概念。未知概念的特点是无法为该概念生成概念定义DEF,在自然语言处理过程中将被忽略。
概念连接即概念间的语义关系链,用来描述概念间的多层语义关系。其特点是:
a/一个概念可以跟多个概念形成一种或多种的语义关系,同时概念间的语义关系可以是多层的。当然并不是所有的概念相互之间都能形成语义关系。
b/有些概念连接并非固有的、或者在概念网络建设时并没有生成,而是在自然语言的理解过程中逐步形成这些连接。
c/存在特征。这些特征表示概念连接中反映关系的肯定、否定、可能、范围、概率、程度、频率、时间、语气等。
另外,本发明还提供了概念网络的生成方法。
概念网络的生成方法:可通过基础定义、生成、扩展定义以及动态形成等几个方面来实现。
基础定义定义基础的概念及概念连接。在实现的技术手段上主要选用XML、JSO格式的配置文件来定义这些概念及概念连接,然后再通过对这些配置文件解析生成概念及概念连接。
生成方法将数据结构、程序设计语言、语义网络/词典/知识库等转换生成为概念及概念连接。实现该转换生成的主程序,即为概念生成引擎。
数据结构
A.包含行列形式、键值对形式两种。行列形式常使用Excel、关系型数据库等来表示和存储,表现为二维形式的数据,有行有列,有预定义的数据模型。键值对形式常使用非关系型数据库存储数据,它不需要预定义结构。
B.生成方法过程:
①概念生成引擎将每个表分别作为一个概念,该表的表名、或指代该表的词作为该概念的词。同时,基础定义的概念ID=object与由这些表生成的概念构成SPECIES种属关系。
②引擎将表每个字段分别作为一个概念,该字段的字段名、或指代该字段的词作为该概念的词。同时,所属表生成的概念与由这些字段生成的概念构成ATTRIBUTE属性关系。
③引擎可将每个字段类型分别作为一个概念。这些概念通常都是无词概念,通过各自的概念识别器来识别词是否为与之匹配的概念。同时,具有对应字段类型的字段所生成的概念与由这些字段类型生成的概念构成VALUE值关系。
④当然,对于一些字段它们的值带有一定的约束性或特殊性,例如字典数据,可以自定义无词概念。
⑤另外,有些字段与其它表构成的外键关系,那么由这些字段类型生成的概念与其关联的主表所生成的概念构成VALUE值关系。
C.通过对象数据管理技术实现。对象数据管理技术使用XML格式的对象模板文件来定义对象结构,并与数据库表建立映射关系。概念生成引擎可根据对象模板XML生成概念及概念连接。生成方法过程:
①概念生成引擎可将每个对象模板(或称对象)分别作为一个概念,该对象的名称、或指代该对象的词作为该概念的词。同时,基础定义的概念ID=object与由这些对象生成的概念构成SPECIES种属关系。
②引擎可将模板定义的每个属性分别作为一个概念,该属性的字段名、或指代该属性的词作为该概念的词。同时,所属对象生成的概念与由这些属性生成的概念构成ATTRIBUTE属性关系。
③引擎可将每个属性数据类型分别作为一个概念。这些概念通常都是无词概念,通过各自的概念识别器来识别词是否为与之匹配的概念。同时,具有对应数据类型的属性所生成的概念与由这些属性类型生成的概念构成VALUE值关系。当然也可以通过配置对属性值自定义概念。针对对象类型的属性,该属性与类型中指定的对象关联,构成VALUE值关系。针对复合类型的属性,该属性与类型中指定的成员(子属性)构成 PART部件关系。针对结构类型的属性,该属性与类型中指定的成员(子属性)构成ATTRIBUTE属性关系。
程序设计语言
A.程序设计语言的实质是语法规则,概念生成引擎的生成方法就在于对语法规则进行分析并转换生成概念及概念连接。
B.格式化脚本语言GScript也是一种程序设计语言。GScript语言也有语法分析器,可以将代码转换成语法树,同时也可以将语法树转成代码。GScript语言还有一个很重要的特点,就是它可以调用不同的指令函数库解析或编译执行代码生成其它程序设计语言。GScript语言现版本已支持生成以下这些程序设计语言:java、 javascript、html、css、xml、json、text。概念生成引擎根据GScript语法规则、Java语法规则以及目标程序语言的语法规则来生成概念及概念连接。生成方法过程:
①GScript语言语法由指令函数、操作符与运算函数三部分组成。概念生成引擎优选配置方式为GScript 语言语法的指令函数、操作符与运算函数定义一系列概念以及概念连接。配置方法可以使用与基础定义相一致的技术手段。
②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“指令函数-扩展指令”相对应章节一致。
语义网络/词典/知识库
概念网络也是一种语义网络,因此在技术上是可以实现与现有主流的语义网络/词典/知识库相互转换。
扩展定义进一步扩展定义概念及概念连接。在实现的技术手段上可以选用与基础定义一样的技术手段。
动态形成概念及概念连接。例如在自然语言理解过程中动态为概念之间形成连接,或者人为操作为概念添加词、增加概念连接等。
词向量的使用。与概念直接或间接对应的词可以使用词向量替代。概念ID可以直接使用词向量。
最后,本发明提供了概念网络在人工智能语言理解与生成中的应用。
自然语言生成过程:
(1)DEF生成
DEF生成引擎将所要表达的意图生成DEF的方法主要是使用规则,可以通过配置等技术手段来实现这些规则的定义。
①程序设计语言
程序设计语言的实质就是语法规则,而且程序设计语言一般都可以通过语法分析器将代码转成语法树。
那么就可以通过语法分析器将代码转换为语法树,然后再通过DEF生成引擎将语法树转换为DEF。
A.GScript语言也有语法分析器,可将代码转换成语法树。同时GScript语言现版本支持的计算机语言配合相应的语法分析器经过GScript语法分析器可以直接转换为GScript语言,从而可间接的通过DEF 生成引擎基于GScript的语法分析器来转换为DEF。
I GScript语言语法由指令函数、操作符与运算函数三部分组成。DEF生成引擎优选配置方式为GScript
语言语法的指令函数、操作符与运算函数定义一系列DEF。
II Java语言语法包含类、属性、方法、数据类型、枚举、注解等。DEF生成引擎也优选配置与Java
注解来配置与定义DEF生成。其中Java注解使得DEF生成的定义在代码开发过程中即可进行。
III目标程序语言的DEF生成与GScript“指令函数-扩展指令”相对应章节一致。
②DEF衔接
生成的DEF可能会有多个。为了语义表达的连贯、合理,通过衔接手段将各DEF合理的衔接在一起。
衔接手段主要包括:合并、指代、省略、分句、附加、连接、参照等。
i合并:将DEF中局部相同的部分合并在一起,表达了语言的紧凑性;
ii指代:结合上下文会话,用代词等手段转换DEF,起代替或指示人、事物的作用。代词主要是人称代词、指示代词;
iii省略:结合上下文会话,将上文中已表述的DEF省略,以避免语义表达重复,突出重点。通常跟指代手段一起使用;
iv分句:将DEF中层级太长的部分分离出来,作为从句补充。通常与指代、连接手段一起使用;
v附加:通过为DEF附加助词、叹词等,让语句不会发生歧义,更加通顺、表达情感;
vi连接:通过连接与介引DEF连接DEF。这在合并手段中经常使用;
vii参照:结合上下文会话,以上文一些DEF作为参照点,使用比较、比拟、排除等手段转换DEF。
(2)句法分析
A.生成原则
根据DEF类型不同,其生成句子的原则也不相同,如下所述:
1.如果DEF已经被指代生成模板或规则,则按照该模板或规则生成词序列;
2.否则按如下处理:
I一般DEF,选词
II带有附加的DEF分
i选词,下述称为中心词
ii左附加DEF选出的词依次在中心词的左边
iii右附加DEF选出的词依次在中心词的右边
iv标点符号DEF选出的词在最右边
III带有附加分与限定的DEF
i选词,下述称为中心词
ii左附加DEF选出的词依次在最左边
iii限定DEF选出的词依次在中心词的左边
iv右附加DEF选出的词依次在中心词的右边
v标点符号DEF选出的词在最右边
IV连接与介引DEF
i开始DEF选出的词在左边,下述称为中心词
ii结束DEF选出的词依次在右边
iii如果DEF是表连接的,组合类型的概念若是带有DEF的词概念则根据DEF位置连接中心词与结束DEF选出的词否则默认在中心词的右边
V主谓宾DEF
i选词,下述称为中心词
ii主语DEF选出的词在中心词的左边,下述称为主语DEF词
iii宾语DEF选出的词在中心词的右边,下述称为宾语DEF词
iv兼语或宾补DEF选出的词,在中文下在主语DEF词与宾语DEF词之间,在英文下在宾语DEF 词的右边
v补语DEF选出的词依次在最右边
B.生成方法
句法分析的目的就是在于将DEF转换为符合人类语言习惯的句子。常见方法有基于生成模板与规则的,
还有基于N-gram语言模型、神经网络等统计模型的等。
I切分词方法
DEF生成时可能会有多个规则,例如上述示例语句③,句子的生成会有多种选择。同时一个概念又可直接或间接对应多个词。
句子生成就是要在这些有序的词里选择最好的词序列。切分词算法是在切分出的词里面找到最好的分词结果,这个分词结果就是词序列。常使用二元模型(Bigram)、最短距离等算法来实现。
II依存句法分析方法
DEF之间依存取决于依存关系,因此DEF的依存词与中心词存在着依存关系。依存句法分析的目的就是为分词结果找到一条最好的依存树。这里,仍然使用基于转移的依存句法分析法,同时也需要一个分类器。
与自然语言理解的依存句法分析不同的是,分类器输入一个状态,并设定输出最可能的动作是依存关系对应的动作,然后记录每个词获得的分值。经过一系列转移动作,最终达到终止状态,也就可以得到词序列。这里可能会产生很多依存树,可以通过算法从中获取最优结果。
其关键思想在于:分类器在输入状态与输出动作都相同的前提下,由于词特征不同导致传入神经网络模型的特征信息也不同,所以每个词得到转移动作分值也就不同。
上下文会话
上下文会话贯穿整个生成过程。同一个理解与生成的过程中的上下文会话是同一个。生成会话由上下文会话产生。单轮/多轮对话中的生成会话还依存于当前运行会话。生成会话作用在生成环节。在生成会话结束前会将包含的数据(例如DEF队列等)合并到上下文会话,以便于下文的生成或下轮对话的分析、运行。
本发明基于概念网络提出了一种全新的自然语言生成方法,其更大的意义在于全面讲述如何将要表达的意图、程序设计语言生成自然语言语句。本文还讲述了多种语言间转换的方法。本文所述的方法及系统为机器生成自然语言提供了一种方法论,更是提供了一种全新的解决方案。
附图说明
图1将所要表达的意图生成自然语言过程图
图2将程序代码通过语法分析器与DEF生成引擎生成DEF
图3将GScript代码通过GScript语法分析器与DEF生成引擎生成DEF
图4"create(null,(be(name,@var.name="a",ude1)var))"DEF按照生成原则生成词序列
图5多种语言间转换的方法过程图
具体实施方式
下面结合附图对本发明的实施例进行进一步详细说明:
用自然语言文本来表达给定的意图、思想等,即为自然语言生成。本文讲述的自然语言生成过程,如图1,总的来讲,有以下一些特点:
■基于概念网络实现;
■依次经过DEF生成、句法分析等多道环节,使得能够生成与意图相符的自然语言语句,满足生成篇章 /段落以及实现单轮/多轮对话的需要;
■上下文会话贯穿整个生成过程;
1.1.实现过程
1.1.1.DEF生成
概念定义(DEF)是概念的具体定义或实现,是程序运行过程中产生的对象。DEF生成引擎将所要表达的意图生成DEF的方法主要是使用规则,可以通过配置等技术手段来实现这些规则的定义。在实现的技术手段上可以使用DEF的表述形式来快速配置与定义DEF的生成。结合DEF表述形式转换器可以将这些表述形式转换为DEF。
为了便于描述各类型DEF的定义,可以使用如下形式来表述DEF:
■一般DEF
Composition,即直接使用概念编号(ID)来表示即可
■带有附加的DEF
Ad(Composition,[Lad,...,...],[Rad,...,...],[Wp,...,...])
其中,[Lad,...,...]为一系列左附加DEF,[Rad,...,...]为一系列右附加DEF,[Wp,...,...]为一系列标点符号附加DEF
■带有附加与限定的DEF
Spec(Composition,[Spec,...,...],[Lad,...,...],[Rad,...,...],[Wp,...,...])
其中,[Spec,...,...]为一系列限定DEF,[Lad,...,...]为一系列左附加DEF,[Rad,...,...]为一系列右附加DEF, [Wp,...,...]为一系列标点符号附加DEF
■连接与介引DEF
Conj-Kind(Begin,[End,...,...])
其中,Begin为开始DEF,[End,...,...]为一系列结束DEF,Kind为连接或介引类型
■主谓宾DEF
Action(Subject,Verb,Object,DoubleObject,[Compl,..,...])
其中,Subject为主语DEF,Verb为动作DEF,Object为宾语DEF,DoubleObject为兼语或宾补DEF, [Compl,..,...]为一系列补充DEF。
DEF表述形式转换器可以实现将上述表述形式转换为DEF,同时也可将DEF转换为表述形式。
√例如在概念定义DEF分析与运行过程中表述需要必要依存与可选依存条件的意图:
Figure RE-GDA0003896738680000051
√例如DEF运行的结果,需要进一步提示用户或者与用户对话:
Figure RE-GDA0003896738680000052
Figure RE-GDA0003896738680000061
1.1.1.1.程序设计语言
本文已在前面章节讲述过程序设计语言的实质就是语法规则,而且程序设计语言一般都可以通过语法分析器将代码转成语法树。那么就可以通过语法分析器将代码转换为语法树,然后再通过DEF生成引擎将语法树转换为DEF,如图2。
GScript语言也有语法分析器,可将代码转换成语法树。同时GScript语言现版本支持的计算机语言配合相应的语法分析器经过GScript语法分析器可以直接转换为GScript语言,从而也可间接的通过DEF生成引擎基于GScript的语法分析器来转换为DEF。
本文在下节主要讲述有关GScript语言的生成方法。而其它多数程序设计语言例如JAVA、HTML、JS、CSS、 HTML、JSON、XML等其方法与此基本一致,不再一一详述。
1.1.1.1.1.GScript语言
1.1.1.1.1.1.GScript/Java语法规则
具体见前面章节“GScript语法规则”、“Java语法规则”。
1.1.1.1.1.2.DEF生成引擎
DEF生成引擎根据GScript语法规则、Java语法规则以及目标程序语言的语法规则来生成DEF,如图3。
1.1.1.1.1.2.1.GScript
DEF生成引擎优选配置方式为GScript语言语法的指令函数、操作符与运算函数定义一系列DEF。
■指令函数
◆基本指令
Figure RE-GDA0003896738680000062
Figure RE-GDA0003896738680000071
Figure RE-GDA0003896738680000081
◆扩展指令
●TEXT
Figure RE-GDA0003896738680000082
●JSON
Figure RE-GDA0003896738680000083
●XML
Figure RE-GDA0003896738680000084
Figure RE-GDA0003896738680000091
●HTML
Figure RE-GDA0003896738680000092
●CSS
Figure RE-GDA0003896738680000101
●JS(JAVASCRIPT)
Figure RE-GDA0003896738680000102
■操作符
Figure RE-GDA0003896738680000103
Figure RE-GDA0003896738680000111
■运算函数
Figure RE-GDA0003896738680000112
Figure RE-GDA0003896738680000121
1.1.1.1.1.2.2.Java
有关JAVA语法已在前面章节讲述。
也优选配置与Java注解来配置与定义DEF生成。其中Java注解使得DEF生成的定义在代码开发过程中即可进行。
√例如Java注解com.onegrid.grid.platform.nlp4.impl.generation.annotation.MethodGeneration见图4,图中所示注解中的DEF 生成表述形式statement可以使用DEF表述形式转换器转换成相应的DEF。
√例如
Figure RE-GDA0003896738680000122
1.1.1.1.1.2.3.Html
有关HTML语法已在前面章节讲述。生成方法见前一节GScript“指令函数-扩展指令-HTML”。
1.1.1.1.1.2.4.Css
有关CSS语法已在前面章节讲述。生成方法见前一节GScript“指令函数-扩展指令-CSS”。
1.1.1.1.1.2.5.Xml
有关XML语法已在前面章节讲述。生成方法见前一节GScript“指令函数-扩展指令-XML”。
1.1.1.1.1.2.6.Json
有关JSON语法已在前面章节讲述。生成方法见前一节GScript“指令函数-扩展指令-JSON”。
1.1.1.1.1.2.7.Js(Javascript)
有关Javascript语法已在前面章节讲述。
√例如
Figure RE-GDA0003896738680000128
部分生成方法见前一节GScript“指令函数-扩展指令-JS(JAVASCRIPT)”、“运算函数-扩展运算函数-JS (JAVASCRIPT)”。
1.1.1.2.DEF衔接
生成的DEF可能会有多个。为了语义表达的连贯、合理,通过衔接手段将各DEF合理的衔接在一起。衔接手段主要包括:合并、指代、省略、分句、附加、连接、参照等。
■合并
指将DEF中局部相同的部分合并在一起,表达了语言的紧凑性。
√例如多个不带兼语或宾补DEF的主谓宾DEF的合并规则:
a仅主语DEF概念相同;
Figure RE-GDA0003896738680000123
b仅主语与谓语DEF概念相同;
Figure RE-GDA0003896738680000124
c仅主语与谓语与补语DEF概念相同;
Figure RE-GDA0003896738680000125
d仅补语DEF概念不同;
Figure RE-GDA0003896738680000126
e仅谓语与补语DEF概念相同;
Figure RE-GDA0003896738680000127
f仅谓语与宾语与补语DEF概念相同;
Figure RE-GDA0003896738680000131
g仅主语与宾语DEF概念相同;
Figure RE-GDA0003896738680000132
h仅主语与宾语与补语DEF概念相同;
Figure RE-GDA0003896738680000133
√上述示例语句②“创建用户”
Figure RE-GDA0003896738680000134
■指代
结合上下文会话,用代词等手段转换DEF,起代替或指示人、事物的作用。代词主要是人称代词、指示代词。
√例如
Figure RE-GDA0003896738680000135
■省略
结合上下文会话,将上文中已表述的DEF省略,以避免语义表达重复,突出重点。通常跟指代手段一起使用。
√上述示例中Spec(varAction(namebe@varname="a"))→Spec(varthis),即表示省略了重述描述“名词是a”
Figure RE-GDA0003896738680000136
■分句
指将DEF中层级太长的部分分离出来,作为从句补充。通常与指代、连接手段一起使用。
√例如:
Figure RE-GDA0003896738680000137
■附加
通过为DEF附加助词、叹词等,让语句不会发生歧义,更加通顺、表达情感。
√例如:
Figure RE-GDA0003896738680000138
■连接
通过连接与介引DEF连接DEF。这在合并手段中经常使用。
√例如:
Figure RE-GDA0003896738680000139
Figure RE-GDA0003896738680000141
■参照
结合上下文会话,以上文一些DEF作为参照点,使用比较、比拟、排除等手段转换DEF。
1.1.1.3.上下文生成
上下文生成会话中使用“先进后出”队列存储生成DEF的有效的DEF。这种情况主要发生在单轮/多轮对话中、程序设计语言代码生成语句中。通常在单轮/多轮对话中这些DEF还带有待匹配的依存条件,用于判断用户的回复是否能满足这些依存条件并做出相应的响应。
√例如示例语句①“创建变量”:
生成DEF Action(name,be|equal,what)
必要依存条件 name←→be←→@var.name
在理解过程中上下文会话会合并存储分析会话、运行会话包含的数据,在生成过程中上下文会话会合并存储生成会话中包含的数据。这些数据为DEF衔接例如指代、省略、参照等手段提供了关键的依据。
1.1.2.句法分析
1.1.2.1.生成原则
根据DEF类型不同,其生成句子的原则也不相同,如下所述:
■如果DEF已经被指代生成模板或规则,则按照该模板或规则生成词序列;
■否则按如下处理:
◆一般DEF,根据概念选词
DEF Composition
词序 WordComposition
◆带有附加的DEF
●根据概念选词,下述称为中心词
●左附加DEF选出的词依次在中心词的左边
●右附加DEF选出的词依次在中心词的右边
●标点符号DEF选出的词在最右边
DEF Ad(Composition,[Lad,...,...],[Rad,...,...],[Wp,...,...])
词序 WordLad......WordCompositionWordRad......WordWp......
◆带有附加与限定的DEF
●根据概念选词,下述称为中心词
●左附加DEF选出的词依次在最左边
●限定DEF选出的词依次在中心词的左边
●右附加DEF选出的词依次在中心词的右边
●标点符号DEF选出的词在最右边
DEF Spec(Composition,[Spec,...,...],[Lad,...,...],[Rad,...,...],[Wp,...,...])
词序 WordLad......WordSpec......WordCompositionWordRad......WordWp......
◆连接与介引DEF
●开始DEF选出的词在左边,下述称为中心词
●结束DEF选出的词依次在右边
●如果DEF是表连接的,组合类型的概念若是带有DEF的词概念则根据DEF位置连接中心词与结束DEF选出的词否则默认在中心词的右边
DEF Conj-Kind(Begin,[End,...,...])
词序 WordBeginWordKindWordEnd......
◆主谓宾DEF
●根据概念选词,下述称为中心词
●主语DEF选出的词在中心词的左边,下述称为主语DEF词
●宾语DEF选出的词在中心词的右边,下述称为宾语DEF词
●兼语或宾补DEF选出的词,在中文下在中心词与宾语DEF词之间,在英文下在宾语DEF词的右边
●补语DEF选出的词依次在最右边
Figure RE-GDA0003896738680000142
1.1.2.2.生成方法
句法分析的目的就是在于将DEF转换为符合人类语言习惯的句子。常见方法有基于生成模板与规则的,还有基于N-gram语言模型、神经网络等统计模型的等。
1.1.2.2.1.切分词方法
DEF生成时可能会有多个规则,例如上述示例语句③,句子的生成会有多种选择。同时一个概念又可直接或间接对应多个词。
句子生成就是要在这些有序的词里选择最好的词序列。切分词算法是在切分出的词里面找到最好的分词结果,这个分词结果就是词序列。常使用二元模型(Bigram)、最短距离等算法来实现。
√例如
Figure RE-GDA0003896738680000151
1.1.2.2.2.依存句法分析方法
DEF之间依存取决于依存关系,因此DEF的依存词与中心词存在着依存关系。依存句法分析的目的就是为分词结果找到一条最好的依存树。这里,仍然使用基于转移的依存句法分析法,同时也需要一个分类器。
与自然语言理解的依存句法分析不同的是,分类器输入一个状态,并设定输出最可能的动作是依存关系对应的动作,然后记录每个词获得的分值。经过一系列转移动作,最终达到终止状态,也就可以得到词序列。
这里可能会产生很多依存树,可以通过算法从中获取最优结果。算法可用前面章节概念网络转移动作补偿提到的算法,不同的是:算法中提到“依存弧间的距离”在这些依存树中都是一样的,且都设定“命中概念间转移动作”(即命中值都为1)。
其关键思想在于:分类器在输入状态与输出动作都相同的前提下,由于词特征不同导致传入神经网络模型的特征信息也不同,所以每个词得到转移动作分值也就不同。
√例如上述示例中的生成DEF
Figure RE-GDA0003896738680000152
1.1.3.上下文会话
上下文会话贯穿整个生成过程。同一个理解与生成的过程中的上下文会话是同一个。
■生成会话
生成会话由上下文会话产生。单轮/多轮对话中的生成会话还依存于当前运行会话。生成会话作用在生成环节,它的生命周期从DEF生成开始直到句法分析结束为止。
在生成会话结束前会将包含的数据(例如DEF队列等)合并到上下文会话,以便于下文的生成或下轮对话的分析、运行。
四、自然语言生成
如图1,用自然语言文本来表达给定的意图、思想等,即为自然语言生成。本文讲述的自然语言生成过程,总的来讲,有以下一些特点:
■基于概念网络;
■依次经过DEF生成、句法分析等多道环节,使得能够生成与意图相符的自然语言语句,满足生成篇章/ 段落以及实现单轮/多轮对话的需要;
■上下文会话贯穿整个生成过程;
4.1.实现过程
4.1.1.DEF生成
根据所要表达的意图生成DEF的方法主要是使用规则。可以通过配置等技术手段来实现定义。
√例如在概念定义DEF分析与运行过程中表述需要必要依存与可选依存条件的意图:
Figure RE-GDA0003896738680000161
√例如DEF运行的结果,需要进一步提示用户或者与用户对话:
Figure RE-GDA0003896738680000162
Figure RE-GDA0003896738680000171
4.1.1.1.程序设计语言
本文已在前面章节讲述过程序设计语言的实质就是语法规则,而且程序设计语言一般都可以通过语法分析器将代码转成语法树。那么就可以通过语法分析器将代码转换为语法树,然后再通过DEF生成引擎将语法树转换为DEF,如图2。
GScript语言也有语法分析器,可以将代码转换成语法树。同时,GScript语言现版本支持的计算机语言配合相应的语法分析器经过GScript语法分析器可以直接转换为GScript语言,如图3。
本文在下节主要讲述有关GScript语言的生成策略。而其它多数程序设计语言例如JAVA、HTML、JS、CSS、 HTML、JSON、XML等其策略与此基本一致,因此不在这里一一详述。
4.1.1.1.1.GScript语言
4.1.1.1.1.1.GScript/Java语法规则
具体见前面章节“GScript语法规则”、“Java语法规则”。
4.1.1.1.1.2.DEF生成引擎
4.1.1.1.1.2.1.GScript
4.1.1.1.1.2.2.Java
有关JAVA语法已在前面章节讲述。
4.1.1.1.1.2.3.Html
有关HTML语法已在前面章节讲述。生成方法见前一节GScript“指令函数-扩展指令-HTML”。
4.1.1.1.1.2.4.Css
有关CSS语法已在前面章节讲述。生成方法见前一节GScript“指令函数-扩展指令-CSS”。
4.1.1.1.1.2.5.Xml
有关XML语法已在前面章节讲述。生成方法见前一节GScript“指令函数-扩展指令-XML”。
4.1.1.1.1.2.6.Json
有关JSON语法已在前面章节讲述。生成方法见前一节GScript“指令函数-扩展指令-JSON”。
4.1.1.1.1.2.7.Js(Javascript)
有关Javascript语法已在前面章节讲述。
部分生成方法见前一节GScript“指令函数-扩展指令-JS(JAVASCRIPT)”、“运算函数-扩展运算函数-JS (JAVASCRIPT)”。
4.1.1.2.DEF衔接
生成的DEF可能会有多个。为了语义表达的连贯、合理,通过衔接手段将各DEF合理的衔接在一起。衔接手段主要包括:合并、指代、省略、分句、附加、连接、参照等。
■合并
指将DEF中局部相同的部分合并在一起,表达了语言的紧凑性。
√例如多个不带兼语或宾补DEF的主谓宾DEF的合并规则:
a仅主语DEF概念相同;
Figure RE-GDA0003896738680000172
Figure RE-GDA0003896738680000181
b仅主语与谓语DEF概念相同;
Figure RE-GDA0003896738680000182
c仅主语与谓语与补语DEF概念相同;
Figure RE-GDA0003896738680000183
d仅补语DEF概念不同;
Figure RE-GDA0003896738680000184
e仅谓语与补语DEF概念相同;
Figure RE-GDA0003896738680000185
f仅谓语与宾语与补语DEF概念相同;
Figure RE-GDA0003896738680000186
g仅主语与宾语DEF概念相同;
Figure RE-GDA0003896738680000187
h仅主语与宾语与补语DEF概念相同;
Figure RE-GDA0003896738680000188
√上述示例语句②“创建用户”
Figure RE-GDA0003896738680000189
■指代
结合上下文会话,用代词等手段转换DEF,起代替或指示人、事物的作用。代词主要是人称代词、指示代词。
√例如
Figure RE-GDA00038967386800001810
■省略
结合上下文会话,将上文中已表述的DEF省略,以避免语义表达重复,突出重点。通常跟指代手段一起使用。
√上述示例中(be(name,@var.name="a",ude1))var→(this)var,即表示省略了重述描述“名词是a”
Figure RE-GDA0003896738680000191
■分句
指将DEF中层级太长的部分分离出来,作为从句补充。通常与指代、连接手段一起使用。
√例如:
Figure RE-GDA0003896738680000192
■附加
通过为DEF附加组词、叹词等,让语句不会发生歧义,更加通顺、表达情感。
√例如:
Figure RE-GDA0003896738680000193
■连接
通过连接与介引DEF连接DEF。这在合并手段中经常使用。
√例如:
Figure RE-GDA0003896738680000194
■参照
结合上下文会话,以上文一些DEF作为参照点,使用比较、比拟、排除等手段转换DEF。
DEF衔接手段在技术上除了基于规则实现外,当然还可以通过神经网络例如基于关键词的seq2seq方法来实现。
4.1.1.3.上下文生成
上下文生成会话中使用“先进后出”队列存储生成DEF的有效的DEF。这种情况主要发生在单轮/多轮对话中、程序设计语言代码生成语句中。通常在单轮/多轮对话中这些DEF还带有待匹配的依存条件,用于判断用户的回复是否能满足这些依存条件并做出相应的响应。
√例如示例语句①“创建变量”:
Figure RE-GDA0003896738680000201
在理解过程中上下文会话会合并存储分析会话、运行会话包含的数据,在生成过程中上下文会话会合并存储生成会话中包含的数据。这些数据为DEF衔接例如指代、省略、参照等手段提供了关键的依据。
4.1.2.句法分析
4.1.2.1.生成原则
根据DEF类型不同,其生成句子的原则也不相同,如下所述:
■如果DEF已经被指代生成模板或规则,则按照该模板或规则生成词序列;
■否则按如下处理:
◆一般DEF,选词
◆带有附加的DEF
●选词,下述称为中心词
●左附加DEF选出的词依次在中心词的左边
●右附加DEF选出的词依次在中心词的右边
●标点符号DEF选出的词在最右边
◆带有附加与限定的DEF
●选词,下述称为中心词
●左附加DEF选出的词依次在最左边
●附加DEF选出的词依次在中心词的左边
●右附加DEF选出的词依次在中心词的右边
●标点符号DEF选出的词在最右边
◆连接与介引DEF
●开始DEF选出的词在左边,下述称为中心词
●结束DEF选出的词依次在右边
◆主谓宾DEF
●选词,下述称为中心词
●主语DEF选出的词在中心词的左边,下述称为主语DEF词
●宾语DEF选出的词在中心词的右边,下述称为宾语DEF词
●兼语或宾补DEF选出的词,在中文下在主语DEF词与宾语DEF词之间,在英文下在宾语DEF 词的右边
●补语DEF选出的词依次在最右边
4.1.2.2.生成方法
句法分析的目的就是在于将DEF转换为符合人类语言习惯的句子。常见方法有基于生成模板与规则的,还有基于N-gram语言模型、神经网络等统计模型的等。
4.1.2.2.1.切分词方法
DEF生成时可能会有多个规则,例如上述示例语句③,句子的生成会有多种选择。同时一个概念又可直接或间接对应多个词。
句子生成就是要在这些有序的词里选择最好的词序列。切分词算法是在切分出的词里面找到最好的分词结果,这个分词结果就是词序列。常使用二元模型(Bigram)、最短距离等算法来实现。
√例如
Figure RE-GDA0003896738680000211
4.1.2.2.2.依存句法分析方法
DEF之间依存取决于依存关系,因此DEF的依存词与中心词存在着依存关系。依存句法分析的目的就是为分词结果找到一条最好的依存树。这里,仍然使用基于转移的依存句法分析法,同时也需要一个神经网络分类器。
与依存句法分析不同的是,分类器输入一个状态,并设定输出最可能的动作是依存关系对应的动作,然后记录每个词获得的分值。经过一系列转移动作,最终达到终止状态,也就可以得到词序列。这里可能会产生很多依存树,可以通过算法从中获取最优结果。算法可用前面章节概念网络转移动作补偿提到的算法,不同的是:算法中提到“依存弧间的距离”在这些依存树中都是一样的,且都设定“命中概念间转移动作”(即命中值都为1)。
其关键思想在于:分类器在输入状态与输出动作都相同的前提下,由于词特征不同导致传入神经网络模型的特征信息也不同,所以每个词得到转移动作分值也就不同。
√例如上述示例中的生成DEF
Figure RE-GDA0003896738680000212
4.1.2.2.3.其它方法
例如利用机器翻译方法,实现输入源(DEF)到输出目标(句子)的翻译。
4.1.3.上下文会话
上下文会话贯穿整个生成过程。同一个理解与生成的过程中的上下文会话是同一个。
■生成会话
生成会话由上下文会话产生。单轮/多轮对话中的生成会话依存于当前运行会话。生成会话作用在生成环节,它的生命周期从DEF生成开始直到句法分析结束为止。
在生成会话结束前会将包含的数据(例如DEF队列等)合并到上下文会话,以便于下文的生成或下轮对话的分析、运行。
五、多种语言间转换
多种语言间转换的方法是将上述自然语言理解与生成方法进行组合,如下图5所示。
语言1的篇章/段落、单论/多轮对话在语言1的概念网络下由切分句切分成句子,然后每个句子依次经过切分概念词、包含DEF分析以及概念定义DEF分析的依存句法分析等环节分析成DEF,而后基于语言2的概念网络将DEF依次经过DEF生成、句法分析等环节生成句子,最终这些句子构成语言2的篇章/段落、单论 /多轮对话。
这里的DEF生成包含DEF转换功能。DEF转换目的在于将在语言1的概念网络下生成的DEF转换为语言2的概念网络下的DEF。转换方法可以通过规则(例如两个概念网络之间的规则映射)与统计(例如DEF间序列到序列)的方式实现。转换后的DEF再经过DEF衔接等手段处理,而后再经过句法分析生成语言2的句子。
六、结束语
在以后本文还将深入阐述运用神经网络和深度学习算法实现:构建通用概念网络;不用句法分析而直接从分词到DEF分析甚至一步到概念定义DEF分析;改进DEF衔接、句法分析等优化生成句子的流利度;DEF 之间、DEF与语言之间实现序列到序列;等等。
本申请基于概念网络实施如下:
概念网络(Concept Network)是定义事物概念及概念间语义关系的系统,其本质上是一种语义网络,它为本文所述的自然语言理解与生成提供语义基础。下述文中的“自然语言词”(或“词”)泛指自然语言的字(符)、词、短语(词组)。
1.1.定义
概念网络包含两个部分,一是概念,二是概念连接。
1.1.1.概念
概念都有一个唯一的编号ID,以标识概念网络中概念的唯一性。概念ID可以是任何一种形式,例如字符串、数字、词向量等。概念分为三类:词概念(WORD),无词概念(NON_WORD),未知概念(UNKNOWN)。
1.1.1.1.词概念
表示存在自然语言词与此概念直接相对应,同时也存在实现该概念定义DEF的转换器。此概念也称为直接概念。
概念定义DEF是指概念的具体定义或实现,也可称为概念实例。它不同于知网HowNet所述知识词典中的DEF,两者不应混淆。一个自然语言词可以与一个或多个概念相对应。有些词存在多个词性,因此也可以设定特定词性的词与一个或多个概念相对应。
√例如概念ID=unit,其可有词“单位”与之对应。语句“数量的单位是?”,“单位”即为该概念。
上述示例中的词概念不带有任何关系成分,称为一般词概念。
词概念还包括:
◆带有关系成分的词概念
这类概念带有关系成分,即词的两侧或一侧作为该概念的关系成分。
√例如概念ID=selt,可有带有成分的词“{0}或者{1}”,语句“苹果或者西瓜”,“或者”的两侧“苹果”、“西瓜”为该概念的关系成分,表示选择;
同时通过关系成分可以间接实现自然语言中所要表达的语义关系。示例如下:
Figure RE-GDA0003896738680000221
Figure RE-GDA0003896738680000231
◆组合词概念
这类概念是由多个词联合组成的,至少这些词之间的是该概念的关系成分。
√例如概念ID=eban,可有组合词“宁可{1}也不{2}”,语句“我宁可累死也不劳烦你”,“宁可”的右侧与“也不”的右侧都为该概念的关系成分,表示取舍或选取,先取后舍、先舍后取。
◆词集合概念
这类概念,表示有多个词、或者带有成分的词、或者组合词与该概念相对应。
√例如概念ID=caru,其可有"因为{1}所以{2}"、"之所以{2}是因为{1}"、"既然{1}就{2}"、"因{1}"、"因为{1}"、" 由于{1}"、"为{1}"、"为了{1}"、"为着{1}"、"因此{2}"、"以致{2}"、"所以{2}"、"之所以{2}"、"为了{1}起见"、"以便{1}"等词相对应,表示因果,前提出原因、目的,后说明结果;例如概念ID=create,其可有"定义"、"创建"、"新建"、"建立"、"构建"、"搭建"、"构造"、"初始"、"建造"、"建"、"造"等词相对应,表示创建动作。
1.1.1.2.无词概念
表示不存在自然语言词与此概念直接相对应,但通常存在概念识别器,使得自然语言词能与概念之间间接相对应。此概念也称为间接概念。
√例如概念ID=@time,用于指时间、日期,例如词“20150712”、“明天”、“前些天”、“某一天”。需要借助概念识别器来识别词是否为时间概念。
有些无词概念表达了某一类概念,这一类概念就称为本体概念。因此无词概念分为不带本体概念的无词概念与带有本体概念的无词概念。例如:
◆带有本体概念的无词概念
这类概念,通常用于描述一类概念的词,它有具体词概念与之相对应。
√例如概念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 对应词则可以是“时间”、“日期”。
1.1.1.3.未知概念UNKNOWN
表示无法为该概念生成概念定义DEF,在自然语言处理过程中将被忽略。
这类未知概念还包括:
◆未知词概念
这类概念有单个自然语言词与之相对应。
◆未知词集合概念
这类概念存在多个自然语言词与之相对应。
1.1.2.概念连接
1.1.2.1.基本
即概念间的语义关系链,用来描述概念间的多层语义关系。例如以下几种语义关系:
■种属(SPECIES)
类属-属种的关系,也包含上下位关系。特定性较强的词叫做概括性较强的词的下位词,概括性较强的词叫做特定性较强的词的上位词。动作之间也存在此关系。
√例如事物thing——事件event|物体object;例如对象object——新闻news|用户user|部门department;例如红色red——猩红色vermilion|胭脂红carmine|绯红色crimson。
■部件(PART)
整体-部件的关系。
√例如数量quantity——数字number|单位unit;例如时间time——年year|月month|日day|时hour|分minute| 秒second|毫秒millisecond;例如人human——头head|身体body。
■属性(ATTRIBUTE)
宿主-属性、宿主-领属、宿主-特征、材料-成品等的关系。宿主也包含动作。
√例如变量var——名称name|值value;例如新闻news——标题title|正文content|附件attachments|作者author;例如人品personality——好坏goodbad;例如格式化format——模式pattern。
■值(VALUE)
属性-值、实体-值的关系。
√例如数量quantity——@quantity;例如标题title——@string;例如颜色color——@color。
■主谓(SV)
动作来源-动作的关系。
√例如我me——创建create|修改modify|删除delete|查询query|发布publish;例如@number——加add|减sub。
■谓宾(VO)
动作-动作目标的关系。
√例如创建create——变量var;例如发布publish——新闻news。
■相关(R)
相关关系,其有同义反义下义不相容有关五类子关系。其中,下义指一个概念的语义在另一个概念的语义之中,不相容为从一个概念的语义中排除另一个概念的语义,有关指两个概念有关联但不清楚两者之间具体的关系。
√例如冷cold——热hot;例如好good——坏bad。
一个概念可以跟多个概念形成固有的一种或多种的语义关系,同时概念间的语义关系可以是多层的。
1.1.2.2.动态形成
一个概念可以跟多个概念在自然语言的理解过程中可以逐步形成新的概念连接。
√例如语句“我有个一个包”表达了我me跟包bag之间形成了ATTRIBUTE(属性宿主与领属)的连接,然而在表述该语句之前我me跟包bag之间可能还没有形成这种连接
1.1.2.3.特征
表示概念连接中反映关系的肯定否定可能范围概率程度频率时间语气等。
√例如语句“我没有包”表达了我me跟包bag之间形成了ATTRIBUTE(属性宿主与领属)的连接,但此连接的特征是否定;例如语句“我可能没有包”其表达的连接特征除了否定外还有可能;例如语句“我百分之80可能没有包”其表达的连接特征除了否定可能外还有概率
1.2.建设方法
概念网络的建设可通过基础定义、生成、扩展定义以及动态形成等几个方面来实现。
1.2.1.基础定义
定义基础的概念及概念连接。在实现的技术手段上主要选用XML、JSON格式的配置文件来定义这些概念及概念连接,然后再通过对这些配置文件解析生成概念及概念连接。但也不排除使用其它格式的配置文件来实现。
√例如概念配置文件concepts/base1.json、concepts/action1.json,概念连接配置文件connectivities/base1.json、connectivities/action1.json。
1.2.2.生成
将数据结构、程序设计语言、语义网络/词典/知识库等转换生成为概念及概念连接。实现该转换生成的主程序,即为概念生成引擎。
1.2.2.1.数据结构
■结构化数据
结构化数据,行列形式,是指可以使用Excel、关系型数据库等来表示和存储,表现为二维形式的数据,有行有列,有预定义的数据模型。在结构化数据存储定义过程中,使用表来表示处理数据和建立Excel、关系型数据库及应用程序等的基本单元。表的“列”常称为“字段”。每个字段由若干按照某种界限划分的相同数据类型的数据项组成。就像“通讯录”数据库中,“姓名”、“联系电话”等这些都是表中所有行共有的属性,所以把这些列称为“姓名”字段和“联系电话”字段。而存放在表行列交叉处的数据叫做“值”,它是最基本的存储单元。字段类型定义了可存储值的数据类型。
√例如Excel字段类型(在单元格格式中定义)有:数值、货币、日期、时间、文本等;例如Microsoft Access字段类型有:Text、Byte、Integer、Long、Single、Double、Date/Time等;例如MySQL字段类型有:CHAR、VARCHAR、TINYTEXT、 TEXT、MEDIUMTEXT、INT、BIGINT、FLOAT、DOUBLE、DATE、DATETIME等;
在关系型数据库,对于一个表定义了一个主键,则表示可以为通过该键唯一地表示表中每一记录。外键则表示了两个关系之间的联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。
●关系模型指的是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。关系模型中常用的概念:关系——可理解为一张二维表,每个关系都具有一个关系名,即表名;元组——可理解为二维表中的一行,在数据库中常被称为记录;属性——可理解为二维表中的一列,在数据库中常被称为字段;域——属性的取值范围,即数据库中某一列的取值限制;关键字——一组唯一标识元组的属性,数据库中常称为主键,由一个或多个列组成;关系模式——指对关系的描述,其格式为:关系名(属性1,属性2,......,属性N),在数据库中成为表结构;
■非关系型数据库
非关系型数据库,键值对形式,也是一种数据结构化存储方法的集合。它不需要预定义结构,以键值对形式存储数据,因此很容易适应数据类型和结构的变化。常用的非关系型数据库主要有:
√BigTable——BigTable是一个键值映射,但沿用了很多关系型数据库的术语,像表、行、列等;
√HBase——HBase以表的形式存储数据。表有行和列组成。列划分为若干个列族。列族是列的集合,一个列族中包含多个列。Row Key是行键,每一行的ID,这个字段是自动创建的。表中每个列都归属于某个列族。列族是表chema的一部分,必须在使用表之前定义。列名都以列族作为前缀。HBase中通过row和columns确定的为一个存贮单元称为cell。每个cell都保存着同一份数据的多个版本。版本通过64位整型的时间戳来索引。cell中的数据是没有类型的,全部是字节码形式存贮。
√MongoDB——文档是MongoDB中数据的基本单元,类似关系型数据库中的行。文档以键值对方式,其值可以是字符串、整数、数组以及文档等类型,文档的键是用双引号标识的字符串,相当于列名。集合在MongoDB中是一组文档,类似关系型数据库中的数据表。集合是由唯一的命名来标识。不同键值对形式的文档可以在同一个集合中存储。MongoDB中多个文档构成集合,多个集合构成数据库。
1.2.2.1.1.生成方法
概念生成引擎将每个表分别作为一个概念,该表的表名、或指代该表的词作为该概念的词。
√例如表user,生成概念ID=user,可有词“user”、“用户”等;例如表news,生成概念ID=news,可有词“news”、“新闻”、“资讯”等。
同时,基础定义的概念ID=object与由这些表生成的概念构成SPECIES种属关系。
√例如概念ID=object与上述例子中的概念ID=user、ID=news构成SPECIES种属关系。
引擎将表每个字段分别作为一个概念,该字段的字段名、或指代该字段的词作为该概念的词。
√例如表user的字段name,生成概念ID=user.name,可有词“name”、“名称”、“名字”、“名”、“姓名”等;表user的字段sex,生成概念ID=user.sex,可有词“sex”、“性别”等;例如表news的字段title,生成概念ID=news.title,可有词“title”、“标题”、“正标题”等;表news的字段creator,生成概念ID=news.creator,可有词“creator”、“创建者”等;
同时,所属表生成的概念与由这些字段生成的概念构成ATTRIBUTE属性关系。
√例如上述例子中的概念ID=user与概念ID=user.name、ID=user.sex构成ATTRIBUTE属性关系;例如上述例子中的概念 ID=news与概念ID=news.title构成ATTRIBUTE属性关系;
引擎可将每个字段类型分别作为一个概念。这些概念通常都是无词概念,通过各自的概念识别器来识别词是否为与之匹配的概念。
√例如文本字段类型,生成带有本体概念的无词概念ID=@string,本体概念为ID=string;例如数字字段类型,生成带有本体概念的无词概念ID=@number,本体概念为ID=number;例如时间日期字段类型,生成带有本体概念的无词概念 ID=@time,本体概念为ID=time;
同时,具有对应字段类型的字段所生成的概念与由这些字段类型生成的概念构成VALUE值关系。
√例如表user的字段name、表news的字段title类型都为文本字段类型,则概念ID=user.name、ID=news.title与概念 ID=@string构成VALUE值关系;
当然,对于一些字段它们的值带有一定的约束性或特殊性,例如字典数据,可以自定义无词概念。
√例如表user的字段sex,其值是字典数据:男、女,自定义无词概念ID=@sex,可以自定义该概念的概念识别器识别“男”、“女”、“男性”、“女性”等词。同时概念ID=user.name与概念ID=@sex构成VALUE值关系;
另外,有些字段与其它表构成的外键关系,那么由这些字段类型生成的概念与其关联的主表所生成的概念构成VALUE值关系。
√例如表news的字段创建者creator,其与表user构成外键关系,那么概念ID=news.creator与概念ID=user构成VALUE 值关系;
1.2.2.1.2.对象数据管理技术
现有主流的对象关系映射框架,例如Hibernate,为面向对象的领域模型到传统关系型数据库的映射提供了一个使用方便的框架。这样的框架根据上述的生成方法将非常容易扩展实现概念生成引擎。
本节讲述的对象数据管理技术也是一种Java语言下的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装。它把表看作对象,把表的字段看作对象的属性,通过值类型来表达属性部件、表之间的主外键以及主表-子表等关系。它使用XML格式的对象模板文件来定义对象结构,并与数据库表建立映射关系。
√常用的非关系型数据库如HBase、MongoDB已实现了JDBC驱动,使用JDBC就可访问这些数据库。该技术对这些非关系型数据库访问API进行了对象封装,同时针对MongoDB进行了归一化处理,即集合里的文档、内嵌文档使用一致的键值对形式;
对象模板文件支持中文、英文等多语言。它定义了指代该表的词,定义了属性字段名、指代该属性的词,也定义了属性的数据类型。对象模板文件可以在运行时动态被管理,例如用户可以通过数据管理界面新定义对象模板、创建或修改属性等。
√例如对象模板文件department.xml。
对象数据管理技术中定义的数据类型分为简单类型SIMPLE、复合类型COMPLEX、结构类型STRUCTURE三种。
■简单类型SIMPLE
包含有字符串型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、对象类型等。其中,对象类型表示被定义的属性(字段)与当前表或其它表形成外键关系。
√例如上述对象模板文件department.xml中属性上级parent为对象类型,指向当前对象表。
■复合类型COMPLEX
该类型表示某个属性是由多个子属性组成,例如价格可由数值和单位组成。也就是说,属性与子属性之间构成了PART部件关系。
√MongoDB可以使用内嵌文档类型实现;
√例如属性(字段)价格price定义,表示价格由数值和单位组成;
■结构类型STRUCTURE
该类型表示某个属性存在多行记录,即主表-子表的关系。例如一个角色拥有多个授权的功能,那么这个授权功能functions 是角色role的一个属性,且为结构类型。这类属性也由多个子属性组成,属性与子属性之间也构成ATTRIBUTE属性关系。
√MongoDB可以使用数组类型以及其元素为内嵌文档类型实现,表现为文档-内嵌文档的关系;
√例如属性(字段)授权功能functions定义
对象数据管理技术不仅实现了对象/属性定义与数据库表的映射(还包括对象属性数据类型与SQL/NoSQL数据库数据类型的映射),还提供了面向对象的数据查询/管理机制,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
概念生成引擎可根据对象模板XML生成概念及概念连接。
概念生成引擎可将每个对象模板(或称对象)分别作为一个概念,该对象的名称、或指代该对象的词作为该概念的词。同时,基础定义的概念ID=object与由这些对象生成的概念构成SPECIES种属关系。
引擎可将模板定义的每个属性分别作为一个概念,该属性的字段名、或指代该属性的词作为该概念的词。同时,所属对象生成的概念与由这些属性生成的概念构成ATTRIBUTE属性关系。
引擎可将每个属性数据类型分别作为一个概念。这些概念通常都是无词概念,通过各自的概念识别器来识别词是否为与之匹配的概念。同时,具有对应数据类型的属性所生成的概念与由这些属性类型生成的概念构成VALUE值关系。当然也可以通过配置对属性值自定义概念。针对对象类型的属性,该属性与类型中指定的对象关联,构成VALUE值关系。针对复合类型的属性,该属性与类型中指定的成员(子属性)构成PART部件关系。针对结构类型的属性,该属性与类型中指定的成员(子属性) 构成ATTRIBUTE属性关系。
√例如数据类型与概念。
Figure RE-GDA0003896738680000261
Figure RE-GDA0003896738680000271
◇上述示例对象模板文件department.xml生成的概念及概念连接。概念ID=@phone、ID=@fax为自定义的无词概念,它们分别用来识别电话号码、传真。
1.2.2.2.程序设计语言
程序设计语言(Programming Language),是一组用来定义计算机程序的语法规则。它是一种被标准化的交流技巧,用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。
程序设计语言一般都可以通过语法分析器将代码转成语法树以及将语法树转成代码,如下表:
Figure RE-GDA0003896738680000272
另外,模板语言也是一种程序设计语言,它们有自己的语法规则以及模板引擎,能让计算机编译执行,甚至还可以生成其它语言。例如FreeMarker、Velocity,它可以从模板生成HTML、SQL、PostScript、XML、RTF、Java源代码等等。
本文将讲述的格式化脚本语言GScript同样也是一种程序设计语言,目前版本使用Java语言编写。它有双引擎,支持解释执行和编译执行。编译执行时可以将代码编译成Java字节码,快速提升代码运行的效率。它也可以作为模板引擎,如同 FreeMarker、Velocity基于模板来生成文本输出。GScript语言也有语法分析器,可以将代码转换成语法树,同时也可以将语法树转成代码。GScript语言还有一个很重要的特点,就是它可以调用不同的指令函数库解析或编译执行代码生成其它程序设计语言。
1.2.2.2.1.生成方法
程序设计语言的实质是语法规则,那么概念生成引擎的生成方法就在于对语法规则进行分析并转换生成概念及概念连接。本文在下节着重讲述有关GScript语言的生成方法。而其它多数程序设计语言例如JAVA、HTML、JS、CSS、HTML、JSON、XML 等其方法与此基本一致,不再一一详述。
1.2.2.2.2.GScript语言
1.2.2.2.2.1.GScript语法规则
GScript语言语法由指令函数、操作符与运算函数三部分组成。
■指令函数
指令函数的形式为:
<函数名>(<函数参数1>,<函数参数2>,……){
<函数体>
};
函数参数:函数名后面的参数是用()包裹起来,多个参数之间用,隔开。并非所有函数都有参数。如无参数则()可省略。函数体:函数体用{}包裹起来。函数体内部则可书写多个指令函数。并非所有函数都有函数体。如无函数体则{}可省略。函数结束符:使用;作为结束符。
指令函数库包括基本指令与扩展指令。基本指令函数包括代码块(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)等。而扩展指令与目标生成的程序语言相关,在使用时可动态扩展。
■操作符
GScript支持以下字符,以及优先级顺序如下表:
Figure RE-GDA0003896738680000273
Figure RE-GDA0003896738680000281
操作符按功用划分为算术操作符、关系运算符、逻辑操作符、位运算符、三元表达操作符、类型转换操作符、NULL赋值操作符、取值操作符、转义操作符、注释操作符、字符或字符串操作符、保留操作符。
■运算函数
运算函数主要包括数学、字符串、HTML、日期、数组、对象、取值、JSON、调试等运算函数以及扩展的运算函数。
GScript语言有很多高级特性,例如类型推断、常量优化、函数参数化等等。GScript语言现版本使用Java语言编写,并且和Java的交互性很好,可以说是无缝连接。通过取值操作符和取值运算函数即可访问Java常量、类、属性以及调用方法等。
GScript语言现版本已支持以下这些计算机语言,如下表所示:
已支持的计算机语言 指令函数库
java 基本
javascript 基本、javascript扩展
html 基本、html扩展
css 基本、css扩展
xml 基本、xml扩展
json 基本、json扩展
text 基本、text扩展
当然,上述这些计算机语言配合相应的语法分析器经过GScript语法分析器可以直接转换为GScript语言,从而可以间接通过GScript语言来转换生成概念及概念连接。
Figure RE-GDA0003896738680000282
GScript语法分析器分析GScript语言成指令函数树。该指令函数树即为GScript的语法树。反之GScript语法分析器可以将指令函数树生成相应的GScript语言。因此使用GScript语言有一个很大优势:能够将不同的计算机语言生成统一的语法树,便于分析处理。
1.2.2.2.2.2.Java语法规则
Java语言是一种面向对象的程序设计语言。面向对象具有封装,继承和多态等特征。(1)封装:把对象的属性和操作结合在一起,构成一个独立的对象。同过修饰符的使用外部对象不能直接操作对象的属性,只能使用对象提供的服务。(2)继承:即扩展,子类继承父类几乎全部属性和行为,但是继承只能是单继承,一个子类只能有一个直接父类;继承是可以传递的。子类可以当作父类看。(3)多态:通过方法重载和方法重写实现。
类是对象的抽象,而对象是类的实例;对象都有属性和行为两大要素,属性是对对象的静态描述。而行为则体现了对象的功能和行为。一个类的使用是通过对该类实例化来完成的。
属性和行为构成了类的成员。作为类的属性,可以是基本数据类型,也可以是引用类型;方法则体现出了行为;Get和Set 方法作为一种约定被用于提供对属性的操作。一个类可以作为另外的类一个属性,即属性可以是引用性数据。
类的继承即扩展,其关键词是extends。继承准则:总是让子类执行超类可执行的所有行为;确保子类包含超类的所有信息;向子类添加成员,从而定义子类的特有行为;将共同特性迁移到超类上;允许同一超类的不能子类执行相同的行为,但实现方式不同——方法重写。
接口是一群抽象行为的集合。通过接口实现了多重继承。应该这样更好的设计类,让类封装所代表对象的属性和行为。对象外部的功能可通过接口来实现。
枚举是限定有限可能值的一种手段,使用枚举可以降低程序出错的几率,并可以提高代码的可读性与可维护性。Java中的枚举并不是简单常量的集合,而是一个对象,其本质依然是类。
1.2.2.2.2.3.概念生成引擎
概念生成引擎根据GScript语法规则、Java语法规则以及目标程序语言的语法规则来生成概念及概念连接。
1.2.2.2.2.3.1.GScript
概念生成引擎优选配置方式为GScript语言语法的指令函数、操作符与运算函数定义一系列概念以及概念连接。配置方法可以使用与基础定义相一致的技术手段。
■指令函数
◆基本指令
Figure RE-GDA0003896738680000291
Figure RE-GDA0003896738680000301
◆扩展指令
●TEXT
Figure RE-GDA0003896738680000302
●JSON
Figure RE-GDA0003896738680000303
●XML
Figure RE-GDA0003896738680000304
●HTML
Figure RE-GDA0003896738680000305
Figure RE-GDA0003896738680000311
●CSS
Figure RE-GDA0003896738680000321
●JS(JAVASCRIPT)
Figure RE-GDA0003896738680000322
■操作符
Figure RE-GDA0003896738680000323
Figure RE-GDA0003896738680000331
■运算函数
Figure RE-GDA0003896738680000332
Figure RE-GDA0003896738680000341
Figure RE-GDA0003896738680000351
1.2.2.2.2.3.2.Java
GScript语言通过取值操作符和取值运算函数无缝与Java的常量、对象等交互。同时使用var、assign指令函数定义的局部变量与全局变量也是以Java对象的形式存储在存储区,通过取值操作符@@、@和取值运算函数@@、@、fromContext取得这些变量。也可以通过插件方法访问引入的第三方Jar包。
优选配置与Java注解来配置与定义概念及概念连接。配置方法可以使用与基础定义相一致的技术手段。而Java注解则是使用了Java的语言特性,使得概念及概念连接的定义在代码开发过程中即可进行。
√Java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。
√例如使用包名索引表的概念配置concepts/c.o.g.p.c.i.ActionContext.json、 connectivities/c.o.g.p.c.i.ActionContext.json,Java注解 com.onegrid.grid.platform.nlp4.impl.conceptnetwork.annotation.ClassConcept、 com.onegrid.grid.platform.nlp4.impl.conceptnetwork.annotation.ClassConceptConnectivity。
概念生成引擎可将每个类分别作为一个概念,该类的类名、或指代该类的词作为该概念的词。允许多个类指向同一个概念,例如接口与它的实现类通常会表示同一个概念。
√类的概念ID常使用一个小技巧:使用包名索引表来缩减概念ID的长度,索引c.o.g.p.c.i来表示包名 com.onegrid.grid.platform.context4。
同时,基础定义的概念ID=object与由这些类生成的概念构成SPECIES种属关系。
√例如概念ID=object与上述例子中的概念ID=c.o.g.p.c.i.ActionContext、ID=c.o.g.p.c.i.ApplicationContext构成SPECIES种属关系;
Java枚举虽然本身也是类但须不同处理,其须定义两个概念。其中一个概念是带有本体概念的无词概念且是另一个概念的值,而另一个概念却是那个无词概念的本体概念。
引擎针对类的每个字段(field)的引用情况不同进行分别处理:
①如果字段field被配置或注解定义了概念,则此类的概念与该字段的概念构成ATTRIBUTE属性关系;
②如果字段field的数据类型指向某个类(或Java枚举),而且该类的组件类型(Component Type)是已经被定义概念的类,则此类的概念与该字段数据类型的概念构成ATTRIBUTE属性关系;
√例如类com.onegrid.grid.platform.context4.impl.ActionContext(概念ID=c.o.g.p.c.i.ActionContext)。
③否则,引擎则为该字段定义一个概念,该字段的字段名、或指代该字段的词作为该概念的词,然后此类的概念与字段所生成的概念构成ATTRIBUTE属性关系。
√例如类com.onegrid.grid.platform.core4.impl.bean.RequestPage(概念ID=c.o.g.p.c.i.b.RequestPage)。
引擎针对不同数据类型也需要进行分别处理:
①类:基本的数据类型及所对应的一些对象类型。
②类:集合类型,主要包括数组、实现java.lang.Collection的类。
③类:其它类型,含java.lang.Object、java.lang.Class、枚举等。
引擎定义类字段(field):如果字段没有被配置或注解定义了概念连接,那么:
◆如果字段为固定常量时定义一个概念,常量值、或指代该常量值的词作为该概念的词,然后字段的概念与该生成的概念构成VALUE值关系。
◆如果字段的概念ID与它数据类型的概念ID不一致时两者之间构成VALUE值关系。
√例如上述示例概念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值关系。
引擎定义类的方法(method):如果方法没有被配置或注解定义了概念及概念连接,那么:
◆如果方法名符合JavaBean的规范(即getter和setter方法),那无需定义。因为基础定义中常定义概念ID=get、ID=set 与概念ID=object构成SV主谓关系。
◆否则,定义一个概念,该方法名、或指代该方法的词作为该概念的词,然后此类的概念与该生成的概念构成SV主谓关系。
引擎定义类的继承(extends):如果父类与子类概念ID不一致时,父类的概念与子类的概念之间构成SPECIES种属关系。
1.2.2.2.2.3.3.Html
HTML语法主要有:HTML文档是由HTML元素定义的;HTML元素以开始标签起始,以结束标签终止;元素的内容是开始标签与结束标签之间的内容;某些HTML元素具有空内容(empty content);空元素在开始标签中进行关闭(以开始标签的结束而结束);HTML标签可以拥有属性,属性总是以名称/值对的形式出现;HTML文档存在外部样式,由标签link引入;HTML文档存在内部样式,有标签style定义;HTML元素存在内联样式,主要由属性style定义;HTML元素事件以属性形式存在,即通过事件属性使事件在浏览器中触发动作的能力。概念及概念连接的生成见上一节GScript“指令函数-扩展指令-HTML”。
1.2.2.2.2.3.4.Css
CSS语法主要有:CSS规则由两个主要的部分构成:选择器,以及一条或多条声明;selector{declaration1;declaration2;... declarationN};每条声明由一个属性和一个值组成;selector{property:value};每个属性有一个值,属性和值被冒号分开;可以通过依据元素在其位置的上下文关系来定义样式;id选择器可以为标有特定id的HTML元素指定特定的样式,且以"#"来定义;类选择器以一个点号显示;可以为拥有指定属性的HTML元素设置样式,而不仅限于class和id属性。概念及概念连接的生成见前一节GScript“指令函数-扩展指令-CSS”。
1.2.2.2.2.3.5.Xml
XML指可扩展标记语言,它被设计用来传输和存储数据。XML语法规则很简单且很有逻辑。XML语法主要有:XML文档必须有根元素;XML元素的标签没有被预定义,须自行定义标签;XML元素都必须有关闭标签;XML元素的标签对大小写敏感;与HTML 元素类似,XML元素也可拥有属性(名称/值的对);XML元素的属性值须加引号。概念及概念连接的生成见前一节GScript “指令函数-扩展指令-XML”。
1.2.2.2.2.3.6.Json
JSON:JavaScript对象表示法(JavaScript Object Notation)。JSON是存储和交换文本信息的语法。类似XML。JSON比XML 更小、更快,更易解析。JSON语法是JavaScript语法的子集。JSON语法主要有:JSON名称/值对:名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值;JSON值可以是:数字(整数或浮点数)、字符串(在双引号中)、逻辑值(true 或false)、数组(在方括号中)、对象(在花括号中)、null;JSON对象在花括号中书写,且包含多个名称/值对;JSON数组在方括号中书写,且可包含多个对象。概念及概念连接的生成见前一节GScript“指令函数-扩展指令-JSON”。
1.2.2.2.2.3.7.Js(Javascript)
GScript语言通过取值操作符和取值运算函数无缝与Javascript的浏览器对象、函数等交互。同时也使用var、assign指令函数与Javascript的变量定义var映射;使用function指令函数与Javascript的函数定义function映射;通过取值操作符@和取值运算函数@、fromContext与Javascript的变量获取映射,等等。
√例如执行GScript Js(Javascript)代码生成Javascript代码。
GScript语言可以通过配置将浏览器、外部脚本例如jQuery框架等内置的对象、函数引入到GScript内,使得在GScript内部可以访问到这些对象、函数。
√例如默认的GScript配置。
JavaScript是一种轻量级的编程语言,可由所有的现代浏览器执行。JavaScript跟Java一样,也有变量、数据类型、对象、函数、运算符、比较和逻辑运算符、if...else条件、switch、for、while、return、break和continue、throw、try、 catch等。同时JavaScript对象也拥有属性和方法,属性是与对象相关的值,而方法是能够在对象上执行的动作。
部分概念及概念连接的生成见前一节GScript“指令函数-扩展指令-JS(JAVASCRIPT)”、“运算函数-扩展运算函数-JS (JAVASCRIPT)”。
1.2.2.3.语义网络/词典/知识库
现在主流的语义网络/词典/知识库主要有:ConceptNet、FrameNet、WordNet、HowNet等。本文所述的概念网络也是一种语义网络,因此在技术上是可以实现与现有主流的语义网络/词典/知识库相互转换。
1.2.3.扩展定义
通过上述方法生成概念及概念连接可能会存在一定的不足,或者说在一定程度上可能会无法满足语义分析推理的需要,因此可以进行进一步扩展定义。在实现的技术手段上可以选用与基础定义一样的技术手段。
另外借助词典如《同义词反义词词典》、Word2Vec工具等等可以帮助扩充概念词及概念间的相关关系。
√《同义词反义词词典》是华东师范大学出版社出版的图书。共收入同义词、反义词词目1200余组。
√Word2Vec是一个将单词转换成向量形式的工具。可以把对文本内容的处理简化为向量空间中的向量运算,计算出向量空间上的相似度,来表示文本语义上的相似度。
1.2.4.动态形成
例如概念连接的“动态形成”章节所述,在自然语言理解过程中动态为概念之间形成连接即关系。因此可以将这些概念连接动态加入到概念网络中。通常加入到概念网络中的概念连接其特征都只有一个肯定,其目的在于:概念网络中概念连接不仅满足自然语言理解的需要,而且还可以适用于不同语境。
√例如语句“我没有包”表达了我me跟包bag之间形成了ATTRIBUTE(属性宿主与领属)的连接,但此连接在当前语境下特征为否定。但加入到概念网络中的连接其特征却是
例如自然语言理解过程中人为的操作,为概念添加词、增加概念连接等。
这取决于实际的应用情况。
1.2.5.词向量
词向量就是用来将语言中的词进行数学化的一种方式,顾名思义,词向量就是把一个词表示成一个向量。主要有两种表示方式:
√One-hot Representation。创建一个词表库并把每个词顺序编号。在实际应用中,一般采用稀疏编码存储,主要采用词的编号。这种表示方法一个最大的问题是无法捕捉词与词之间的相似度,就算是近义词也无法从词向量中看出任何关系。此外这种表示方法还容易发生维数灾难,尤其是在Deep Learning相关的一些应用中。
√Distributed representation。其基本思想是通过训练将每个词映射成K维实数向量(K一般为模型中的超参数),通过词之间的距离(比如cosine相似度、欧氏距离等)来判断它们之间的语义相似度。Word2Vec使用的就是这种词向量表示方式。
传统上自然语言处理(NLP)系统把词编码成字符串。这种方式是随意确定的,且对于获取词之间可能存在的关系并没有提供有用的信息。词向量是NLP领域的一个替代方案。它把词或短语映射成实数向量,把特征从词汇表大小的高维度空间降低到一个相对低的维度空间。目前最流行的词向量模型是由Mikolov等人在2013年提出的Word2Vec。
主要有两种方式可以跟词向量结合在一起。
■与概念直接或间接对应的词使用词向量替代。人为无法为概念对应全部且都准确的词,而通过词向量捕捉词与词的相似度,有助于为概念扩充词,或者为概念间建立相关关系。
■概念ID直接使用词向量。

Claims (10)

1.基于概念网络的自然语言生成方法,其特征在于:基于概念网络,将所要表达的意图依次经过DEF生成、句法分析环节生成与意图相符的自然语言语句。
2.根据权利要求1所述的基于概念网络的自然语言生成方法,其特征在于:所述的概念网络是定义事物概念及概念间语义关系的系统,包括概念和概念连接,
所述概念都有一个唯一的编号,概念分为三类:词概念,无词概念,未知概念;其中,
词概念包含一般词概念、带有关系成分的词概念、组合词概念、词集合概念;词概念的特点是存在自然语言词与此概念直接相对应,同时也存在实现该概念定义的转换器;
无词概念包含不带本体概念的无词概念、带有本体概念的无词概念,无词概念的特点是不存在自然语言词与此概念直接相对应,但通常存在概念识别器,使得自然语言词能与概念之间间接相对应;
未知概念包含未知词概念、未知词集合概念,未知概念的特点是无法为该概念生成概念定义,在自然语言处理过程中将被忽略;
所述概念连接为概念间的语义关系链,用来描述概念间的一层或多层语义关系。
3.根据权利要求1所述的基于概念网络的自然语言生成方法,其特征在于:所述DEF生成方法为使用DEF的表述形式来配置与定义,DEF的表述形式通过DEF表述形式转换器来转换为DEF,DEF分为一般DEF、带有附加的DEF、带有附加与限定的DEF、连接与介引DEF、主谓宾DEF;一般DEF直接使用概念编号来表示。
4.根据权利要求1所述的基于概念网络的自然语言生成方法,其特征在于:所述DEF生成方法还可以将程序设计语言通过DEF生成引擎转换为DEF,DEF生成引擎将程序设计语言的语法规则表述为DEF的表述形式,然后再通过DEF表述形式转换器来转换为DEF。
5.根据权利要求3所述的基于概念网络的自然语言生成方法,其特征在于:DEF生成引擎将java、javascript、html、css、xml、json、text或其它程序设计语言生成DEF的方法还可以通过格式化脚本语言GScript来实现。
6.根据权利要求1所述的基于概念网络的自然语言生成方法,其特征在于:所述句法分析方法有基于生成模板与规则、基于N-gram语言模型或神经网络等统计模型的。
7.根据权利要求5所述的基于概念网络的自然语言生成方法,其特征在于:所述句法分析方法的基于N-gram语言模型使用切分词方法。
8.根据权利要求5所述的基于概念网络的自然语言生成方法,其特征在于:所述句法分析方法的神经网络统计模型使用依存句法分析方法。
9.根据权利要求8所述的基于概念网络的自然语言生成方法,其特征在于:所述依存句法分析方法为:分类器输入一个状态,并设定输出最可能的动作是依存关系对应的动作,然后记录每个词获得的分值。经过一系列转移动作,最终达到终止状态,也就可以得到词序列。
10.根据权利要求1所述的基于概念网络的自然语言生成方法,其特征在于:所述DEF生成还包含DEF转换功能,实现不同语言的转换。
CN202210477540.3A 2022-02-20 2022-05-04 一种基于概念网络的自然语言生成方法 Pending CN115345153A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210477540.3A CN115345153A (zh) 2022-05-04 2022-05-04 一种基于概念网络的自然语言生成方法
PCT/CN2023/077271 WO2023155914A1 (zh) 2022-02-20 2023-02-20 一种用于人工智能的概念网络及其自然语言理解与生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210477540.3A CN115345153A (zh) 2022-05-04 2022-05-04 一种基于概念网络的自然语言生成方法

Publications (1)

Publication Number Publication Date
CN115345153A true CN115345153A (zh) 2022-11-15

Family

ID=83948217

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210477540.3A Pending CN115345153A (zh) 2022-02-20 2022-05-04 一种基于概念网络的自然语言生成方法

Country Status (1)

Country Link
CN (1) CN115345153A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023155914A1 (zh) * 2022-02-20 2023-08-24 杭州格沃智能科技有限公司 一种用于人工智能的概念网络及其自然语言理解与生成方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023155914A1 (zh) * 2022-02-20 2023-08-24 杭州格沃智能科技有限公司 一种用于人工智能的概念网络及其自然语言理解与生成方法

Similar Documents

Publication Publication Date Title
Bajwa et al. SBVR business rules generation from natural language specification
US8229878B2 (en) Methods and systems for interpreting text using intelligent glossaries
US11675825B2 (en) Method and system for principled approach to scientific knowledge representation, extraction, curation, and utilization
Ochieng PAROT: Translating natural language to SPARQL
CN114528846A (zh) 一种用于人工智能的概念网络及其生成方法
Tekli et al. Minimizing user effort in XML grammar matching
Chen et al. Type-directed synthesis of visualizations from natural language queries
Ochieng PAROT: Translating natural language to SPARQL
Fuchs Natural language processing for building code interpretation: systematic literature review report
Dar et al. Frameworks for querying databases using natural language: a literature review
WO2023155914A1 (zh) 一种用于人工智能的概念网络及其自然语言理解与生成方法
CN115345153A (zh) 一种基于概念网络的自然语言生成方法
Bais et al. A model of a generic natural language interface for querying database
Kumar et al. Deep learning driven natural languages text to sql query conversion: A survey
CN115935943A (zh) 一种支持自然语言结构计算的分析框架
CN115437626A (zh) 一种基于自然语言的ocl语句自动生成方法和装置
AlAgha Using linguistic analysis to translate arabic natural language queries to SPARQL
Longo et al. A Reactive Cognitive Architecture based on Natural Language Processing for the task of Decision-Making using a Rich Semantic.
Ashfaq et al. An intelligent analytics approach to minimize complexity in ambiguous software requirements
González et al. Semantic representations for knowledge modelling of a Natural Language Interface to Databases using ontologies
Dimitriadis et al. How to integrate databases without starting a typology war: The Typological Database System
CN115859955A (zh) 一种基于概念网络的自然语言理解方法
Taye Ontology alignment mechanisms for improving web-based searching
CN115344181A (zh) 一种人机交互系统及其实现方法和应用
Radovanovic Introducing Natural Language Interface to Databases for Data-Driven Small and Medium Enterprises: This paper summarizes major challenges and current approaches in the context of constructing Natural Language Interfaces to Databases for data-driven small and medium enterprises.

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination