KB NLP Cloud 文档

导引

KB NLP Cloud 系统是以语义为核心的云(Cloud)知识库(KB)智能系统。融合自然语言处理(NLP)领域的规则派和统计派的丰硕成果,我们创新地提出从结构化知识到自然语言文本的新架构。在此架构基础之上,使系统具备了语言生成(包括语料库的生成)、语义解析、语义计算,以至挖掘新的语义知识的能力,从而建立起结构化的语义知识到自然语言文本之间的双向转换的智能系统。

核心功能
        %%{init:{'theme':'default', 'themeVariables':{'fontSize':'14px'}}}%%

graph TB
  F["语义基础"]-->A["语言生成"]
    F-->D["语言解析"]
    F-->B["语义计算"]
  F-->C["语义生成"]

    

人们通过感知器官从客观世界获取信息,在大脑中形成认知,进而思维抽象为意义,也就是语义。这个过程不一定非要语言参与,所以说语义先于语言而存在。语言产生的目的是为满足沟通的需要,经过千万年的演化,语言已经成为意义(或语义)最重要的表达方式之一。根据香农的信息传输模型,我们认为要真正理解人类的自然语言,至少要包含以下几部分:语义的生成和计算、语义到语言的编码过程、传输信道、语言到语义的解码过程。如果忽略传输信道,一个以语义为核心的自然语言系统应该要由上图所列的四大功能模块构成:语义生成、语义计算、语言生成、语言解析。

语义基础

从语义的角度来看,成功沟通的前提是沟通双方首先掌握一定量相似的语义知识,称为共识语义知识。对于人类而言语义知识就是大脑中存储的记忆,而对于计算机系统,则需要预定义的语义知识库。语义知识库的定义可分为四个维度:

  • 静态和动态的知识:语义知识的静态结构称为语义节点,而动态结构称为语义事件。它们的详细内容在后续章节将被阐述。静态结构的语义节点是分层构建的,它的各层结构,无论顶层的概念框架、独立节点、个体节点,还是底层的属性、值集、单位都设计为相似的对象模型,称为语义对象。

  • 知识的唯一性:语义知识的一个重要特性是必须要将同类事物映射到唯一的对象模型。无论静态结构还是动态行为都应标识有唯一的语义编码:在语义节点中被称为编码;在语义事件中则称为事件表达式,以便在知识库不被混淆;

  • 知识的语言表达:但语义对象并不一定被唯一的语言符号指称,即语义对象可以表达为多个语言符号。这些语言符号称为同义词(synonym),并使用相似度表示其生成语言的优先级;

  • 知识的值类型:静态的语义对象,包括:概念框架、独立节点、个体节点、属性、值集、单位均属于名词性成分,为便于语义计算都应该指定特定的值类型。

1. 语义节点

语义的静态特征,即客观事物的静态结构,在系统中被称为语义节点。系统定义了三大类语义节点:概念框架、独立节点、个体节点。概念框架类似于面向对象编程中的类,由命名和属性集构勒出客观事物的基本框架;独立节点和个体节点则是被实例化的对象,独立节点结构简单不含属性集,类似于数学中的标量,在创建时不需显式地继承概念框架,定义之后可以直接生成短语;个体节点则类似于对象实例,在创建时要指定概念框架,这样就可以继承自概念框架的所有属性,并通过为每个属性赋予值集和单位,详细刻画客观事物的具体特征。三类节点的每个语义对象,即它们的命名、属性、值集和单位都可以关联一个以上的同义词,以便后续流程中生成语言;为了便于存储,每个语义对象都有唯一的编码进行标识。

2. 语义事件
事件结构
        %%{init:{'theme':'default', 'themeVariables':{'fontSize':'14px'}}}%%

graph LR
    arg0-->relation["语义事件:支撑词(谓词)"]-->arg1-->arg2
    

语义的动态行为是一系列的关系和动作,它们是由谓词(支撑词)和论元结构构成的路径,在系统中被称为语义事件。事件中的支撑词不仅包括谓词(动词、形容词),还加入了介词、连词以扩展范围;事件中的论元(argX)是指每个谓词所支配的、数量固定、但成分未知的名词性短语或文本片段。

为了扩展文本表达的丰富度,系统还将那些语义相似、论元相同的事件组合在一起构成了事件组。每个事件组都有唯一的命名,它们是构成关联语义路径的基础元素。

语义路径

焦点的内涵
        %%{init:{'theme':'default', 'themeVariables':{'fontSize':'14px'}}}%%

block-beta
columns 5
  A["静态对象"] space  space space D["关系行为"]
  space space F(("焦点")) space space
  B["行为指令"] space space space C["目标原由"]
  F-->A
  F-->C
  F-->B
  F-->D
    

在语言交流中,沟通的动机来源于交换双方的需求,可能是兴趣、利益、信息甚至打发时间等等。我们认为沟通的焦点包含以下几个重要的方面:

  • 静态对象:交互的内容聚焦于语义对象,包括:概念框架、独立节点、个体节点,以及它们的属性、值集、单位等;

  • 关系行为:交互的内容聚焦于语义对象的动态行为,或它们之间联系,即事件(组)中的支撑词;

  • 行为指令:交互的内容聚焦于某一方执行某种操作或行为,也就是整个事件内容;

  • 目标原由:交互的内容聚焦于追溯事件的起因、来源、目的等。

若要表达上述的焦点(或者称意图),就需要将语义节点和语义事件契合到一起构成具有特定意图的表达式,这个表达式称之为语义路径。从语言的角度来看,语义路径可以看做自然语言的语义表达式,包括:

  • 短语路径:通过语义对象自动或手工定义的语义表达式。用于生成短语文本,并确保短语的每个重要成分都能映射(解析)到语义对象。短语路径一般满足聚焦于交互中静态对象;

  • 关联路径:由语义对象和事件(组)共同定义的语义表达式。用于生成句子文本,并确保句子的每个重要成分都能映射(解析)到语义对象和语义事件。关联路径更广泛,可以聚焦于交互的所有意图。

关联路径
(条纹衬衫:E)→[拥有]→(尺码:P-S:V)→(?)
  • 关联路径的语义对象:

    1. (条纹衬衫:E):个体“条纹衬衫”

    2. [拥有]:事件组“拥有”

    3. (尺码:P-S:V):个体的属性-值集“尺码:P-S:V”

语义路径从诞生伊始就具有以下几种重要的能力:

1. 句式标识

如上图中的(?)就标明了路径的句式,以下为几种常见的路径标识,表明焦点与句式之间的关系:

  • 否定焦点成分:(NEG);

  • 判断是非的疑问:(?);

  • 对特指焦点成分的疑问:(WH);

  • 对关系行为提出疑问:(HOW);

  • 行为指令:(IMPER);

  • 目标原由(事件的原因):(WHY);

  • 从两种或以上的焦点中选择:(SELECTIVE)

2. 生成自然语言文本
    这款衬衫拥有S尺寸吗?
    条纹衬衫拥有小号尺寸吗?
    这款条纹衬衫拥有小号尺码?
    这款T恤衫有小号尺寸吗?
    该衬衫有没有S的尺寸?
    该条纹衬衫有没有小号尺码?
    ...

一条语义路径根据同义词数量可以生成很多条互不重复的自然语言文本,即每条文本的关键词都各不相同,力求覆盖大多数常见的表达方式。生成文本的关键词按顺序映射到语义路径中的每个成分,例如,名词性短语映射到语义节点,谓词(介词、连词)映射到语义事件。它们在生成阶段就已经完成映射。

3. 文本的语义解析

所生成语言的关键词汇与语义路径的特定成分构成一一对应的关系。这种对应关系是一种双向关系,从路径到语言称为映射过程,从语言到路径称为解析过程:

  • 关联路径的语义映射:

        %%{init:{'theme':'default', 'themeVariables':{'fontSize':'14px'}}}%%
block-beta
columns 5
    A1["条纹衬衫:E"] A2["拥有"] A3["尺码:P-S:V"] space space
    space space space space space
    space space space space space
    W1["条纹衬衫"] W2["拥有"] W3["小号尺码"] W4["吗"] W5["?"]
    A1-- "映射" -->W1
    A2-- "映射" -->W2
    A3-- "映射" -->W3
    

在实际应用中,当出现类似的外部自然语言文本时,系统就可以辨别出该文本映射的语义节点和事件,以便对其进行语义计算,这就实现了自然语言到语义路径的解析。解析过程可以使用调优的大模型预测得到。如果相似度足够高,也可不依赖大模型,既节约了运算资源,又提升了解析效率。

同时,一条自然语言文本也可能映射到多条语义路径。这是因为自然语言具有省略性、歧义性等随意性的特征。要将映射到多条路径的自然语言文本正确地解析到语义基础必须要考虑语境(上下文)的特征,这个设计在应用系统(例如:对话机器人)中实现。

4. 语义计算

客观事物只有状态,例如存在或不存在,而被对象化的语义知识因为结构的复杂性可支持更为复杂的运算。对于人类而言思考的本质就是一种运算过程,最基本的行为是归纳、推理,进而衍生出分类、回归、迭代等等计算方法。特别需要指出的是:人不是通过语言符号进行运算,而是透过语言符号解析后的语义知识而进行计算。因此,在计算机系统中,语义计算分为两个步骤:首先,通过语义解析模块将语言解析出其背后对应的语义知识表达式(见下文的语义路径);接下来,执行这些语义知识的表达式(见下文的路径计算)获得计算的结果。路径计算包括以下三种方式:

  • 句式运算:主要针对是非疑问式、选择疑问式、特指疑问式自动推导出核心的语义路径;

  • URL:以路径扩展元素作为参数,调用外部的URL获取路径的执行结果;

  • 自定义方法:以路径扩展元素作为参数,用户编写自定义的执行逻辑,获取路径的执行结果。

对于较多的动态处理的应用场景,例如:调用后台逻辑,或远程调用等等情况,使用解析后的语义路径直接调用或运算,适于指令化、流程化的会话交互,例如:执行程序化的业务任务、定制开发高级应用等,使系统仅通过自然语言就能按照需求交付服务,而无需人工的介入。

语料库

语料库指经过整理,具有既定格式与标记的大量文本。传统上语料库通常是真实发生的,机器可读的,经过严格的取样而来的,服务于特定目的的语言样本。但并不是所有自定义的语义知识都能收集到足够的语言文本,即便可以收集到,为了保证机读精度,对原始语料进行标注也需要耗费巨大的人工成本。这对低成本、大规模商业化应用并不现实。我们将语义路径生成的语言样本作为语料库的来源,有诸多好处:

  1. 语料库中的语料是由路径生成的已自动标注分词和命名实体的短语和句子;

  2. 语料库提供已自动分词的知识词表,支持人工校对;

  3. 语义库还提供知识图谱等结构化数据;

  4. 经过不断扩展,语义路径生成的文本可直接解析到语义知识,这就使经过训练(或调优)之后的大语言模型可以应用到更大规模的自然语言场景之中。

语义生成

系统采取渐进式学习的方式,通过三个阶段实现不同层次的语义学习能力:

第一阶段. 训练语料 在初始阶段,用户手工定义结构化的语义知识,包括语义节点和语义事件,按照应用场景定义语义路径,智能生成非结构化、可解析的自然语言文本,并构成熟语料库。熟语料库可直接用于训练语言模型。

第二阶段. 路径学习 接下来,随着应用的深入和广度的扩展,知识库的规模继续增长,越来越多的语义路径也被定义出来,增量训练后的语言模型学习能力不断增强,逐渐有能力利用已知的语义路径,准确地解析出外部自然语言文本中的未知语义路径,然后再自动、半自动的扩充进知识库,同时将新生成的文本语料扩充至熟语料库。

第三阶段. 学习未知的语义基础 重复上述两个步骤,周而复始不断增量训练,随着知识库和语料库规模增长到一定程度,使模型的通用学习能力达到阈值。逐渐有能力从类似结构的新文本资源中自动、半自动地学习出新的语义知识,即从已知的语义知识推论出未知的语义知识。最终完成特定领域或跨多个领域的通用知识学习能力。

应用和展望

NLP KB Cloud 的最广泛应用是,在冷启动(无用户语料库)情况下,知识库生成的语料库可用于预训练大模型的微调,实现售前咨询会话、售后支持、服务业务报告生成等等基于大模型的静态知识应用场景。

为了进一步扩展知识库的应用范围,我们逐步为一些特定的应用场景开发相应的子系统。一个简单应用是,结合预训练大模型与知识库的语义映射优势,仅通过配置结构化的语义模型,即可创作出基于动态数据、表达丰富的篇章文本。

我们希望NLP KB Cloud及其应用系统帮助企业和个人,实时化、智能化和低成本地服务于用户的智能化需求,从而全方位的取代人工工作。