自然语言处理的简介
首先,介绍一下什么是自然语言处理(也叫自然语言理解):
语言学家刘涌泉在《大百科全书(2002)》中对自然语言处理的定义为:“自然语言处理是人工智能领域的主要内容,即利用电子计算机等工具对人类所特有的语言信息(包括口语信息和文字信息)进行各种加工,并建立各种类型的人-机-人系统,自然语言理解是其核心,其中包括语音和语符的自动识别以及语音的自动合成。”
从微观上讲,自然语言理解是指从自然语言到机器(计算机系统)内部之间的一种映射。
从宏观上看,自然语言理解是指机器能够执行人类所期望的某些语言功能。这些功能包括:
- 回答有关提问;计算机正确地回答用自然语言输入的有关问题
- 提取材料摘要;机器能产生输入文本的摘要
- 同词语叙述;机器能用不同的词语和句型来复述输入的自然语言信息
- 不同语言翻译;机器能把一种语言翻译成另外一种语言
自然语言处理的关键技术
自然语言处理的关键技术包括:词法分析、句法分析、语义分析、语用分析和语句分析。
词法分析
词法分析的主要目的是从句子中切分出单词,找出词汇的各个词素,并确定其词义。
词法分析包括词形和词汇两个方面。一般来讲,词形主要表现在对单词的前缀、后缀等的分析,而词汇则表现在对整个词汇系统的控制。在中文全文检索系统中,词法分析主要表现在对汉语信息进行词语切分,即汉语自动分词技术。通过这种技术能够比较准确的分析用户输入信息的特征,从而完成准确的搜索过程。它是中文全文检索技术的重要发展方向。
不同的语言对词法分析有不同的要求,例如英语和汉语就有较大的差距
汉语中的每个字就是一个词素,所以要找出各个词素是相当容易的,但要切分出各个词就非常难。
如“我们研究所有东西”,可以是“我们—研究所—有—东西”也可是“我们—研究—所有—东西” 。
英语等语言的单词之间是用空格自然分开的,很容易切分一个单词,因而很方便找出句子的每个词汇,不过英语单词有词性、数、时态、派生、变形等变化,因而要找出各个词素就复杂得多,需要对词尾和词头进行分析。如uncomfortable可以是un-comfort-able或uncomfort-able,因为un、comfort、able都是词素。
句法分析
句法分析是对用户输入的自然语言进行词汇短语的分析,目的是识别句子的句法结构,实现自动句法分析过程。其基本方法有线图分析法、短语结构分析、完全句法分析、局部句法分析、依存句法分析等。
分析的目的就是找出词、短语等的相互关系以及各自在句子中的作用等,并以一种层次结构来加以表达。这种层次结构可以是从属关系、直接成分关系,也可以是语法功能关系。
句法分析是由专门设计的分析器进行的,其分析过程就是构造句法树的过程,将每个输入的合法语句转换为一棵句法分析树。
一个句子是由各种不同的句子成分组成的。这些成分可以是单词、词组或从句。句子成分还可以按其作用分为主语、谓语、宾语、宾语补语、定语、状语、表语等。这种关系可用一棵树来表示,如对句子: He wrote a book.
可用图示的树型结构表示:
语义分析
语义分析是基于自然语言语义信息的一种分析方法,其不仅仅是词法分析和句法分析这样语法水平上的分析,而是涉及到了单词、词组、句子、段落所包含的意义。其目的是从句子的语义结构表示言语的结构。中文语义分析方法是基于语义网络的一种分析方法。语义网络则是一种结构化的,灵活、明确、简洁的表达方式。
语用分析
语用分析相对于语义分析又增加了对上下文、语言背景、环境等的分析,从文章的结构中提取到意象、人际关系等的附加信息,是一种更高级的语言学分析。它将语句中的内容与现实生活的细节相关联,从而形成动态的表意结构。
语境分析
语境分析主要是指对原查询语篇以外的大量“空隙”进行分析从而更为正确地解释所要查询语言的技术。这些“空隙”包括一般的知识,特定领域的知识以及查询用户的需要等。它将自然语言与客观的物理世界和主观的心理世界联系起来,补充完善了词法、语义、语用分析的不足。
自然语言处理的工具
OpenNLP
OpenNLP是一个基于Java机器学习工具包,用于处理自然语言文本。支持大多数常用的 NLP 任务,例如:标识化、句子切分、部分词性标注、名称抽取、组块、解析等。
FudanNLP
FudanNLP主要是为中文自然语言处理而开发的工具包,也包含为实现这些任务的机器学习算法和数据集。本工具包及其包含数据集使用LGPL3.0许可证。开发语言为Java。
自然语言处理工具的主要功能有:
- 文本分类、新闻聚类
- 中文分词、词性标注、实体识别、关键词抽取、依存句法分析、时间短语识别
- 结构化学习、在线学习、层次分类、聚类、精确推理。
自然语言处理的过程
获取原始文本-文本预处理-分词-去停用词-特征选择-利用算法进行文本挖掘
文本中起到关键作用的是一些词,甚至主要词就能起到决定文本取向,因此分词是中文文本处理比较重要的部分
中文分词,出现了很多分词的算法,有最大匹配法、最优匹配法、机械匹配法、逆向匹配法、双向匹配法等。
中科院张华平博士研发的分词工具ICTCLAS,该算法经过众多科学家的认定是当今中文分词中最好的,并且支持用户自定义词典,加入词典;对新词,人名,地名等的发现也具有良好的效果。
常见的分词工具有:word分词器、Ansj分词器、Stanford分词器、FudanNLP分词器、Jieba分词器、Jcseg分词器、MMSeg4j分词器、IKAnalyzer分词器、Paoding分词器、smartcn分词器、HanLP分词器等。
在文本处理建模的预处理过程中,我们得到文本特征维度常常非常大,要得到一个好的模型,需要做两个工作:1、降维。模型的维度常常很大,这会加大模型的运行成本,并且不利于研究人员理解模型。2、去燥。维度很大时,特征之间会相互依赖,甚至很多特征对模型分类是有干扰作用的,去除这一部分特征将对模型有提升作用。特征选择和特征抽取都能完成上面的工作。
在文本处理中常采用特征选择而非特征抽取, 原因是特征选择保持了特征原来的面貌,有利于挖掘人员理解模型。
常见的特征选择算法有以下几种:
- TF-IDF
词频(TF)即为词在一篇文档中出现的频率。
其中T Ft,d表示词t在第d个文档的词频,nt表示词t在文档d出现的次数,Nd表示文档d 中词的总数。
逆向文档频率(IDF)值衡量词在某个文档中是否有代表性,其计算公式:
其中IDFt是词t的逆向文档频率,D是语料集的总文档数,Dt是包含t的文档数量,加 1是做平滑处理。
TF-IDF是和标签无关的,这意味着计算过程是无监督的,由于TF-IDF无监督的特征,常常被用来表示文档向量空间模型的向量,从而能够运用于文档的相似度计算和关键词提取等。
- 信息增益(Information Gain)
信息增益是信息论中很重要的一个概念。在特征选择中,该方法主要是通过评估词项能够给分类带来多少的信息量,带来的信息量越大,说明该词项越重要。
信息量,也就是熵。对于一个变量X,它可能的取值有n多种,分别是{x1 ,x2 ,…,xn },每一种取到的概率分别是{p1 ,p2 ,…,pn },那么X的熵就定义为:
- 互信息(Mutual Information)
互信息是信息论中又一重要的概率,在文本处理中用来说明词t对于类别c的贡献程度,互信息越大则贡献程度越大。互信息计算是类别c关于t后验概率与先验概率的比值的 log。
准备工作完成后,就可以用各种算法进行挖掘,可以对文本、新闻等进行分类、聚类,可以利用KNN算法,朴素贝叶斯算法、决策树算法、神经网络法、线性最小二乘法、K-Means算法等算法。
自然语言处理的应用
自然语言处理的范围涉及众多方面,如语音的自动识别与合成,机器翻译,自然语言理解,人机对话,信息检索,文本分类,自动文摘,等等。
这些大致可以归纳为如下四个大的方向:
语言学方向
它只研究语言及语言处理与计算相关的方面,而不管其在计算机上的具体实现。这个方向最重要的研究领域是语法形式化理论和数学理论。
数据处理方向
是把自然语言处理作为开发语言研究相关程序以及语言数据处理的学科来研究。这一方向早起的研究有属于数据库的建设、各种机器可读的电子词典的开发,近些年来则有大规模的语料库的涌现。
人工智能和认知科学方向
在这个方向,自然语言处理被作为在计算机上实现自然语言能力的学科来研究,探索自然语言理解的只能机制和认知机制。这一方向的研究与人工智能以及认知科学关系密切。
语言工程方向
主要是把自然语言处理作为面向实践的、工程化的语言软件开发来研究,这一方向的研究一般称为“人类语言技术”或者“语言工程”。
推荐书籍
《统计自然语言处理(宗成庆)》
参考链接:信息论:熵与互信息