为什么要处理自然语言? | NLP基础

  • 2019 年 11 月 29 日
  • 筆記

NLP基础系列

1. 浅论语言与认知的关系


为什么要处理自然语言

自然语言处理,英文是Natrual Language Processing,简写为NLP,原本是计算机科学领域的一个研究方向。

早几年,还没有几个外行人知道它。即使是程序员,如果不做NLP相关工作的,也有大多没听说过这个概念。

可是这几年,NLP从一个学术术语迅速爆红成了“社会词”,如今去求职/招聘/职场社交网站上看看,一大堆“自然语言处理”职位……

自然语言处理,怎么忽然一下子就变得重要了呢?让我们先来看看NLP到底是做什么——

处理自然语言

自然语言是什么很容易理解,就是在人类历史发展中自然而然形成的,我们平时用来交流的语言。

比如:汉语、英语、法语、日语、德语、西班牙语……斯瓦希迪语、波斯语、突厥语、吐火罗语……都是自然语言。

我们为什么要处理这些自然语言呢?

如果只是人类相互之间使用同一种自然语言交流,是不需要对这种语言做显性处理的。听-说或读-写的双方都可以直接理解作为中介的这种自然语言。

我们想让别人明白自己的需求,对着他/她的耳朵说话就行。可惜,我们不能这样来和机器交流,因为机器听不懂人类的语言。

机器听得懂什么呢?

  • 机器真正能够“听得懂的话”是一系列在电子元器件中流动的电流的脉冲;
  • 托电子工业的福,人们可以把这些无形的电信号翻译成二进制码(0-1代码);
  • 二进制码再经过进一步编码,形成具备一定可理解性的汇编码;
  • 计算机科学家们发明了程序设计语言,使我们可以用少量取材自英文的关键字加上若干符号来编写程序;
  • 大量程序员的辛苦工作把处理许多日常事务的工作封装成软件,让我们用简单的命令或者鼠标/手指的点点就可以迅速完成任务……

想让机器理解,就要把我们说的话*处理*成机器听得懂的话。这就是自然语言处理。

本来,通过在键盘上敲一行特定字符或者啪啪啪点一溜按钮来操作计算机好像已经挺方便了。

但是,天才计算机科学家阿兰·图灵提出了通过图灵测试判断机器是否具备智能的观点——

图灵测试要求测试者与被测试者通过自然语言进行交流,如果大量测试者中的一定比例在达到了规定长度的交互时间后仍然不能发现与之交流的“人”其实是“一台机器”(硬件或软件),则该机器通过图灵测试,被认为具备了智能。

这个上世纪五十年代提出的测试在半个多世纪前就激发了计算机科学家们要让机器懂人话的雄心。

另一方面,人类现存的巨量自然语言资料和每天都在产生的大量以自然语言提出的要求,从资源和需求两个方面推动着自然语言处理的发展。

NLP要解决的问题

NLP能做哪些事?这是一个很大的话题, 下面我们且列举几个主要的方面:

文本分类

文本分类就是将自然语言文本划分为不同的类别——也就是给文本打上事先定义好的标签,具体是什么标签,由分类任务来确定。

比如:在综合用户评论分析中, 标签可以定义为 “负面”, “中性”, “正面”。而在酒店评论分析中就可以把标签定义为”服务好”, “环境好”, “环境差”等。

文本分类被广泛应用到众多场景之中,例如:

  • 垃圾邮件的检验:垃圾邮件检测的方法有很多, 其中一种就是给邮件打上“垃圾”或“非垃圾”的标签,这是一个典型的二分类问题。
  • 新闻自动分类:通过文本分类技术来给新闻报道归类。
  • 情感分析(倾向性分析):通过给一段文字打上诸如:高兴/失望,或者褒奖/批评之类的标签,来标识文本作者的情绪、情感或倾向性。
  • 自动标签:通过给文本、音频、视频文档打上丰富的标签来描述其特征和属性。

文本分类是NLP技术的一个主要分支, 也是其他很多技术的基础。

命名实体识别(NER)

NER就是在自然语言文本中定位出某些预定义分类的字串。这些预定义的分类一般包括:人名、地名、组织名称、数量、日期和时间等。

下面是一个例子:

Jim bought 300 shares of Acme Corp. in 2006.

这句话里面有一个人名:Jim,一个数字:300,一家公司:Acme Corp,和一个年代:2006。

经过NER处理后,这些字串都会被标识出来:

[Jim](Person)bought [300](Number) shares of [Acme Corp.](Organization)in [2006](Time).

在很多场景中,NER是十分必要的:

  • 将NER运用到新闻稿件的处理中,将涉及到的人物, 地点都标注出来, 方便对其进行索引。
  • 将NER运用到各类网页中,抽取其中的人、地、机构等实体,可以用来提高搜索引擎的效率和准确度。
  • 从商品描述中提取商品类别、品牌等信息, 可以提高货物上架效率。
  • 从短信息或邮件中提取时间、地点等实体,可以方便用户通过点击直接创建日历, 或跳转到地图App等。

更多的问题

上述的两项,属于现在NLP比较成熟的子领域,也是当前NLP应用最广的技术。

此外,NLP还有许多正在研究发展中,虽尚幼稚但前景远大的子领域。我们下面试列几个来看看:

文本相似性检验

检验两个词语、两个句子、两段话乃至两篇文章之间的相似性。其中,词语的相似度检测已经相对成熟, 句子和章节的相似性检测还在研究中。

重复问题归并、文章抄袭检测等现实任务,都在对这项技术殷殷以盼。

拼写检查

包括单词拼写检查, 句子正确性检查等。

当你百度“自然寓言处理”的时候, 百度会自动显示”自然语言处理”的相关结果,这就是拼写检查的一种应用。

拼写检查还广泛应用在各种文字处理系统中。比如,在写这篇文章的过程中,微信客户端就在提示我文中有5个意思错别字。

机器翻译

无须人工,由机器自动将一种人类的自然语言表述翻译成另一种自然语言——这是自NLP诞生以来人们就一直在追求的,也是最早商业化的NLP应用。

机器翻译刚出现时准确性很低,随着近年来将深度学习的引入,机器翻译已经有了较高的可用性。

阅读理解

就是将自然语言文章直接输入给机器,然后针对这些文章问一些问题,看它能不能回答出来。

机器阅读理解近几年有着突飞猛进的发展,现在如日中天的Bert模型,就在阅读理解任务上有很好的效果。

这项技术有着广阔的应用前景。比如,在搜索引擎中,机器阅读理解技术可以用来为用户的搜索(尤其是问题型的查询)提供更为智能的答案。

文本摘要

也就是在长文中提取重点部分形成篇幅短小的“浓缩篇”,为文章生成一个简短的总结性段落。

这是现今这个信息爆炸时代人们的迫切需要。

文本生成

根据输入的关键词句、数据、图像或录音自动写作,撰写出自然语言文本。

有了它,我们是不是就不用学写作文了?

探寻NLP的奥秘

NLP技术当然远不止上述这些。可以说只要有自然语言, 就有要对其进行处理的需求。

将NLP技术与音频处理、图像处理等技术结合, 又会出现诸如视频字幕生成, 图片描述生成等等有趣的应用。各种应用场景层出不穷。

也正因为如此,NLP吸引了越来越多企业的关注,在其上构建各种软件、应用,给我们的生活带来了众多便利。

NLP实在是一个前景无限的朝阳领域!值得我们投入学习,为之努力!本公众号的“NLP基础”系列,就和大家一起,来探寻NLP的奥秘。