Press "Enter" to skip to content

走进NLP的世界——NLP综述

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

1. 什幺是NLP?

 

自然语言处理(NLP)是计算机科学,人工智能和语言学的交叉领域,目标是让计算机处理,理解以及运用人类语言,以执行语言翻译和问题回答等任务。

 

自然语言处理的兴起与机器翻译这一具体任务有着密切联系。机器翻译指的是利用计算机自动地将一种自然语言翻译为另外一种自然语言。例如自动将英文“I love Natural Language Processing”翻译为“我爱自然语言处理”,或者反过来将“我爱自然语言处理”翻译为“I love Natural Language Processing”。然语言处理体现了人工智能的最高任务与境界,也就是说,只有当计算机具备了处理自然语言的能力时,机器才算实现了真正的智能。

 

2. NLP有哪些应用?

 

从研究内容来看,自然语言处理包括语法分析、语义分析、篇章理解等。从应用角度来看,自然语言处理具有广泛的应用前景,特别是在信息时代,自然语言处理的应用包罗万象,例如:机器翻译、手写体和印刷体字符识别、语音识别及文语转换、信息检索、信息抽取与过滤、文本分类与聚类、舆情分析和观点挖掘等,它涉及与语言处理相关的数据挖掘、机器学习、知识获取、知识工程、人工智能研究和与语言计算相关的语言学研究等。在此我想通过做六个项目来一步步的学习NLP技术以及使用的深度学习模型和应用程序。本篇先简单介绍一下这6个模块,后续会详细实现每个模块,敬请关注。

 

3. 模块一:问答系统

 

问答系统主要是由用户提问,然后返回一个最合理的回答。核心思想在于,收集现有的所有问答集,根据用户的提问,由计算机负责解析问题的语义并从问答集中检索出最相关的问题对应的答案返回给用户。另外,为了使系统的鲁棒性更好,我们可以选出最相关的前N个问答组成候选集,然后再根据一定的机制在用户不满意结果时向其提供候选的其他答案。根据知识来源的不同,可以分为三种任务:基于知识库的问答KB-QA,基于文档的问答DB-QA,基于问题答案对。

 

处理流程

 

1.问题分析:如何去分析问题

 

2.信息检索:如何根据问题的分析结果去缩小答案可能存在的范围

 

3. 答案抽取:如何从可能存在答案的信息块中抽取答案

 

3.1 基于知识库的问答系统KB-QA

 

一般只能用于限定领域。给定问题,通过对问题进行语义理解和解析,利用已知的知识库进行查询,推理得出答案。特点是,回答的答案是知识库中的实体,KBQA 适合回答 what,when 等事实性问题;

 

问题分析:根据问题特点来分析问题, 产生一个结构数据的查询语言格式的查询

 

信息检索:将产生的查询提交给管理结构数据的系统 (如数据库等), 系统根据查询的限制条件筛选数据

 

答案抽取:把匹配的数据作为答案返回给用户,由于数据库查询的精确匹配特性, “”的动作不明显

 

 

基于知识库的问答系统KB-QA

 

3.2 基于文档的问答系统DB-QA

 

属于开放领域问答系统。也被称为阅读理解问答任务,对于每个问题,会给定几段文本作为参考,也可能只与问题描述相关,而不含答案。我们需要从文本中抽取一个词或几个词作为答案。DBQA 适合回答 why,how 等解释性、 描述性问题。

 

问题分析:主要是用于分析和理解问题, 从而协助后续的检索和答案提取, 一般具有问句分类、问句主题提取两个主要研究内容

 

信息检索:主要目的是缩小答案的范围, 提高下一步答案抽取的效率和精度。信息检索一般分为两个步骤:文档检索和段落检索

 

答案抽取:主要目的是得到用户想要的答案,满足用户需求.为了提取答案, 一般有两个步骤:生成候选答案集合和提取答案

 

 

基于文档的问答系统DB-QA

 

3.3 基于问题答案对的问答系统

 

基于问题答案对的问答系统研究主要有两个发展阶段:

 

基于常问问题(FAQ)列表的问答系统 研究阶段;

 

基于社区问答(CQA)的问答系统研究阶段。

 

问题分析:问题主客观的判断,问题的紧急性

 

信息检索:研究问题答案对的检索模型,研究问题答案对的相似性

 

答案抽取:由于问题答案对已经有了答案, 答案抽取最重要的工作就是判断答案的质量,研究怎幺从问题的众多答案中选择一个最好的答案

 

 

基于问题答案对的问答系统

 

4. 模块二:情感分析系统

 

文本情感分析(Sentiment Analysis)是指利用自然语言处理和文本挖掘技术,对带有情感色彩的主观性文本进行分析、处理和抽取的过程,从而发现潜在的问题用于预测或改进。情感分析任务按其分析的粒度可以分为篇章级,句子级,词或短语级;按其处理文本的类别可分为基于产品评论的情感分析和基于新闻评论的情感分析;按其研究的任务类型,可分为情感分类,情感检索和情感抽取等子问题。我们根据任务类型来简单介绍一下。

 

4.1 情感分类

 

情感分类又称情感倾向性分析,是指对给定的文本,识别其中主观性文本的倾向是肯定还是否定的,或者说是正面还是负面的。纵观目前主观性文本情感倾向性分析的研究工作,主要研究思路分为基于语义的情感词典方法和基于机器学习的方法。

 

基于语义的情感词典方法

 

构建词典:归为4类:通用情感词、程度副词、否定词、领域词。

 

构建倾向性计算算法:采用权值算法代替传统人工判别或仅利用简单统计的方法进行情感分类。给情感强度不同的情感词赋予不同权值,然后进行加权求和。

 

 

其中, 分别代表表达正面情感和负面情感的词汇数目; 分别代表正面情感词汇和负面情感词汇的权值。

 

3. 确定阈值来判断文本倾向性:一般情况下,加权计算结果为正是正面倾向,结果为负是负面倾向 ,得分为零无倾向。所得结果评价常使用的正确率、召回率和 F 值来评判算法效果。

 

基于机器学习的情感分类方法

 

基于机器学习的情感分类,其大致流程如下:

 

人工标注文本倾向性作为训练集

 

提取文本情感特征:方法有信息增益,CHI 统计量和文档频率等

 

通过机器学习的方法构造情感分类器:K近邻,贝叶斯分类器,支持向量机,条件随机场,最大熵分类器等

 

待分类的文本通过分类器进行倾向性分类

 

4.2 情感检索

 

情感检索是从海量文本中查询到观点信息,根据主题相关度和观点倾向性对结果排序。情感检索返回的结果要同时满足主题相关和带有情感倾向或指定的情感倾向,是比情感分类更为复杂的任务。

 

情感检索有两个主要任务:

 

检索和查询相关的文档或句子

 

对检索的相关文档或句子进行排序

 

4.3 情感抽取

 

情感抽取是指抽取情感文本中有价值的情感信息,其要判断一个单词或词组在情感表达中扮演的角色,包括情感表达者识别,评价对象识别,情感观点词识别等任务。

 

情感表达者识别:又称观点持有者抽取,其是观点、评论的隶属者。在社交媒体和产品评论中,观点持有者通常是文本的作者或者评论员,其的登录账号是可见的,观点持有者抽取比较简单。而对于新闻文章和其他一些表达观点的任务或者组织显式的出现在文档时,观点持有者一般则是由机构名或人名组成,所以可采用命名实体识别方法进行抽取。

 

评价对象识别:评价对象是指某段评论中的主题,是评论文本中评价词语修饰的对象,现有的研究大多将评价对象限定在名词或名词短语的范畴内,一般使用基于模板和规则的方法抽取评价对象。

 

情感观点词识别:情感词的抽取,可以构建领域相关的主题词表和情感词表,情感词表的构建在情感分类部分已做阐述。

 

 

5. 模块三:知识图谱系统

 

通俗地讲,知识图谱就是把所有不同种类的信息连接在一起而得到的一个关系网络。知识图谱是关系的最有效的表示方式,他提供了从“关系”的角度去分析问题的能力。

 

5.1 知识图谱的通用表示方法

 

三元组是知识图谱的一种通用表示方式,基本形式主要包括实体 A、关系、实体 B 和概念、属性、属性值等,实体是知识图谱中的最基本元素,不同的实体间存在不同的关系。概念主要指集合、类别、对象类型、事物的种类,例如人物、地理等;属性主要指对象可能具有的属性、特征、特性、特点以及参数,例如国籍、生日等;属性值主要指对象指定属性的值,例如中国、1988—09—08等。每个实体(概念的外延)可用一个全局唯一确定的 ID 来标识,每个属性—属性值对可用来刻画实体的内在特性,而关系可用来连接两个实体,刻画它们之间的关联。如下图是实体 A 与实体 B 组成的一个简单三元组形式。

 

 

简单三元组形式

 

5.2 知识图谱的体系架构

 

知识图谱主要有自顶向下与自底向上两种构建方式。自顶向下指的是先为知识图谱定义好本体与数据模式,再将实体加入到知识库。该构建方式需要利用一些现有的结构化知识库作为其基础知识库,例如 Freebase 项目就是采用这种方式,它的绝大部分数据是从维基百科中得到的。自底向上指的是从一些开放链接数据中提取出实体,选择其中置信度较高的加入到知识库,再构建顶层的本体模式。目前,大多数知识图谱都采用自底向上的方式进行构建,其中最典型就是 Google 的 Knowledge Vault。

 

 

知识图谱的体系架构

 

5.3 知识图谱的关键技术

 

知识抽取:主要包含实体抽取、关系抽取、属性抽取等,涉及到的 NLP 技术有命名实体识别、句法依存、实体关系识别等。

 

知识表示:主要包含的 NLP 技术有语义相似度计算、复杂关系模型,知识代表模型如距离模型、双线性模型、神经张量模型、矩阵分解模型、翻译模型等。

 

知识融合:在知识融合过程中,实体对齐、知识加工是两个重要的过程。

 

知识推理:主要可分为基于逻辑的推理与基于图的推理两种类别。

 

6. 模块四:对话系统

 

对话系统 (多轮次对话的问答系统) 是一个广受关注的研究分支。同时该领域也细分为垂直领域(只针对某一特定领域)以及开放领域。

 

6.1 问答系统与对话系统的区别

 

对话系统没有必要再一轮的交互中就给出答案,可以有反问机制,从而引导用户按照系统更能接受的方式重新提出需求。这样在此之后用户往往能够更改那些对系统来说不是很规范的表达。(但由此带来了上下文语境问题,为我们的消歧工作带来了麻烦)

 

6.2 模块构成

 

标准的对话系统(传统的流水线式对话系统)一般由四部分构成,分别是自然语言理解、对话管理、知识库管理、答案生成。

 

 

自然语言理解(NLU):自然语言理解模块接受一句自然语言作为输入,首先进行名词实体识别(关键信息抽取),将原句中所有命中的名词实体提取出并替换成相应类别的标识字符串,之后将规范化后生成的句子进行用户意图分析,之后输入到对话管理。3种方法:基于规则的正则模板匹配,基于生成模板的模糊匹配和基于深度学习的方法(解决歧义问题)

 

 

对话管理(DialogueManagement):分为状态管理和策略管理这两个子模块,自然语言理解的计算结果输出到状态管理中,后者依据当前状态以及当前语句的意图类型,对某些有歧义的句子进行消歧处理,最后将当前状态告知策略管理,计算出回答的逻辑形式,输出到答案生成(AG)模块。

 

答案生成模块:设置的目的是让系统能够输出自然语言,使得用户反过来也能理解系统,反馈给用户是否能满足用户的需求甚至是否理解正确用户的输入。

 

7. 模块五:基于神经网络的机器翻译系统

 

机器翻译(machine translation, MT)是用计算机来实现不同语言之间翻译的技术。被翻译的语言通常称为源语言(source language),翻译成的结果语言称为目标语言(target language)。神经网络机器翻译(Neural Machine Translation, NMT)是最近几年提出来的一种机器翻译方法。相比传统的统计机器翻译(SMT),NMT能够训练一张能够从一个序列映射到另一个序列的神经网络,输出的可以是一个变长的序列,这在翻译,对话和文字概括方面能够获得非常好的表现。NMT其实是一种encoder-decoder系统,encoder把源语言序列进行编码,并提取源语言中信息,通过decoder再把这种信息转换成另一种语言即目标语言,从而完成对语言的翻译。

 

 

基于神经网络的机器翻译系统

 

7.1 神经网络的seq2seq学习

 

序列对序列学习,简单来说是给定一个输入序列,对其进行训练,经过迭代生成输出序列。对于深度学习而言,要学习一个序列,难点在于这个序列的长度是变化的,而深度学习的输入和输出的维度一般是固定的,不过有了RNN结构,这个问题就可以解决了,一般在应用的时候encoder和decoder使用的是LSTM或GRU结构。

 

 

如上图,输入一个句子ABC以及句子的终结符号<EOS>,输出的结果为XYZ以及终结符号<EOS>。在encoder中,每一时间步输入一个单词直到输入终结符为止,然后由encoder的最后一个隐藏层作为decoder的输入,在decoder中,最初的输入为encoder的最后一个隐藏层,输出为目标序列词X,然后把该隐藏层以及它的输出X作为下一时间步的输入来生成目标序列中第二个词Y,这样依次进行直到< EOS>。

 

7.2 带注意力机制的seq2seq学习

 

注意力机制的主要作用就是在预测一个目标词汇的时候,会自动查找源语言序列中的哪一部分与他对应,并且在后续查找生词中可以直接复制对应的源语言词。注意力机制分为全局注意力机制(globale attention)和局部注意力机制(local attention)。简单的来说,是使用全部的encoder的隐藏层还是部分。

 

8. 模块六:聊天机器人

 

聊天机器人(也可以称为语音助手、聊天助手、对话机器人等)是目前非常热的一个人工智能研发与产品方向。常见的几种主流技术包括:基于人工模板的聊天机器人、基于检索的聊天机器人、基于机器翻译技术的聊天机器人、基于深度学习的聊天机器人。

 

8.1 常见的主流技术

 

基于人工模板的技术通过人工设定对话场景,并对每个场景写一些针对性的对话模板,模板描述了用户可能的问题以及对应的答案模板。这个技术路线的好处是精准,缺点是需要大量人工工作,而且可扩展性差,需要一个场景一个场景去扩展。应该说目前市场上各种类似于Siri的对话机器人中都大量使用了人工模板的技术,主要是其精准性是其他方法还无法比拟的。

 

基于检索技术的聊天机器人则走的是类似搜索引擎的路线,事先存储好对话库并建立索引,根据用户问句,在对话库中进行模糊匹配找到最合适的应答内容。

 

基于机器翻译技术的聊天机器人把聊天过程比拟成机器翻译过程,就是说将用户输入聊天信息Message,然后聊天机器人应答Response的过程看做是把Message翻译成Response的过程,类似于把英语翻译成汉语。基于这种假设,就完全可以将统计机器翻译领域里相对成熟的技术直接应用到聊天机器人开发领域来。

 

基于深度学习的聊天机器人技术是本文后续内容主要介绍的技术路线,总体而言,绝大多数技术都是在Encoder-Decoder(或者称作是Sequence to Sequence)深度学习技术框架下进行改进的。使用深度学习技术来开发聊天机器人相对传统方法来说整体思路是非常简单可扩展的。

 

8.2 深度学习构建聊天机器人

 

目前对于开放领域生成式聊天机器人技术而言,多数技术采用了Encoder-Decoder框架。Encoder-Decoder框架可以看作是一种文本处理领域的研究模式,应用场景异常广泛,不仅仅可以用在对话机器人领域,还可以应用在机器翻译、文本摘要、句法分析等各种场合。下图是文本处理领域里常用的Encoder-Decoder框架最抽象的一种表示:

 

 

抽象的Encoder-Decoder框架

 

Encoder顾名思义就是对输入句子X进行编码,将输入句子通过非线性变换转化为中间语义表示C,对于解码器Decoder来说,其任务是根据句子X的中间语义表示C和之前已经生成的历史信息来生成i时刻要生成的单词yi,每个yi都依次这幺产生,那幺看起来就是整个系统根据输入句子X生成了目标句子Y。

 

对于聊天机器人来说,完全可以使用上述的Encoder-Decoder框架来解决技术问题。具体而言,对应的<X,Y>中,X指的是用户输入语句,一般称作Message,而Y一般指的是聊天机器人的应答语句,一般称作Response。其含义是当用户输入Message后,经过Encoder-Decoder框架计算,首先由Encoder对Message进行语义编码,形成中间语义表示C,Decoder根据中间语义表示C生成了聊天机器人的应答Response。这样,用户反复输入不同的Message,聊天机器人每次都形成新的应答Response,形成了一个实际的对话系统。

 

在实际实现聊天系统的时候,一般Encoder和Decoder都采用RNN模型,RNN模型对于文本这种线性序列来说是最常用的深度学习模型,RNN的改进模型LSTM以及GRU模型也是经常使用的模型,对于句子比较长的情形,LSTM和GRU模型效果要明显优于RNN模型。尽管如此,当句子长度超过30以后,LSTM模型的效果会急剧下降,一般此时会引入Attention模型,这是一种体现输出Y和输入X句子单词之间对齐概率的神经网络模型,对于长句子来说能够明显提升系统效果。

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注