【NLP】自然语言处理专栏上线,带你一步一步走进“人工智能技术皇冠上的明珠”。

大家好,今天小Dream哥在有三AI开设新专栏《自然语言处理(NLP)》。在这个专栏中,我们会讲述自然语言处理相关的内容,覆盖自然语言处理基础理论,常用模型以及实际应用等内容。

自然语言处理是一门用于理解人类语言、情感和思想的技术,是人工智能皇冠上的明珠。

作者&编辑 | 小Dream哥

作为第一篇,我们先介绍一下自然语言处理(NLP)技术是什么,一个NLP工程师应该掌握哪些技术?

1 NLP技术概述

每次与行外之人谈起自然语言处理(Natural Language Process,NLP),对方往往都是一片茫然。因此,常常感到很苦恼,如何跟一个从未接触过NLP的人,解释NLP到底是什么?毕竟这是一门这么重要的技术(学科),它的发展与应用,会极大的影响这个世界上的每一个行业,每一个人。

那么,到底什么是NLP呢?所谓自然语言处理,就是用计算机(或者其他计算单元,以下类似)来处理人类的自然语言。那么要理解NLP,首先要理解什么是自然语言。所谓“自然语言”,是相对于计算机语言(计算机能够理解的语言,如汇编、C语言等)而言的,人类日常使用的语言,例如我们都讲的中文,国际语言英文,各地的方言。那么为什么会有NLP这样一个专门的学科(在各大高校都有专门的学科)来研究如何用计算机来处理自然语言呢?

因为计算机设计之初主要是用于计算,或者完成某一项有明确规则任务。所以计算机语言与人类日常使用的语言存在很大的差异,计算机不能直接理解人类语言的含义,即不能直接同人类进行沟通。长期以来,计算机都不能很好的理解人类的语言,通常是程序员写一些规则去笼统的对语句进行一些判断和处理。如何让计算机听懂人话,同人交谈,甚至理解人的情感和文化,这就是NLP要做的事情。

人类语言承载了人的思考、文化等,也是每个人对外交互和表达的最主要手段。NLP就是为了解决这样一个问题而出现的技术。他希望能够使得计算机理解人类的语言,甚至是语言背后的文化、意图与情感。例如说,当你说“我饿了”,计算机能够明白你肚子饿了,并且提出帮你定外卖;当一个女孩子说“我想要苹果”的时候,计算机能够结合当时的情境,明白女孩子说的苹果,到底是水果,还是手机。

那么,现在的NLP技术能够实现上述的目的吗?现在的NLP技术达到了一个什么样水平?具体是一些什么样的技术,能够让机器理解人的思想。

这里我不想再赘述,NLP技术的应用和意义,有太多的人为它背书了。下面我以构建一个能够提供查询天气服务的聊天机器人为例子,来介绍NLP任务中涉及到的一些技术,以及如何用这些技术实现对人类语言的理解。

2 利用NLP技术构建聊天机器人

图1.1 查询天气机器人处理流程

如图1.1所示,展示了目前产业用的查询天气的聊天机器人的业务处理流程,通过对该流程的介绍,相信读者能够对NLP这门技术有一个初步的了解。

首先该机器人的定位为查询天气的机器人,是一种任务型的机器人,用来处理用户查询天气的要求。

1)用户输入的预处理

当用户输入“请问今天深圳的天气怎么样?”这样一段字符串时,需要进行两步预处理才能很好的被后续的NLP模型处理。这两步是分词和词的向量化。

我们知道,在中文中,构成语义的最小单元是词。我们在语文学习的早期,老师也会教我们如何去断句。同样,利用NLP技术去处理一个句子的前提就是“断句”,在NLP中叫分词,就是把句子切分成一个一个的词。例如:“请问今天的天气怎么样?”,分词之后的结果为“请问/今天/深圳/的/天气/怎么样/?”

通过分词,我们将句子切分为一个一个词的表示。这个时候,用户的输入还是几个分隔开的字符串。字符串的编码同语义是毫无关系的,更好的表示词的方式,应该是利用相应NLP技术,将词进行向量化的表示。向量化的表示,可以表示词语之间的关系以及便于后续模型的计算。

2)意图识别

经过预处理之后,用户输入“请问今天深圳的天气怎么样?”变成了一个向量列表[[1,0,0,0,0,0],[0,1,0,0,0,0],[0,0,1,0,0,0], [0,0,0,1,0,0], [0,0,0,0,1,0],[0,0,0,0,0,1]],六个词分别都有他们的向量表示(这里用了one-hot的向量表示法,实际会用词向量)。这个时候,机器人就需要知道用户这句话的目的了。当然,这个机器人比较专注,他只关心用户是不是问天气,如果用户是询问天气,机器人就帮用户查询;如果不是,就做其他的处理。对用户输入的意图进行分析的技术,就是意图识别。本质上,就是各种各样的分类模型。在这个例子中,就是一个二分类模型。

3)实体识别

好了,这个时候,聪明的机器人已经听懂了用户是要查询天气了。但是用户是要查询哪里的天气?什么时候的天气呢?聪明的机器人当然有办法知道了,他有实体识别的工具,可以知道地点是“深圳”,时间是“今天”。实体识别是一项发展了很久,但至今仍然没有得到彻底解决的任务,后面会详细介绍。这个时候,聪明的机器人就能够请求相应的系统,例如中国天气网,去获取深圳今天的天气情况,然后反馈给客户了。

假如用户这样说“今天天气怎么样?”,这个时候,聪明的机器人就需要再问用户地点的信息,这就是对话管理的内容,在后面介绍聊天机器人时,我们再详细介绍。

3 NLP技术栈

怎么样?是不是很简单?所谓的“人工智能技术皇冠上的明珠”的自然语言处理技术是不是感觉也没什么难的?无非就是利用上面那些技能,对用户输入进行处理,获取想要的信息和输出。各种技能的各种模型会层出不穷,但对语言进行处理的思想不会发生太大的变化。好了,我们后面的任务就是逐一的了解各种技能的不同模型的原理及其实现和应用。

如图2.2所示,是一个NLP工程师应该掌握的技能栈。主要包括基础理论和实际应用两个部分。基础理论部分,包括常用的机器学习算法和概念及技巧。实际应用部分包括聊天机器人和知识图谱技术。这是一个庞大的技术图谱,要一一学习和讲解都不是容易的事,但是我们要做的就是不易之事。后续,我会按照该技术图谱一一介绍相应的技术,请大家关注。介绍会尽量做到深入浅出,贴近实践。

该图当然没有包罗所有的NLP技术和应用,但是了解和掌握这些技术之后,你再继续学习其他的技术会变得很简答。

图2.2 NLP工程师技术栈

4 作者介绍

小Deam哥,毕业于华中科技大学电子系。系国内某知名保险公司科技中心AI团队的算法工程师,主要研究方向为聊天机器人以及知识图谱。

总结

软件工程的同学可能会觉得,今天举的机器人的例子,似乎并不是那么“人工智能”。确实,现在NLP技术的发展还处在比较初级的阶段,特别是在产业界,实际生产在用的技术,很多时候都是一些相对较原始的技术。但是这是一门蓬勃发展的技术,特征提取模型从RNN到LSTM,然后是现在最火的Google的Attention。预训练模型从词向量到ELMO,到GPT,到现在GPT2.0与BERT的不断较劲。在这样一个领域,你可以有很多的机会去跟随甚至引领它的发展,你值得关注。

下期预告:NLP中的隐马尔科夫模型(HMM)。

(0)

相关推荐