置身于大数据时代,组织和企业的不同系统、流程和交易会产生的大量的数据,在管理这些数据时碰到了不少困难。而且,由于大数据对3V一词(volume、variety、velocity)的模糊定义,大数据一词也经常错误使用。有时候很难去量化什么样的数据才是“大”数据,一些人认为数据库里成10亿条的记录就是“大数据”,但是这个量级与传感器或者社交媒体产生的pb级数据相比,又显得很小。总而言之,普遍任务在所有组织中,无论是什么行业,都存在大量的非结构化文本数据。例如,大量的数据可能以tweet、状态消息、散列标签、文章、博客、wiki等形式出现在社交媒体上,另外,零售和电商也会生成大量的文本数据,如从新产品信息和到客户评论和反馈产生的元数据信息,凡此种种,皆有可能。
与文本数据相关联的挑战主要有两个,第一个挑战就是如何有效地存储和管理这些数据。文本数据通常以非结构化的形式存在,且不遵循任何特定的预设数据模型,也不符合关系型数据库的模式(Schema)定义。不过,基于语句的语义(semantics),可以存储在基于SQL的数据管理系统中,如SQL Server或MySQL,也可以存储在基于NoSQL的系统,如MongoDB、CouchDB等,最近以来,也常存储在基于信息检索的数据存储中,如ElasticSearch和Solr。
拥有大量文本数据集的组织通常将数据保存在数据仓库和基于文件的系统当中,如Hadoop,在Hadoop上可以将所有数据转储到HDFS(Hadoop分布式文件系统)上按需访问,这也是数据湖的主要设计原则之一。
第二个与分析文本数据相关的挑战就是如何从中获取有意义、有价值的信息。虽然现在我们拥有大量的机器学习和数据分析技术,但其中绝大多数都是针对数值数据进行了优化。所以,我们必须使用专门用于自然语言处理的技术、转换和模型来分析文本数据,更具体来讲,是自然语言。这与结构化数据和普通编程语言的处理截然不同,后者很容易被机器理解。请记住,文本数据是高度非结构化的,因此它不遵循结构化或规则的语法和模式。因此,我们不能直接使用统计学或机器学习模型来分析这些数据。
非结构化数据,尤其是文本、图像和视频,蕴含着丰富的信息。虽然,这是座潜在的金矿,但是,由于处理和分析该类数据固有的复杂性,处理这种非结构化数据所要花费的时间和精力,让习惯处理结构化数据的人常常望而却步。自然语言处理(NLP,Natural Language Processing)就是利用相关的工具、技术和算法处理和和理解基于自然语言的数据,这些数据通常包括文本、语音等非结构化的数据。然而,在深入研究文本数据分析的特定技术或算法之前,我们将会介绍一些与自然语言和非结构化文本相关的核心概念和原则,这样做的主要目的是让你熟悉与自然语言处理和文本分析相关的概念和领域。
本书主要使用Python编程易语言处理和分析文本数据,作为修订版,我们使用的是Python3.x,以及最新的开源框架用于分析。本章的例子都非常简单易懂,但是,如果您想在阅读本章之前先了解Python、基本框架和架构,那么可以快速浏览第2章“使用Python处理自然语言”。
本章会介绍与自然语言、语言学、文本数据格式、句法(syntax)、语义(semantics)和语法(grammar)相关的概念,所有这些都是NLP本身的主要组成部分,然后讨论更高级的主题,如文本语料库(text corpora)、自然语言处理、深度学习和文本分析。本章展示的所有代码示例都可以在本书的官方GitHub存储库中找到,请通过https://github.com/dipanjanS/text-analytics-with-python/tree/master/New-Second-Edition访问。
1.1 自然语言
文本数据虽然是非结构化数据,但通常属于某种特定的语言,遵循特定的句法和语义。所有文本数据,如简单的单词、句子或文档,都与某种自然语言相关。在本节中,我们将讨论自然语言的定义、语言哲学、语言习得以及语言的使用。
1.1.1 什么是自然语言
要理解文本分析和自然语言处理,首先要理解是什么让语言变得“自然”。简单讲,自然语言不同于如计算机编程语言这种通过人工构建和创造而来的语言,而是人类在自然使用和交流过程中逐渐演进和发展而来的语言。
不同的人类语言,如英语、日语或梵语,都可以称为自然语言。自然语言可以用不同的方式进行交流,包括说话、写作,甚至是使用符号。人们对理解语言的起源、性质和哲学一直充满兴致。我们将在下一节简要进行介绍。
1.1.2 语言哲学
现在我们知道了什么是自然语言。但细想一下如下这些问题,语言的起源是什么?是什么让英语成为“英语”? “水果”一词的意义是如何产生的?人类如何使用语言交流?这些无疑都是些沉甸甸的哲学问题。
来看看语言的哲学层面,主要包含如下四个问题:
语言的自然含义
语言的使用
语言认知(cognition)
语言和现实的关系
语言的含义本质上与语言的语义及含义本身相关,所以,语言哲学家或语言学家尝试找出语言所蕴含的含义确实是“意指”什么含义。例如,各种单词和句子的含义是如何形成的,语言中的单词是怎么成为同义词的,是如何建立关联关系的,等等。更重要的是,语言中的结构和语法如何为语义铺平道路,或者更具体地说,如何将具有自身含义的单词组织在一起,形成更有意义的句子。语言学是研究语言的科学,是专门研究这些问题的学科。
句法、语言、语法和解析树是解决这些问题的一些方法。语言的含义在两个人通过语言交流时表现出来,通常是在说者和听者之间。但从非语言的角度看,身体语言、先前的经历和心理影响等因素对语言的意义起着重要的作用,在这个过程中,每个人都会以自己的方式解析和推论所蕴含的含义,所以,也要考虑这些重要因素。
语言的使用关注的是语言如何作为一个实体在各种场景中使用,以及如何用于人与人之间的交流。这包括分析说话以及叙说是所使用的语言,包括说话人的意图、语调、内容和表达时所涉及的动作。这在语言学上通常被称为“言语行为”。对于一些更高级的概念,如语言创造和人类的认知活动,如语言习得,一门研究语言的学习和使用的学科——同样也倍受关注。
语言认知重点关注人类大脑的认知功能是如何负责理解和解释语言的。我们来看说者和听者这个典型案例,从消息传递到解析会涉及到多个环节。认知研究就是试图找出大脑是如何将特定的词语组合成句子,并将其关联成有意义的信息,以及交流双方在使用语言交流时,语言与人思维过程之间的关系。
语言与现实的关系探讨的是语言表达方面的真实性。语言哲学家们试图衡量这些表达的真实程度,以及它们与真实事件之间的关系。这种关系可以用几种方式表达,我们将探讨其中的一些。
其中最著名的模型之一就是“参考三角形(Triangle of Reference)”,用来描述如何在听者的思想中传递含义和想法,以及这些含义是如何关联回现实世界实体或事实上的。参考三角形是在Charles Ogden和Ivor Richard编著的《表意的含义(The Meaning of Meaning)》一书中首先提及,如图1-1所示:
参考三角形模型也就是所谓的表意的含义模型,图1-1所示为人类感知沙发的真实案例。符号指的是用于描述物体的语言学符号,如单词或其他可以引发人类思考的对象。在这里,符号就是沙发,这让人想到什么是沙发,一件可以用来坐下或躺下放松的家具,一些让我们感到舒适的东西。这些想法就是参考,通过这些参考,人们可以把它关联到现实世界存在的某个物品上,也就是所谓的被参考物。上图中,被参考物就是那个人所感知到的在自己面前的沙发。
另外一个确定语言与现实之间关系的方法是“契合方向(direction of fit)”,这里我们讨论两个主要方向。第一个契合的方向,“单词到世界”所讲的是场景是通过语言的使用来反映现实。这表示使用单词来匹配或关联现实世界中正在发生或已经发生的事情。“埃菲尔铁塔真的很大”这句话就是一个很好的例子,它反映的是现实世界的真是存在。另外一个契合方向,“世界到单词”描述的是通过语言使用改变现实的场景。例如,”我要去游泳“这句话,通过要去游泳来改变现实,通过句子来交流所要表达的事实。图1-2所示两个契合 方向之间的关系:
基于从现实世界感知到的参照物,人可以以符号或单词的形式形成一种表征,从而可以将同样的表征传达给另一个人。这就形成了一个基于所接收到的符号对现实世界的表征,并循环往复。
【1.1未完待续】