什么是NLP

我曾多次在不同场合下被问到NLP(自然语言处理)是什么,因为身处复杂环,每次临时回答都很没条理,基本就是对大脑中的概念进行随机采样拼凑然后回答而已,效果非常差

什么是自然语言

要说清楚NLP是什么,首先要知道自然语言是什么,自然语言是一个语言学上的概念:一般是指那些在没有人们预先计划的情况下,随着人们的重复使用而进化过来的语言,这是Wikipedia上的说法。不过细想,诸如现在中国现代标准汉语(mandarin)和现代西班牙语也经历了人为修正,这是不是也算人为计划呢?但是这两门语言的日常形式(而不是其标准文件上的形式)是属于自然语言的,定义这个东西似乎并不容易。其实wiki里面也提到在不同的语言学家之间并不存在一个严格的定义。既然如此,为了容易解释本文的问题,那大可通过列举一些具有代表性的语言来归纳出语言这一定义,正面的例子例如英语,拉丁语,Mura language等等都应属于自然语言的范畴。对立为人工设计或构造的形式语言(formal language),例如编程上的Java,scheme,prolog和形式化证明(formal proof)用的coq,以及L. L. Zamenhof设计的世界语(Esperanto)或者J. R. R. Tolkien设计的精灵语(Elvish languages)等。通过这些例子能大概归纳出自然语言的一些特征,例如

  • 现在广泛使用(英语)
  • 历史上广泛使用但现在已经停止变化(拉丁语)
  • 使用人数虽少(不足400人)但仍作为某个范围内的人群生活中的主要交流手段(Mura language)
  • 被使用作为生活中的主要交流手段而不是主要作为其他任务的手段(Java)
  • 诞生之初并没有规定了字符集,词汇表,语法等东西(世界语)

以上求特征交集将得到一个普适性还不错的定义:在诞生之初并没有被规定字符集,词汇表,语法信息并且在一段时期内被一批人作为主要生活交流手段并经历过进化的语言,既是自然语言,尽管你可以轻易的举出反例但这个定义对这个问题的分析足够了

NLP(自然语言处理)是什么

既然解释了自然语言是什么,那么自然语言处理就不难理解了,一句话概括就是:就是用计算机来处理、理解以及运用人类语言。不过这句话确实给不了太多对这个问题理解有实质帮助的内容。从学科领域划分来讲,NLP应该属于计算机科学(computer science)和语言学的的交叉学科,偶尔有些人(例如冯志伟老师在他带的博士课程上提起)会叫这门学科为计算语言学(computational linguistics),主要任务包括但不限于自动摘要,指代消解,篇章分析,机器翻译,信息抽取,信息检索,情绪分析等,AI的语言处理问题大多是在这个学科内研究和解决。哈,想想Iron Man里面Jarvis就知道了

NLP应用领域有哪些

NLP的应用领域很广,从日常使用的office软件的单词纠错(使用Minimum Edit Distance算法,括号后说明的算法技术只是多种可行方案中的一种,以下同)20170218134746输入法(Bayes rule)20170218140140apple的Siri(Hidden Markov Model)到Google的搜索和Google Translate,IBM's Watson的QA(Question Answering)都是NLP的应用阵地

NLP发展情况如何以及难在哪里

这个问题上,Dan Jurafsky和Chirs Manning的PPT归纳的比较好,这里直接引用原图了
20170218141643
你可能会好奇,这些语言处理有这么难吗,回答是肯定的,同样是语言,英语对比Java的复杂度是完全不同数量级的

我原来打算通过机器翻译的翻译过程去一步一步展示其中的问题以及解决方案直至现在的前沿研究从而展示NLP领域的难点。但这篇文章拖的实在有点久了,暂且放下这个,等哪天有空再补上吧:)

references:

[1]Natural language processing
[2]Natural language
[3]Esperanto
[4]Elvish languages
[5]数学之美-吴军
[6]如何向文科同学科普自然语言处理(NLP)?
[7]斯坦福大学自然语言处理公开课课件汇总