NLP中的数学

从自然语言中提取有用的信息可能会很困难,这需要乏味的统计记录,但这正是机器的作用所在。和许多其他技术问题一样,一旦知道答案,解决起来就容易多了。机器仍然无法像人类一样精确可靠地执行很多实际的NLP任务,如对话和阅读理解。因此,大家需要对从学到的算法进行调整来更好地完成一些 NLP 任务。

然而,在执行一些令人惊讶的精细任务上,本书介绍的技术已经足够强大,根据它们构建的机器在精度和速度上都超过了人类。举例来说,大家可能猜不到的是,在对单条Twitter消息进行讽刺识别上,机器比人类更精确。

大家不要担心,由于人类有能力保留对话的上下文信息,因此仍然更善于识别连续对话中的幽默和讽刺。当然,机器也越来越善于保留上下文。如果大家想尝试超过当前最高水平的话,本书将帮助大家把上下文(元数据)融入NLP 流水线中。

一旦从自然语言中提取出结构化的数值型数据——向量之后,就可以利用各种数学工具和机器学习工具。我们可以使用类似于将三维物体投影到二维计算机屏幕的线性代数方法,这些方法早在 NLP 自成体系之前就被计算机和绘图员所使用了。这些突破性的想法开启了一个“语义”分析的世界,即让计算机能够解释和存储语句的“含义”,而不仅仅是对其中的词或字符计数。语义分析和统计学一起可以有助于解决自然语言的歧义性,这里的歧义性是指词或短语通常具有多重含义或者解释。

因此,从自然语言文本中提取信息和构建编程语言的编译器完全不同(这一点对大家来说很幸运)。目前最有前景的技术绕过了正则语法(模式)或形式语言的严格规则。我们可以依赖词语之间的统计关系,而不是逻辑规则表述的深层系统。

想象一下,如果必须通过嵌套的 if…then 语句树来定义英语语法和拼写规则,大家能撰写足够多的规则来处理词、字母和标点符号一起组成句子的每一种可能方式吗?大家能捕捉语义,即英语语句的意义吗?虽然规则对某些类型的语句有用,但可以想象一下该软件是多么的有局限性和脆弱,一些事先不曾意料到的拼写或标点符号会破坏或扰乱基于规则的算法。

此外,自然语言还有一个更难解决的所谓“解码”挑战。用自然语言说话和写作的人都假定信息处理(听或者读)的对象是人而非机器。所以当人们说“早上好”时,肯定假想对方已经对“早上”的含义有所了解,即早上不仅包括中午、下午和晚上之前的那个时段,也包括午夜之后的那个时段。

同时,大家需要知道,这些词既可以代表一天中的不同时间,根据一般经验,也可以代表一天中的一段时间。可以假定解码器知道“早上好”只是一个普通的问候语,而没有包含关于“早上”的任何信息,相反,它反映了说话者的精神状态以及与他人交谈的意愿。

这种关于人类如何处理语言的思维理论后来被证实是一个强有力的假设。如果我们假设人类的语言“处理器”拥有人类一生关于世界的常识,我们就能用很少的话表达很多信息。这种信息压缩率仍非机器的能力可及。在 NLP 流水线中也没有明确的“思维理论”可以参照。不过,我们将在后面的章节中介绍一些技术,这些技术可以帮助机器构建常识的本体与知识库,它们可以用于理解依赖这些知识的自然语言语句。

© 版权声明
THE END
喜欢就支持一下吧
点赞1赞赏
分享
评论 抢沙发
HarryPotter的头像|艾奇编程网

昵称

取消
昵称表情