在读 一文看懂自然语言处理NLP(4个应用+5个难点+6个实现步骤) 的过程中,结合这学期的 nlp 课程,有了一些些简单的想法,在此记录一下。

nlp 的最终目的粗略来说有两个:一个是理解自然语言,另一个是用自然语言进行表达。

“中间语言"的定义

理解自然语言,我觉得最理想的结果是将某种语言翻译成某种"自然语言无关"的语言,姑且称它为"中间语言”。这种语言是人能够看懂理解的(仔细想来这一点性质可能是有待商榷的),比如像汇编语言那样,而不是像 embedding 向量那样人无法理解或难以解释的。通过这种语言可以完备且唯一地表达含义。完备指能表达任何自然语言希望表达的某一种含义,唯一指给定该语言的一个句子,最多有且只有一种理解方式。对于这样的语言,我认为是可以对其进行逻辑分析处理的。当然,因为每个句子只能表达一种确定的含义,对于自然语言中可能存在歧义理解的一句话,是无法将其翻译为一句该语言的句子,而是会存在多种翻译的句子。

在这学期的 nlp 课程上,了解了像使用 Transformer 进行语言翻译这样的手段,Transformer 将源语言转换到一种中间表示 intermediate representation,这个过程为编码 encode,第二步是将这个中间表示转换成目标语言,这步是解码 decode。所以通过上面定义的"中间语言",理论上是可以实现不同语言的翻译工作。不过肯定会存在一些问题,比如语言风格在中间语言会被大量抹去,这样翻译出来的句子风格无法还原原文。文风或许可以再从原文中训练获取,再应用到译文中。再比如如何定义这种"中间语言"。

对于语言理解模型的训练,包含自然语言到"中间语言"的翻译以及"中间语言"的构建,我认为可以模仿人类学习语言的方式。开始时学习最基础的词汇,然后通过词典学习更多的词汇扩充词汇量。对于词典中没有的生僻的或仅仅是陌生的(训练中未遇见过的)词汇,可以学习人的方式通过上下文语境分析推理出词汇含义。

在以上的基础上,我还能想到的一个问题是一个词汇表达的含义不止一种,以及词汇有多种不同的含义。这两种是有区别。前一种是词汇在句子中同时包含多种含义,后一种是在不同句子中词汇表达不同 的含义。前者比如一个描述情感词汇可能包含多种不同的基本情感。后者可简单认为是多义词。对于前一种,可以为多个含义分别构建出一个句子(当然实现中并不一定要完整写出多个句子),然后可以对每个句子给个权重表示"含量"。对后一种也可以分别构建不同的句子,给各个句子一个概率值或权重表示采用这种含义的概率。

语境

我们阅读的时候通常会有语境,比如人称代词指代,使用简单的名词指代之前所说的某物等,这些都需要语境才能理解。所以上面的模型当然也需要某种记录语境的机制。对此我联想到的编译中的各种 tables,对已定义的变量进行记录,之后查表可得知变量的相关信息。

应用

英语做题

如果真能做出这样的语言理解模型,我最想做的是对比人和该模型之间的区别。所以应用方面,我想到了英语的完型填空。然后我觉得模型开始阅读时初始的语境也会影响模型的理解,所以给定不同初始状态,模型的表现可能不同,理解的内容可能也有不同?就像是"一万个读者心中有一万个哈姆雷特"一样。如果让模型多次阅读完形填空文章是否会得到更好的性能结果?英语阅读理解可能也是一样,初始状态影响理解程度。

说道初始状态发现前面忘记提语境了,在上一部份补上 lol。

补完之后又在想初始语境是啥??我想表达的含义大概就是比如做英语阅读理解时,如果你对文章内容抱有某方面主题内容的预测,这会影响你对文章内容的理解,可能会把你的理解方向带偏,或者你能通过预测脑补出没看懂的部份或文章介绍得不完整的部份。

所以初始语境可能对开头的理解有影响吧,开头遇到的多义词影响理解的准确性,如果能通过初始语境正确判断开头多义词的含义,或许能提高开头内容的理解准确性。

更深入的应用

在有了这个中间语言之后,因为它的句子理解是唯一的,所以能够进行各种计算机非常擅长的严谨逻辑分析。啊,突然发现这可能也要包含在之前的模型里,通过逻辑分析推测真实语义以及语境,这也是人脑阅读文章时有时需要进行的一个步骤。

在理解语言内容的基础上,可以对理解出来的语义进行统计分析,如分析各种情感成分占比或强度,也可以去做一些创造性的事情,比如 nlp 中的内容总结概述。可以做一些漏洞检测方面的,如语言中的逻辑分析有没有漏洞,语言表述存在问题,想表达的意思与句子表达出的不同,以及 typos 各种笔误的检测。甚至可以从内容出发向外拓展推理出新的内容。

想了想感觉这样的模型甚至可以和人对话交流了(不过需要补充上中间语言到自然语言的翻译过程)。机器通过与用户不断交流从而不断地补充语境了解到用户的实际需求,这样或许能让现在的智障语音助手真正变得智能吧。

小感想

记录想法的时候,在不断对各种细节进行补充思考,所以想法的内容在不断增加,或许不能再说是简单的想法了。总之最后就变成本文看到的样子。