一、介绍
1、概念
NLP(Natural Language Processing,自然语言处理)是计算机科学领域以及人工智能领域的一个重要的研究方向,它研究用计算机来处理、理解以及运用人类语言(如中文、英文等),达到人与计算机之间进行有效通讯。所谓“自然”乃是寓意自然进化形成,为了区分一些人造语言(如:c++、java等人为设计的语言)这些年, NLP 研究取得了长足的进步,逐渐发展成独立的学科,从自然语言的角度出发,NLP 基本可以分为两个部分 自然语言处理以及自然语言生成,演化为理解和生成文本的任务。
2、分类
NLP 基本可以分为两个部分 自然语言处理以及自然语言生成,演化为理解和生成文本的任务。
1)自然语言理解
自然语言的理解是个综合的系统工程,它又包含了很多细分学科,有代表声音的音系学,代表构词法的词态学,代表语句结构的句法学,代表理解的语义句法学和语用学。
- 音系学:指代语言中发音的系统化组织
- 词态学 :研究单词构成以及相互之间的关系
- 句法学: 给定文本的哪部分是语法正确的
- 语义学: 给定文本的含义是什么
- 语用学:文本的目的是什么?
2)自然语言生成
语言理解涉及语言、语境和各种语言形式的学科 而自然语言生成( Naturnguage Generation, NLG )恰恰相反,从结构化数据中以读取的方式自动生成文本,该过程主要三个阶段:
- 文本规划(完成结构化数据中的基础内容规划)
- 语句规划(数据中组合语句来表达信息流)
- 实现(产生语法通顺的语句来表达文本)
3、NLP 的研究任务
NLP 可以被应用于很多领域,这里大概总结出以下几种通用的应用:
- 机器翻译:计算机具备将一种语言翻译成另一种语言的能力。
- 情感分析:计算能够判断用户评论是否积极。
- 智能问答:计算机能够正确回答输入的问题。
- 文摘生成:计算机能够准确归纳、总结并产生文本摘要。
- 文本分类:计算机能够采集各种文章, 进行主题分析,从而进行自动分类。
- 舆论分析:计算机能够判断目前舆论的导向。
- 知识图谱:知识点相互连接而成的语义网络。
二、基本术语
1、分词( segment)
- 词是最小的能够独立活动的有意义的语言成分, 英文单词之间是以空格作为自然分界符的,而汉语是以字为基本的书写单位,词语之间没有明显的区分标记,因此,中文词语分析是中文分词的基础与关键
- 中文和英文都存在分词的需求,不过相较而言,英文单词本来就有空格进行分割,所以处理起来相对方便。但是,由于中文是没有分隔符的,所以分词的问题就比较重要。分词常用的手段是基于字典的最长串匹配,据说可以解决 85%的问题,但是歧义分词很难。举个例子,“美国会通过对台售武法案”,我们既可以切分为 “美国/会/通过对台售武法案”, 又可 以切分成“美/国会/通过对台售武法案”。
2、词性标注(part of speec tagging )
- 词性标注是自然语言处理中的一项任务,旨在为一段文本中的每个词汇确定其相应的词性(也称为词类)。
- 词性通常包括名词、动词、形容词、副词、代词、介词、连词等,通过对文本进行词性标注,可以帮助计算机理解文本的语法结构和语义含义。
3、命名实体识别(NER, Named Entity Recognition )
命名实体是指从文本中识别具有特定类别的实体(通常是名词),例如人名、地名、机构名、专有名词等。
4、句法分析(synta parsing )
- 句法分析的目的是解析句子中各个成分的依赖关系
- 所以,往往最终生成的结果是一棵句法分析树
- 句法分析可以解决上下文无关问题(类似于编译的句法分析)
5、指代消解( anaphora resolution)
中文中代词出现的频率很高,它的作用的是用来表征前文出现过的人名、地名等例如,清华大学坐落于北京,这家大学是目前中国最好的大学之一 在这句话中,其实“清华大学”这个词出现了两次,“这家大学”指代的就是清华大学 但是出于中文的习惯,我们不会把“清华大学”再重复一遍。
6、情感识别( emotion recognition)
- 所谓情感识别,本质上是分类问题,经常被应用在舆情分析等领域
- 情感一般可以分为两类,即正面、负面,也可以是三类,在前面的基础上,再加上中性类别一般来说,在电商企业,情感识别可以分析商品评价的好坏,以此作为下一个环节的评判依据
- 通常可以基于词袋模型+分类器,或者现在流行的词向模型+RNN。经过测试发现,后者比前者准确率略有提升
7、纠错( correction)
- 自动纠错在搜索技术以及输入法中利用得很多。
- 由于用户的输入出错的可能性比较大,出锚的场景也比较多。所以,我们需要一个纠错系统
- 具体做法有很多,可以基于N-Gram 进行纠错,也可以通过字典树 有限状态机等方法进行纠错。
8、问答系统( QA system)
这是一种类似机器人的人工智能系统 比较著名的有:苹果 Siri, IBM Watson 、微软小冰等 问答系统往往需要语音识别 合成,自然语言理解、知识图谱等多项技术的配合才会实现得比较好。
三、知识结构
作为一门综合学科, NLP 是研究人与机器之间用自然语言进行有效通信的理论和方法这需要很多跨学科的知识,需要语言学、统计学、最优化理论、机器学习、深度学习以及自然语言处理相关理论模型知识做基础 作为一门杂学, NLP 可谓是包罗万象,体系化与特殊化并存,这里简单罗列其知识体系:
1、语法语义分析
针对目标句子,进行各种句法分析,如分词、词性标记、命名实体识别及链接、句法分析、语义角色识别和多义词消歧等。
2、关键词抽取
抽取目标文本中的主要信息,比如从一条新闻中抽取关键信息主要是了解是谁、于何时、为何、对谁、做了何事 、产生了有什么结果 涉及实体识别、时间抽取 、因果关系抽取等多项关键技术。
3、文本挖掘
- 主要包含了对文本的聚类、分类、信息抽取
- 摘要、情感分析以及对挖掘的信息和知识的可视化、交互式的呈现界面。
4、机器翻译
- 将输入的源语言文本通过自动翻译转化为另一种语言的文本
- 根据输入数据类型的不同,可细分为文本翻译 、语音翻译、手语翻译、图形翻译等。
- 机器翻译从最早的基于规则到二十年前的基于统计的方法,再到今天的基于深度学习(编解码)的方法,逐渐形成了一套比较严谨的方法体系。
5、信息检索
- 对大规模的文档进行索引 可简单对文档中的词汇,赋以不同的权重来建立索引,也可使用算法模型来建立更加深层的索引
- 查询时,首先对输入比进行分析,然后在索引里面查找匹配的候选文档,再根据一个排序机制把候选文档排序,最后输出排序得分最高的文档。
6、问答系统
针对某个自然语言表达的问题,由问答系统给出个精准的答案。需要对自然语言查询语句进行语义分析,包括实体链接、关系识别,形成逻辑表达式,然后到知识库中查找可能的候选答案并通过一个排序机制找出最佳的答案。
7、对话系统
系统通过多回合对话 ,跟用户进行聊天、回答、完成某项任务 主要涉及用户意图理解、通用聊天引擎、问答引擎、对话管理等技术。此外,为了体现上下文相关,要具备多轮到话能力 同时,为了体现个性化,对话系统还需要 基于用户画像做个性化回复。知识结构结构图如图1-3所示。
四、NLP的几个层面
1、词法分析
- 词法分析包括汉语的分词和词性标注这两部分
- 之前有提过,汉语分词与英文不同,汉语书面词语之间没有明显的空格标记,文本中的句子以字符串的方式出现,句子中由逗号分隔,句子和句子之间常以句号分隔
- 针对汉语这种独特的书面表现形式,汉语的自然语言处理的首要工作就是要将输入的文本切分为单独的词语,然后在此技术上进行其他更高级的分析。
上述这个步骤称为分词
除了分词之外,词性标注也通常被认为是词法分析的一部分,词性标注的目的是为每一个词赋予一个类别,这个类别可以是名词( noun)、动词(verb)、形容词(adjectiv)等。通常来说,属于相同词性的词,在句法中承担类似的角色。
2、句法分析
- 句法分析是对输入的文本以句子为单位,进行分析以得到句子的句法结构的处理过程
- 对句法结构进行分析,一方面是为了帮助理解句子的含义,另一方面也为更高级的自然语言处理任务提供支持(比如机器翻译、情感分析等)
- 目前业界存在三种比较主流的句法分析方法:
- 短语结构句法体系,作用是识别出句子中的短语结构,以及短语之间的层次句法关系;
- 依存结构句法体系,作用是识别句子中词与词之间的相互依赖关系;
- 深层文法句法分析,利用深层文法,例如词汇树邻接文法,组合范畴文法等对句子进行深层的句法以及语义分析。
上述几种句法分析,依存句法分析属于浅层句法分析,其实现过程相对来说比较简单而且适合在多语言环境下应用,但是其所能提供的信息也相对较少。深层文法句法分析可以提供丰富的句法和语义信息,但是采用的文法相对比较复杂,分析器的运行复杂度也比较高,这使得深层句法分析不太适合处理大规模的数据。短语结构句法分析介于依存句法分析和深层文法句法分析之间。
3、语义分析
- 语义分析的最终目的是理解句子表达的真实语义 但是,语义应该采用什么表示形式一直困扰着 究者 ,至今这个问题也没有个统一的答案
- 语义角色标注( semantic role labeling )是目前比较成熟的浅层语义分析技术。
- 语义角色标注一般都在句法分析的基础上完成,句法结构对于语义角色标注的性能至关重要
- 基于逻辑表达的语义分析也得到学术界的长期关注。出于机器学习模型复杂度、效率的考虑,自然语言处理系统通常采用级联的方式,即分词、词性标注、句法分析、语义分析分别训练模型
- 实际使用时,给定输入句子,逐一使用各个模块进行分析,最终得到所有结果。
近年来,随 研究工作的深入,研究者们提出了很多有效的联合模型,将多个任务联合学习和解码,如分词词性联合、词性句法联合、分词词性句法联合、句法语义联合等。联合模型通常都可以显著提高分析质量,原因在于联合模型可以让相互关联的多个任务互相帮助,同时对于任何单任务而言,人工标注的信息也更多了 然而,联合模型的复杂度更高,速度也更慢。
五、语料库
1、中国维基百科
- 维基百科是最常用且权威的开放网络数据集之一 ,作为极少数的人工编辑、内容丰富、格式规范的文本语料,各类语言的维基百科在 NLP 等诸多领域应用广泛
- 维基百科提供了开放的词条文本整合下载,可以找到你需要的指定时间、指定语言、指定类型、指定内容的维基百科数据,中文维基百科数据是维基提供的语料库。
2、搜狗新闻语料库
来自若干新闻站点 2012年6月~7月期间国内、国际 体育、社会、娱乐等 18个频道的新闻数据,提供 URL 和正文信息。
3、IMDB 情感分析语料库
-
互联网电影资料库( Internet Movie Database ,简称 IMDb )是 个关于电影演员、电影、电视节目、电视明星和电影制作的在线数据库 IMDb 的资料中包括了影片的众多信息、演员、片长、内容介绍 分级、评论等 对于电影的评分目前使用最多的就是 IMDb评分。
-
还有豆瓣读书相关语料(爬虫获取) 邮件相关语料等。