人工智能之自然语言处理NLP
自然语言是认知的基础,智能的源泉,人类智慧的结晶。语言的沟通与交流推动了人类的智能的产生与发展,也不断地将人工智能带到新的高度。
计算机使用的是机器语言(结构化数据),人类讲的是自然语言(非结构化数据)。若想让计算机模仿人类的智能,那么首先就要设计一种机器的内部数据结构来表示自然语言,同时还需要有二者之间的转换机制。自然语言和机器语言二者之间的转换就是彼此理解与生成的关系。自然语言处理的任务,就是实现这种理解与生成。
自然语言处理NLP(Natural Language Processing)是指机器理解并解释人类写作、说话方式的能力,即需要建立能够理解自然语言的系统。自然语言处理(NLP)是计算机科学,人工智能,语言学关注计算机和人类(自然)语言之间的相互作用的领域。
自然语言处理NLP目标是让机器在理解自然语言上像人类一样智能,其最终目标是弥补人类交流(自然语言)和计算机理解(机器语言)之间的差距。显然,作为人工智能一个分支的自然语言处理NLP是人工智能中最困难的问题之一,而对自然语言处理NLP的研究充满了魅力和挑战。
自然语言处理NLP研究内容和范围包括:1)文本朗读(Text to speech)/语音合成(Speech synthesis);2)语音识别(Speech recognition);3)中文自动分词(Chinese word segmentation);4)词性标注(Part-of-speech tagging);5)句法分析(Parsing);6)自然语言生成(Natural language generation);7)文本分类(Text categorization);8)信息检索(Information retrieval);9)信息抽取(Information extraction);10)文字校对(Text-proofing);11)问答系统(Question answering);12)机器翻译(Machine translation);13)自动摘要(Automatic summarization);14)文字蕴涵(Textual entailment) 等。
自然语言处理NLP研究难点包括:1)单词的边界界定;2)词义的消歧;3)句法的模糊性;4)有瑕疵的或不规范的输入;5)语言行为与计划。自然语言处理NLP的困难关键在于消除歧义问题,如词法分析、句法分析、语义分析等过程中存在的歧义问题,简称为消歧。而正确的消歧需要大量的知识,包括语言学知识(如词法、句法、语义、上下文等)和世界知识(与语言无关)。由于歧义的存在给自然语言处理带来两个主要困难:a)当语言中充满了大量的歧义,分词难度很大,同一种语言形式可能具有多种含义;b)消除歧义所需要的知识在获取、表达以及运用上存在困难。由于语言处理的复杂性,合适的语言处理方法和模型难以设计。此外,正确理解人类语言还要有足够的背景知识,特别是对于成语和歇后语的理解。
自然语言处理(NLP)是信息时代最重要的技术之一。通过利用自然语言处理(NLP),开发者可以组织和构建知识来执行自动摘要,翻译,命名实体识别,关系提取,情感分析,语音识别和话题分割等任务。自然语言处理(NLP)的应用无处不在:网络搜索,手写体和印刷体字符识别,语音识别后实现文字转换,信息检索,广告,电子邮件,客户服务,语言翻译,发布报告,抽取与过滤,文本分类与聚类,舆情分析和观点挖掘等。它们分别应用了自然语言处理当中的语法分析、语义分析、篇章理解等技术,是人工智能界最前沿的研究领域。时至今日自然语言处理(NLP)技术的发展已经把自然语言识别准确率从70%提高到了90%以上,但只有当准确率提高到99%及以上时,才能被认定为自然语言处理的技术达到人类水平,这仍然是巨大的困难和挑战。
早期的自然语言处理(NLP)方法是基于规则的方法。现在,自然语言处理(NLP)方法是基于深度学习(Deep Learning)的方法。深度学习模型需要大量的标记数据来训练和识别相关的相关性,汇集这种大数据集是当前NLP的主要障碍之一。深度学习是一个更灵活,直观的方法。自然语言处理(NLP)依靠机器学习来自动学习这些规则,而不是手工编码大量的规则集。深度学习将特征提取这个环节交给深度网络去自动完成,通过更高的计算成本换取更全面更优良的文本特征。一般来说,分析的数据越多,模型越精确。
自然语言处理(NLP)基于深度学习,深度学习是机器学习里面一个比较火的Topic,机器学习主要基于统计学。学习NLP需要数学(微积分、统计与概率、线性代数、动态规划和凸优化等)和机器学习的基础知识。深度学习包括基于稀疏编码、神经网络、基于玻尔兹曼机的不同深度学习算法。
学习NLP还需要学好语言本身,因为语言是一种约定俗成的社会现象,从表象上看其数据结构是一种序列,但是序列构成上英文和中文有很大的不同。英语的基本语素是简单的词,词性和句法成分较为清晰;而中文由于缺少空格,同时一词多性情况非常多,因此两种语言的研究方法并不完全相同。中文语言在处理时的第一步要做的就是分词。分词之后,还有句法分析、信息抽取、语义理解、知识图谱等研究方向。
在编程方面,学习NLP需要学习Python,Tensorflow(keras),c/c++等。
开源NLP库介绍:
Apache OpenNLP:一种机器学习工具包,提供标记器,句子分段,词性标注,命名实体提取,分块,解析,共参考解析等等;
自然语言工具包(NLTK):2001年推出,至今发展非常活跃。它的主要作用是为了教学,至今已经在20多个国家60多所高校使用,提供用于处理文本,分词,词根计算,分类,标记化,词法分析,语义分析,解析等模块的Python库。
斯坦福的NLP:一套NLP工具,提供词性标注,命名实体识别器,共识解析系统,情感分析等等。
复旦的FNLP:基于机器学习的中文自然语言文本处理开发工具包——复旦自然语言处理(FNLP)。
结语
自然语言处理(NLP)是计算机科学领域与人工智能领域中的一个重要方向。自然语言处理(NLP)是一门融语言学、计算机科学、数学和人工智能于一体的科学。NLP 是一个困难的领域,对语言的理解需要不断完善,但又充满了希望,而且进步快速。自然语言处理(NLP)很可能是人工智能的下一个突破口。我们相信 NLP持续发展将改变人们的生活和工作方式,而且还将重塑互联网的未来。
领取专属 10元无门槛券
私享最新 技术干货