2.1 什么是自然语言处理
我们平常使用的语言,如日语或英语,称为自然语言(natural language)。所谓自然语言处理(Natural Language Processing,NLP),顾名思义,就是处理自然语言的科学。简单地说,它是一种能够让计算机理解人类语言的技术。换言之,自然语言处理的目标就是让计算机理解人说的话,进而完成对我们有帮助的事情。
另外,说到计算机可以理解的语言,我们可能会想到编程语言或者标记语言等。这些语言的语法定义可以唯一性地解释代码含义,计算机也能根据确定的规则分析代码。
众所周知,编程语言是一种机械的、缺乏活力的语言。换句话说,它是一种“硬语言”。而英语或日语等自然语言是“软语言”。这里的“软”是指意思和形式会灵活变化,比如含义相同的文章可以有不同的表述,或者文章存在歧义,等等。另外,自然语言的“软”还体现在,新的词语或新的含义会随着时代的发展不断出现。
自然语言是活着的语言,具有“柔软性”。因此,要让“头脑僵硬”的计算机去理解自然语言,使用常规方法是无法办到的。但是,如果我们能办到,就能让计算机去完成一些对人们有用的事情。事实上,我们可以看到很多这样的应用。搜索引擎和机器翻译就是两个比较好理解的例子,除此之外,还有问答系统、假名汉字转化(IME)、自动文本摘要和情感分析等,在我们身边已经使用了很多自然语言处理技术。
问答系统是自然语言处理技术的一个应用。作为代表,国际商业机器公司(IBM)的Watson系统非常有名。2011年,美国的一档答题闯关节目《危险边缘》 (Jeopardy!)让Watson名声大噪。在这个节目中,Watson的答题比任何人都准确,战胜了往届的冠军(不过,给Watson的问题是用文本给出的)。这一“事件”引起了世人的广泛关注,大概也是从这个时候开始,人们对人工智能的期待和不安都开始增加。此外,IBM将Watson称为决策支援系统。最近,有媒体报道,Watson利用过往的大量医疗数据,针对疑难症提供了正确的治疗建议,挽救了患者生命。
单词含义
我们的语言是由文字构成的,而语言的含义是由单词构成的。换句话说,单词是含义的最小单位。因此,为了让计算机理解自然语言,让它理解单词含义可以说是最重要的事情了。
本章的主题是让计算机理解单词含义。确切地说,我们将探讨一些巧妙地蕴含了单词含义的表示方法。具体来说,本章和下一章将讨论以下3种方法。
·基于同义词词典的方法 本章
·基于计数的方法 本章
·基于推理的方法(word2vec) 下一章
首先,我们将简单介绍一下使用人工整理好的同义词词典的方法。然后,对利用统计信息表示单词的方法(这里称为“基于计数的方法”)进行说明。这些都是本章学习的内容。在下一章,我们将讨论利用神经网络的基于推理的方法(具体来说,就是word2vec方法)。本章的结构参考了斯坦福大学课程“CS224d: Deep Learning for Natural Language Processing”[10]。