三、词汇流转为概念流
第一步输出了词汇流,第二步简单而言就是把词汇替换为对应的概念,为统辖搜索做数据准备。但真实的情况会复杂很多,总结一下大概会有以下几个方面:其一,句子中可能存在代词,需要在语境中寻找合适的替换代词概念;其二,在具体对象没有名称的时候,人类有倾向用具体对象从属的对象类去指向之,这时就需要区分词汇指向的到底是具体对象还是对象类;其三,人类的意向表达,选择概念时未必有精准表达点,往往会选择不同的在意向空间距离相近的概念表达同个意向,比如我们会用“努力”“不浪费一点时间”“不畏惧困难”等概念表达个体在面对工作的时候的积极意向。如果不把概念在意向层面归一,我们在逻辑运算的时候就会遇到困难,难以捕捉那些表达主要意向和意味的事情。接下来将分别讨论解决这些问题的机制。
对于代词,我们知道代词中“他”“她”“它”分别指向“男人”“女人”“人类以外的具体对象”。具体指向什么具体对象呢,我们会默认指代语境中最近的符合此类型的具体对象。所以只需要去语境变量中依次(从最近出现的开始)考察每个具体对象是否是男人/动物/女人的子类,最先找到的具体对象为用来替换代词的对象。
对于用对象类对应的词汇指向具体对象,类似代词,我们会默认指代语境中最近的对象类的子类。只需要去语境变量中依次(从最近出现的开始)考察每个具体对象是否是此对象类的子类,用最先找到的具体对象来替换对象类对应的词汇。其困难的地方在于:其一,对象类对应的词汇有些时候就是指向对象类的,比如“早上一只猫跳到我们院子里,猫是一种很可爱的动物”,后面的“猫”就是指对象类的。这里该如何区分到底是指向具体对象还是对象类呢?其二,在一段话第一次用对象类指向具体对象的时候,具体对象在语境中是不存在的,此时如何决定是建立一个归属对象类的具体对象,还是认为词汇指向的就是一个对象类?对于第一个问题,对象类和具体对象所处的表达单元信息是有差异的,所以我们需要依赖句子结构对应表达信息单元来判断到底指向的是具体对象还是对象类,也就是第三步做的事情。所以这边做的就是输出两种可能,即用对象类ID替代和用从属于对象类的具体对象ID替代,留到第三步看哪种能匹配上语法中的句子结构模板。第二个问题,人类的表达中第一次指向是有明确的句子结构特征的,比如“一只小猫”,前面加了数量词就是需要指向一个具体对象的特征,所以这种情况也需要保留两种可能到第三步去决定。
对于相对关系名称,比如“琼斯先生有一个儿子、一个女儿,儿子不喜欢动物,女儿很喜欢动物”,其中“儿子”“女儿”就是相对关系名称,它不同于一个对象类的名称。如果语境中没有相对关系,意味着拥有此相对关系的元素会在该句被引入语境,我们在第二步直接用相对关系名称的ID替代,到了第三步转录完成时自然会在语境中创建这个相对关系。如果语境中已经有此相对关系,我们就会用相对关系中这个名称后面的概念替换句子中的相关关系名称。
接下来,对于表达者在意向层不精确地使用属性概念,人类往往会在对话或一大段表达中重复他所想强调的属性信息,但往往会使用和属性意向相接近的各种属性。我们需要把这些属性归一,这样我们听到的强调信息就不会是零散的,而能够捕捉到表达者重复强调的内容。所以工程上,当AI识别到句子中一个属性概念的时候,会先查看它和语境中已有属性概念的意向距离,如果意向很接近,我们就会用语境中已有的属性概念替代它。
那么第一个属性概念就原封不动地写入语境吗?不会。人类听者有一个原则——“在自己的认知框架内理解别人讲的话”,其中一层含义就是当听到一个属性概念A对应的词汇时,我们寻找意向空间内和它最接近的我们熟悉的概念A*,用A*替代之而不用概念A。这么做的原因是,如果概念A*是熟悉的,就意味着有很多知识引用了A*,所以A*比起A和各种知识联系得更近,更容易发生运用这些知识的运算。工程上,当AI识别到句子中的一个属性概念的时候,会去长期记忆中寻找那些频次强度足够高的属性,频次强度在一定程度上反映了一个概念参与常用知识的程度,考察这个属性概念和这些高强度属性概念的意向距离。如果找到距离足够接近的高强度属性,则用这个属性替代之。
关于实验,(1)我们考验AI是否能够正确替换语境中的代词,考察AI是否能正确用语境中的对象替换句子中的相对关系名称。(2)我们考察AI是否能够区分哪些概念类对应的词汇是指向概念类的,哪些是指向具体概念的。(3)我们在一段对话中换着属性概念去表达一个意向语义,考察AI能否总结出表达中的重点。(4)我们用一个属性在AI脑中建立知识,然后用意向距离很接近的属性在表达中使用,考察AI是否把知识运用到语境场景中。当然,所有这些实验都需要以正转录整体闭环完成为前提。
第二步词汇流转为概念流的实现参考模块8.2。
Topic:对象类的名称指代什么
在逆转录过程中,具体元素参与的结构信息,比如具体事件,会被逆转录算子加工一次,输出的结果包含具体对象ID;再次执行逆转录算子的时候,如果具体对象没有名称,就会选择用合适的结构信息指向;再其次会用具体对象的属类的名称去指向。一旦语言的输入运用了具体对象的属类名称去指向这个具体对象,在转录中就会遇到问题:我们无法分清楚这个词汇是指向属类,还是某个具体对象。事实上,很多情况下,从单个语法模板切分出来的句子片段无法判断这点,比如“庄园的主人”是切分出来的一个指向,这边的庄园可以是一个具体庄园,也可以指一个“庄园”的对象类,在这个切分片段中是看不出来的,我们设想一下完整的句子“庄园的主人琼斯先生是一个富豪”,这个完整的句子让我们知道“庄园”是一个具体对象;而“庄园的主人都很有钱”这个完整的句子让我们知道“庄园”是一个对象类。
这个问题的本质在于,在语言输出的逆转录过程,从概念到词汇用了多对一的映射。在这个例子中,具体对象和对象类用了同个词汇,导致转录算子运算过程出现了两个或以上的概念选择,而要决定到底是哪个概念需要从表达的整体去考察。这就意味着在正转录过程中,如果出现多种可能,我们需要暂时输出多种可能的信息,正确的信息能够和其他信息组合成一个整体,而错误的信息往往不能,除非句子本身有歧义,或需要在更大的语境背景中去决定。