前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >计算机是怎么理解人类语言的?

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

作者头像
叶锦鲤
发布2018-03-15 11:48:14
1.4K0
发布2018-03-15 11:48:14
举报
文章被收录于专栏:悦思悦读悦思悦读

让计算机理解人类语言

“教”计算机理解人类的自然语言这部分工作,称作自然语言理解(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)。

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

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

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

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

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-09-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 智汇AI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 计算机如何理解自然语言
  • II. 计算
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档