近年来,自然语言处理都比较火热,掀起了国内研究NLP的一股热潮。最近我也一直在学习自然语言处理,就一些知识做一个总结,方便自己以后观看,也希望可以给他们提供一些借鉴。
现在的机器翻译已经很成熟了,例如我们经常用的百度翻译或者谷歌翻译,只要我们输入中文或者英文,都能自动转换为自己想要的语言。例如:
从图中可以看出,语法是正确的,表达的还算通俗易懂,最起码没有在理解上给人产生误解。那么这种机器翻译是怎么做到的呢?其实整体就是给定一个语料库,然后我们进行统计,进行匹配,这就是早期NLP的思想。接下来给大家介绍一下NLP的相关知识。
NLP(Natural Language Processing )其实就是NLU(Natural Language Understanding) 以及NLG(Natural Language Generation)的组合。NLP要比其他人工智能(Computer Version)更难,由于自然语言处理是从文本或者其他材料中提取出来,它有两个过程:从语音转化为语义,另外就是根据语义产生一种人们能够接受的语音。由于一个词有很多含义,这就要求NLP要做到根据上下文进行理解特定语境下相应的含义,这对于NLP来说就比较难了。
目前NLP主要存在三个问题:语言模型、翻译模型、解码(Decoding)问题。其中语言模型包括:给定一句英文e,计算概率p(e)。如果是符合英文语法的,则p(e)会很大。如果是随机语句,则p(e)会很小。翻译模型即给定一对
语言模型主要包括建立语言模型的方法、求解的问题。一个好的语言模型会给我们后期的机器翻译系统翻译的准确率带来很大的帮助。
在建立语言模型时,会出现自由参数数目过多的问题,为了解决这一问题,我们引入了Markov假设:随意一个词出现的概率只与它前面出现的有限的n个词有关。基于上述的假设的统计语言模型被称为N-gram语言模型。通常情况下,n的取值不能够太大,否则自由参数过多的问题依旧存在:
(1)当n=1时,即一个词的出现与它周围的词是独立,这种我们称为unigram,也就是一元语言模型,此时自由参数量级是词典大小V。
(2)当n=2时,即一个词的出现仅与它前面的一个词有关时,这种我们称为bigram,叫二元语言模型,也叫一阶马尔科夫链,此时自由参数数量级是V^2。
(3)当n=3时,即一个词的出现仅与它前面的两个词有关,称为trigram,叫三元语言模型,也叫二阶马尔科夫链,此时自由参数数量级是V^3。
一般情况下只使用上述取值,因为从上面可以看出,自由参数的数量级是n取值的指数倍。从模型的效果来看,理论上n的取值越大,效果越好。但随着n取值的增加,效果提升的幅度是在下降的。同时还涉及到一个可靠性和可区别性的问题,参数越多,可区别性越好,但同时单个参数的实例变少从而降低了可靠性。
情感分析的流程主要包括输入语句——> 特征工程——> 模型 ——> 情感值
情感分类又称情感倾向性分析,是指对给定的文本,识别其中主观性文本的倾向是肯定还是否定的,或者说是正面还是负面的,是情感分析领域研究最多的。通常网络文本存在大量的主观性文本和客观性文本。客观性文本是对事物的客观性描述,不带有感情色彩和情感倾向,主观性文本则是作者对各种事物的看法或想法,带有作者的喜好厌恶等情感倾向。情感分类的对象是带有情感倾向的主观性文本,因此情感分类首先要进行文本的主客观分类。文本的主客观分类主要以情感词识别为主,利用不同的文本特征表示方法和分类器进行识别分类,对网络文本事先进行主客观分类,能够提高情感分类的速度和准确度。纵观目前主观性文本情感倾向性分析的研究工作,主要研究思路分为基于语义的情感词典方法和基于机器学习的方法。
中文分词是中文自然语言处理的一个非常重要的组成部分,在学界和工业界都有比较长时间的研究历史,也有一些比较成熟的解决方案。中文分词是中文文本处理的一个基础步骤,也是中文人机自然语言交互的基础模块。不同于英文的是,中文句子中没有词的界限,因此在进行中文自然语言处理时,通常需要先进行分词,分词效果将直接影响词性、句法树等模块的效果。当然分词只是一个工具,场景不同,要求也不同。在人机自然语言交互中,成熟的中文分词算法能够达到更好的自然语言处理效果,帮助计算机理解复杂的中文语言。竹间智能在构建中文自然语言对话系统时,结合语言学不断优化,训练出了一套具有较好分词效果的算法模型,为机器更好地理解中文自然语言奠定了基础。
词性标注即在给定的句子中判定每个词最合适的词性标记。词性标注的正确与否将会直接影响到后续的句法分析、语义分析,是中文信息处理的基础性课题之一。常用的词性标注模型有 N 元模型、隐马尔科夫模型、最大熵模型、基于决策树的模型等。其中,隐马尔科夫模型是应用较广泛且效果较好的模型之一。这里主要以HMM为主进行讲解即基于隐马尔科夫模型的词性标注方法。
命名实体识别(Named EntitiesRecognition,NER),就是识别这些实体指称的边界和类别。主要关注人名、地名和组织机构名这三类专有名词的识别方法。和自然语言处理研究的其他任务一样,早期的命名实体识别方法大都是基于规则的。系统的实现代价较高,而且其可移植性受到一定的限制。自20世纪90年代后期以来,尤其是进入21世纪以后,基于大规模语料库的统计方法逐渐成为自然语言处理的主流,一大批机器学习方法被成功地应用于自然语言处理的各个方面。根据使用的机器学习方法的不同,我们可以粗略地将基于机器学习的命名实体识别方法划分为如下四种:有监督的学习方法、半监督的学习方法、无监督的学习方法、混合方法。
句法分析是自然语言处理(natural language processing, NLP)中的关键底层技术之一,其基本任务是确定句子的句法结构或者句子中词汇之间的依存关系。句法分析分为句法结构分析(syntactic structure parsing)和依存关系分析(dependency parsing)。以获取整个句子的句法结构或者完全短语结构为目的的句法分析,被称为成分结构分析(constituent structure parsing)或者短语结构分析(phrase structure parsing);另外一种是以获取局部成分为目的的句法分析,被称为依存分析(dependency parsing)。如下句法结构树示例:
接下来是依存分析示意图:
目前的句法分析已经从句法结构分析转向依存句法分析,一是因为通用数据集Treebank(Universal Dependencies treebanks)的发展,虽然该数据集的标注较为复杂,但是其标注结果可以用作多种任务(命名体识别或词性标注)且作为不同任务的评估数据,因而得到越来越多的应用,二是句法结构分析的语法集是由固定的语法集组成,较为固定和呆板;三是依存句法分析树标注简单且parser准确率高。
信息抽取(information extraction),即从自然语言文本中,抽取出特定的事件或事实信息,帮助我们将海量内容自动分类、提取和重构。这些信息通常包括实体(entity)、关系(relation)、事件(event)。例如从新闻中抽取时间、地点、关键人物,或者从技术文档中抽取产品名称、开发时间、性能指标等。显然,信息抽取任务与命名实体识别任务类似,但相对来说更为复杂。有时,信息抽取也被称为事件抽取(event extraction)。与自动摘要相比,信息抽取更有目的性,并能将找到的信息以一定的框架展示。自动摘要输出的则是完整的自然语言句子,需要考虑语言的连贯和语法,甚至是逻辑。有时信息抽取也被用来完成自动摘要。由于能从自然语言中抽取出信息框架和用户感兴趣的事实信息,无论是在知识图谱、信息检索、问答系统还是在情感分析、文本挖掘中,信息抽取都有广泛应用。信息抽取主要包括三个子任务:实体抽取与链指:也就是命名实体识别,关系抽取:通常我们说的三元组(triple)抽取,主要用于抽取实体间的关系,事件抽取:相当于一种多元关系的抽取。以下是关系抽取的过程的一个案例:
本文主要从一个谷歌翻译的案例引入了NLP的概念,并且介绍了目前NLP存在的问题以及大致介绍了NLP用到的核心技术,同时也简单介绍了NLP的目前应用的领域以及研究的方向。这篇是关于NLP的概述,因此涉及到的均为论述型的问题,很少涉及技术的内容,主要是让想要学习NLP的同道中人可以有一个宏观的了解,大致了解NLP 主要学习哪些内容,可以做什么应用,希望对初学者有更大的帮助。由于本人也是初学NLP,因此,里面有一些错误还请广大读者多多包涵。
本文主要参考了一下的文献
[1] 自然语言处理之语言模型(LM)
[2] NLP —文本情感分析
[3] NLP系列学习:文本分词
[4] NLP — 词性标注
[5] NLP之中文命名实体识别
[6] NLP底层技术之句法分析
[7] 信息抽取——关系抽取