本文是自然语言处理系列的开篇之作,不足之处请批评指正,大家共同学习,共同进步!
自然语言处理(Nature Language Processing,NLP)是目前机器学习主要应用的一个方向,其在人机对话,知识图谱,机器翻译等领域普遍应用,涉及到的技术广泛,融合了语言学、统计学、数学、计算机科学的交叉领域,要求从业者有较全面的理论功底和技术实力,主要是利用计算机来尝试“明白”人类语言,以此用来代替人们从事某些大量、繁琐的翻译等工作,或者与人类沟通,解答问题,解放人们的双手,由于各国语言不一,不同的词汇在上下文中有不同的意思,多种分词方法等,自然语言处理也是人工智能方向最难的方向之一,甚至被誉为人工智能界“皇冠上的明珠”,因此,在当前人工智能和大数据大热的环境下,无论是国内IT巨头还是国企,人才稀缺,就业前景广泛。
知网(CNKI)近40年以“自然语言处理”为主题检索的发文量
BOSS直聘上“自然语言处理”相关的薪资都在20k~60k/每月,待遇丰厚,且用人单位都是国内较好的企事业单位。
NLP的发展历程基本可以划分为三个阶段,即:
早期的NLP主要应用于翻译领域,主要兴起于美国,当时计算机刚发明出来,美国人便想利用计算机将大量的俄语材料翻译成英文,想检测苏联的科技发展情况,早期人们认为语言只不过像密码一样,将不同的单词翻译即可,1945年,美国乔治敦大学和IBM公司成功将一部分俄语翻译为英语,这引起了美国政府的关注,认为这是一个巨大的进步,因此投入大量资金,效果却差强人意,机器无法理解复杂句子或者上下文含义,单纯利用规则翻译出来的文本可以说“狗屁不通”,因此,自然语言处理进入了第一次研究低潮
在20世纪90年代,随着电子计算机技术的飞速发展,人们开始重新关注这个领域,在机器学习(ML)技术的帮助下,自然语言处理取得了巨大的进步,主要是利用统计技术,从大量语言中总结语言模型,一些机器学习方法如隐马尔科夫模型(HMM)、最大熵马尔可夫模型(MEMM)、条件随机场(CRF)在搜索引擎、机器翻译获得了成功,但由于机器学习只是关注局部最优解或全局最优解,对上下文理解能力较差,模型的精确度和召回率无法进一步提升,自然语言处理进入了短暂的低谷。
2008年开始,深度学习技术开始在图像和音频领域大放光彩,研究者再次把目光转向了自然语言处理,利用深度学习技术进行建模,通过大规模文本数据自动学习语言单元的向量表示,能够提供广阔的参数空间,因此可以学得自然语言中复杂的语义模式,这与传统机器学习有较大的差别,2013年word2vec的问世、2014年seq2seq、2015年attention、2017年transform、2018年BERT的问世极大的促进了自然语言处理的发展,同时随着GPU的发展,计算机的算力有了较大的提升,深度学习可以越做越深,目前顶级的期刊中,普遍在120层左右,但神经网络是个黑箱,鲁棒性和可解释性较差,很容易通过一些特殊构造的样例来“欺骗”计算机,尽管部分学者提出生成式对抗网络(GAN)以及其他数据增广技术,但仍无法彻底解决深度学习技术的鲁棒性和可解释性。就目前来说,博主个人认为自然语言处理再次进入了短暂的低谷,毕竟,事物的发展是螺旋上升的过程,2021年8月6日,厦门大学化学化工学院和物理科学与技术学院的双聘教授侯旭团队受美国《科学》期刊邀请,以“Bioinspired Nanofluidic Iontronics”为题发表了Perspective文章,剖析新兴的仿生纳流离子学在未来人工智能、脑机接口技术中的巨大潜能,同时考虑到目前中国量子计算机的技术发展,未来自然语言处理必定再次借助量子计算机进入新的时代!
目前NLP处理的主要领域不同的作者划分不同,这里暂且化为8大领域。
文本检索主要应用在搜索引擎,部分作者叫信息检索,主要是能让搜索引擎理解你想检索的信息,帮助你快速找到想要的资料
目前机器翻译的质量较高,如:网易有道词典、百度翻译、Google翻译等。可实现英语、汉语、法语、西班牙语等多种语言。
利用自然语言处理技术对文本分类,众所周知,一些监督学习算法如SVM,决策树、逻辑回归等模型输入的是数字,因此需要用自然语言处理技术将其转化为向量,再进行下一步的分类,即标签分类,如根据APP的介绍对其分类,或细粒度分类(好、中、差)
即提取文本中所需的信息,如命名实体识别(NER),关系抽取等,主要应用于近些年兴起的知识图谱,构建图类型数据库的必要技术之一。
序列标注就是对序列的每个元素打上标签,条件随机场CRF是非常经典的序列标注模型,但近些年基本被BiLSTM+CRF模型所统治
即对人们所输入的文字或语言进行理解,给出标准答案或模拟人的回答方式,这其中包含了简单的按照固定回答方式的智能客服等,还有高级的对话系统如iphone的siri,对话系统可以说是NLP的终极目标。
语音识别目前大量应用,如现在车机系统,智能机器人等,主要是对人所说语音录制,分析,然后通过各种各样的算法来对其识别,但对方言、不标准普通话识别能力较差,也是未来发展的方向之一。
利用计算机进行短篇文章、快报等写作或者辅助人类写作,如文章查重、摘要自动生成等,目前在部分办公软件上已可以实现。
分词是NLP的第一步,目前所存在的分词工具有
工具 | 介绍 |
---|---|
HanLp | 开源、支持JAVA、python |
结巴分词 | 开源、支持Java、python、c++,但只能分词,无法进行词性标注等 |
复旦NLP | 开源、只支持Java、分词、词性标注、命名实体识别功能都有 |
LTP | 开源、支持Java、python、c++ |
哈工大LTP | 开源、支持python、C++ |
百度NLP | 收费、分词、词性标注、命名实体识别功能都有 |
阿里NLP | 收费、分词、词性标注、命名实体识别功能 |
斯坦福分词器CoreNLP | 开源、斯坦福的工具基本都有相关文献支持深入学习、算法较新 |
标注所分单词的词性,如动词、形容词、名词等,前面所介绍的工具大部分都有词性标注功能,目前技术都比较成熟。
命名实体识别(NER)在很多NLP类型中都广泛使用,如对话系统,机器翻译,知识图谱等,实体主要分为3小类,7大类,使用BIO标注形式。常用BILSTM+CRF
主要应用于深度学习,是早期one—hot技术之后的重大革新,如word2vec,能将词汇映射到低维空间中,且保持单词之间的相似性不变。
是在一篇文章中,如果后文中出现代词,要利用计算机对其进行解释,即代词指代的是前文的什么内容,常用于知识图谱,是减少知识图谱实体数量,提升知识图谱质量的常用方法。
给定一段文本,给出特定的文本,如在问答系统中,当识别出查询者的意图后,给出特定的答案,或者给出摘要等。
算法 | 类型 |
---|---|
逻辑回归 | 分类 |
支持向量机SVM | 分类 |
朴素贝叶斯 | 分类 |
决策树 | 分类 |
随机森林 | 分类 |
最大熵模型 | 分类 |
线性回归 | 回归 |
Kmeans | 聚类 |
HMM | 概率图模型 |
CRF | 概率图模型 |
TF-IDF | 关键词提取 |
BM25 | 关键词提取 |
BP | 深度学习 |
CNN | 深度学习 |
RNN | 深度学习 |
LSTM | 深度学习 |
目前国内外自然语言处理所用到的主要还是深度学习技术,但深度学习的可解释性和鲁棒性较差,加之研究门槛较高,IT巨头拥有大量的计算资源,因而往往能训练出较好的模型,普通院校和单位一是无法获取大量的计算资源,二是缺乏相应的培养体系和人才,因此NLP还不能实现普及,目前的技术来说任然无法正常与人类对话,无法达到人类3,4岁孩子的智力水平。清华大学孙茂松教授在引导报告《自然语言处理面临的三大真实挑战》中阐述了对于自然语言处理发展前景的看法。
挑战之一:形式化知识系统存在明显构成缺失。例如现有的知识图谱大而不强,虽然规模大,但是实体间关系浅,缺少关于动作的三元组、事件间的逻辑关系。称之为知识图谱“三缺其二”。
挑战之二:深层结构化语义分析存在明显性能不足。解决知识图“三缺其二”问题依赖于对语言进行深层次语义分析。近年来对语义的分析取得了长足的进步,但是对深层结构化语义分析“欲行却止”。
挑战之三:跨模态语言理解存在明显融通局限。目前对跨模态语言理解的研究方兴未艾,是新的重要研究前沿,但是跨模态关系因缺乏深层结构化语义分析和世界知识导致推理能力较弱,存在“形合意迷”的问题。
未来,到底是理性主义自然语言处理思想占据上风还是基于统计的经验主义思想占据上风,就看计算机界的各位大佬了。