计算机是怎么理解人类语言的?

让计算机理解人类语言

“教”计算机理解人类的自然语言这部分工作,称作自然语言理解(Natural Language Understanding / NLU)。

可以算作自然语言处理(Natural Language Process / NLP)的一部分。

具体要做的事情,就是让计算机“明白”人类正常讲话时使用的语言,而不是几个英文关键字加一堆参数的格式化的指令。

这是怎么做到的呢?让我们先来看看:

人类如何理解自然语言

举个例子,我说“苹果”这个词,你会想到什么?

一种酸酸甜甜红红绿绿的球状水果,对吧。想起来的时候,或许脑子里会出现苹果的图像,回味起它香甜的味道;或者想起和苹果有关的其他水果、食物……

我们人类理解语言的时候,是把一个抽象的词语和一个具体的事物关联起来。这个事物是我们头脑中知识库图谱里的一个节点,和周围若干节点直接相连,和更多节点间接相连……

计算机如何理解自然语言

我们用键盘敲出“苹果”两个字的时候,计算机并不会幻视出一个水果,也不会像人那样“意识到”这个单词的含义。

无论通过输出设备显示成什么样子,计算机所真正能够处理的,是各种各样的数值。

要想让计算机理解人类的语言,就需要把人类的语言转化成它可以用来读取、存储、计算的数值形式。

当若干自然语言被转换为数值之后,计算机通过在这些数值之上的一系列运算来确定它们之间的关系,再根据一个全集之中个体之间的相互关系,来确定某个个体在整体(全集)中的位置。

这么说有点绕,还是回到例子上。很可能,我说“苹果”的时候,有些人首先想到的不是水果,而是乔帮主的公司创造的各种科技产品。

但是,我继续说:“苹果一定要生吃,蒸熟了再吃就不脆了。”——在这句话里,“苹果”一词确定无疑指的是水果,而不是公司。

因为在我们的知识库里,都知道水果可以吃,但是公司不能吃。出现在同一句话中的 “吃”对“苹果”起到了限定作用——这是人类的理解。

对于计算机,当若干包含“苹果”一词的文档被输入进去的时候,“苹果”被转化为一个数值Va。经过计算,这个数值和对应“吃”的数值Ve产生了某种直接的关联,而同时和Ve产生关联的还有若干数值,它们对应的概念可能是“香蕉”(Vb)、“菠萝”(Vp)、“猕猴桃”(Vc)……

那么据此,计算机就会发现Va,Vb,Vp,Vc之间的某些关联。怎么利用这些关联,就要看具体的处理需求了。

计算机处理自然语言必经由两个步骤:i)数值化和ii)计算。

换句话说,机器理解人类语言,需要把“人话”转化成一系列数值,再对这些数值进行计算。

I. 数值化

如何把人话(自然语言)转换为数值呢?

首先需要注意一点:说到数值,大家可能本能的想到int, double, float……

但如果将一个语言要素对应成一个标量的话,太容易出现两个原本相差甚远的概念经过简单运算相等的情况。

假设“苹果“被转化为2,而”香蕉“被转化为4,难道说两个苹果等于一个香蕉吗?

因此,一般在处理时会将自然语言的单位语素转化成n维向量

只要转化方式合理,规避向量之间因为简单运算而引起歧义的情况还是比较容易的。

此处需要一个步骤,把原始文字形式的训练数据转化为数值形式。为了做到这一点,我们需要构建一个向量空间模型(Vector Space Model/VSM)。

VSM负责将一个个自然语言文档转化为一个个向量。说到具体的转化方法,我们之前已经有文章介绍过,此处不赘述了。

II. 计算

自然语言已经转化为了数值形式,那么下一步,究竟进行怎样的计算呢?

这就要看你具体要做什么事情了。在自然语言理解(NLU)中,负责来进行具体计算的那个部分,叫做:模型

根据要做的事情不同,模型也是各种各样的。

比如,在开发问题解决型聊天机器人的过程中,为了理解用户用自然语言提出的问题,我们就需要意图识别和实体提取模型。

模型是什么

一个已经训练好的模型可以被理解成一个公式 y=f(x),我们把数据(对应其中的x)输入进去,得到输出结果(对应其中的y)。

这个输出结果可能是一个数值,也可能是一个标签,它会告诉我们一些事情。

比如,我们把用户说的一句话输入识别用户意图的分类模型。模型经过 一番运算,吐出一个标签,这个标签,就是这句话的意图。

在把这句话再输入到实体提取模型里面。模型会吐出一个List,其中每一个element都是一个实体。

模型是怎么得到的?

模型是基于数据,经由训练得到的。

训练又是怎么回事?

当我们把模型当做y=f(x)时,x就是其中的自变量,y是因变量。从x计算出y要看f(x)是一个具体什么样的公式,这个公式中还有哪些参数,这些参数的值都是什么。

训练的过程就是得到具体的某个f(x),和其中各个参数的具体取值的过程。

在开始训练的时候,我们所有的是x的一些样本数据,这些样本本身即有自变量(特征)也有因变量(预期结果)。对应于y=f(x)中的x和y取值实例。

这个时候,因为已经选定了模型类型,我们已经知道了f(x)的形制,比如是一个线性模型y=f(x)=ax^2+bx+c,但却不知道里面的参数a,b,c的值。

训练,就是要将已有样本经过依据某种章法的运算,得到那些参数的值,由此得到一个通用的f(x)。

这些运算的章法,就叫做:算法

说到算法,就涉及到了机器学习的内容,经过几十年的研究,已经有很多现成的算法可以用于获得不同类型的模型。

此处有一点和之前呼应,就是:任何算法的处理对象都是数值。

用于训练模型的数据有个专名的名称称呼它们:训练数据。训练数据的集合叫做训练集。

将训练数据输入给算法进行计算,最终就得到了我们想要的模型:训练数据 + 算法 => 模型

然后用得出的模型去处理更多的数据,用来获取模型对这些新数据的判断——例如:识别意图,或者抽取实体——计算机也就因此而理解了人类的自然语言。

原文发布于微信公众号 - 悦思悦读(yuesiyuedu)

原文发表时间:2017-09-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏深度学习自然语言处理

详解机器学习之the Learning Problem

阅读大概需要10分钟 Why do we learn Machines Learning 之前虽然学过逻辑回归LR,支持向量机SVM等机器学习的零星小片段,还有...

31610
来自专栏智能算法

鸟群的启发--粒子群算法

看文章之前先看一个相关小视频(55s, 2.86M): ? 1. PSO的基本思想: “自然界的蚁群、鸟群、鱼群、羊群、牛群、蜂群等,其实时时刻刻都在给予我们以...

38911
来自专栏机器之心

资源 | 清华大学开源神经机器翻译工具包THUMT

选自arXiv 参与:李泽南 机器翻译是自然语言处理的重要组成部分,其目的是使用计算机自动将文本翻译成其他语言的形式。近年来,端到端的神经机器翻译发展迅速,已经...

2965
来自专栏机器之心

自然语言处理最新教材开放下载,乔治亚理工大学官方推荐

1383
来自专栏牛客网

腾讯暑期实习生面经

1.前言 终于也可以写面经啦,虽然只是去打个酱油。我是内推的,没有经历笔试。当时好像是学校bbs论坛上看到的消息,就把基本信息发给人家了,很迅速的回了我,非常感...

43310
来自专栏AI研习社

深度学习+机器人,哪些技术方向最有可能产生火花?

AI 研习社按:本文作者qqfly,上海交通大学机器人所博士生,本科毕业于清华大学机械工程系,主要研究方向机器视觉与运动规划,会写一些好玩的内容在微信公众号:N...

4018
来自专栏向治洪

[置顶] 机器学习简介及常用算法

概念 什么是机器学习? 机器学习是英文名称Machine Learning(简称ML)的直译。机器学习涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多...

2188
来自专栏灯塔大数据

福利|清华大学开源神经机器翻译工具包THUMT

机器翻译是自然语言处理的重要组成部分,其目的是使用计算机自动将文本翻译成其他语言的形式。近年来,端到端的神经机器翻译发展迅速,已经成为机器翻译系统的新主流。近...

3615
来自专栏CSDN技术头条

征战 BAT 算法面试

对于机器学习的初学者来说,面试方面的经验总结也非常重要。能够加深对算法和机器学习基本理论的理解。所以,本文网罗了多年来 BAT 的面试真题,能搞懂这些面试题加上...

1371
来自专栏大数据挖掘DT机器学习

如何通过评论、点赞等行为信息进行数据挖掘?

用户对产品有很多行为,如何进行用户行为分析来量化用户对产品的喜好程度呢? 比如豆瓣FM,用户可以点击“喜好”和"扔进垃圾箱"等;比如优酷视频,用户可以顶,踩,分...

3586

扫码关注云+社区

领取腾讯云代金券