龙空技术网

自然语言与编程语言的不同之处

人民邮电出版社 398

前言:

现在朋友们对“白话数据结构和算法的区别”大体比较关心,大家都需要了解一些“白话数据结构和算法的区别”的相关知识。那么小编同时在网络上收集了一些对于“白话数据结构和算法的区别””的相关资讯,希望各位老铁们能喜欢,看官们快快来学习一下吧!

在计算机领域,有一门学科叫做自然语言处理(Natural Language Processing,NLP),就是让计算机理解自然语言;圈内有这样一个说法:让计算机理解自然语言是人工智能皇冠上的明珠。长期以来,自然语言处理都被视为人工智能中最具挑战也是最具魅力的问题之一 。

如下图所示,研究自然语言处理,需要同时具备计算机科学、语言学和人工智能领域的相关知识。与编程语言相比,自然语言的复杂性明显高得多。

二者的不同之处,具体总结为以下6个方面。

一、词汇量

自然语言中的词汇要远比编程语言中的关键词丰富。

在常见的编程语言中,能使用的关键词数是有限而且确定的。比如:C语言中一共有32个关键字:for、int…JAVA中有50个。虽然这些编程语言可以自由改写变量名、函数名等等,但是在计算机看来只是区别符号,不含语言信息。

而在自然语言中,我们可以使用的词汇量是无穷无尽的,几乎没有意义完全相同的词语。

二、结构化

自然语言是非结构化的,而编程语言是结构化的。

所谓结构化,举个例子,在Python语言中(如下图生成杨辉三角):

每当需要判断时,就需要用到if,每当用到循环时,就需要用到for或者while。这些都是非常严谨的结构。

而自然语言是不需要这些条条框框的,它就像我们的汉语一样,随意间就可以用不同词语表达出同样的意思。

三、歧义性

自然语言含有大量歧义,这些歧义根据语境的不同而表现为特定的义项。

比如汉语中的多义词,只有在特定的上下文才能确定其含义。举个通俗易懂的例子:

M国的乒乓球很厉害,谁都打不过。

Z国的足球比较弱,谁也踢不过。

每句话只读后半句是不是意思一样?而加上前面的话,是不是完全不同?就是这个意思。

而在编程语言中就不存在歧义,因为它们都是特定的关键字,并且程序员在无意间写了有歧义的代码,程序就会报错无法运行。

四、容错性

自然语言有很强的容错性。

在人与人的交流中,错得很离谱的话语,我们也大致可以猜出它的意思。在互联网上,文本更加随性,错别字或者语句、不规范的标点符号随处可见。

但在编程语言中,程序员必须保证绝对正确、语法绝对规范,否则要么被编译器警告,要么造成潜在的BUG。

五、易变性

任何语言都是在不断发生变化的,不同的是,编程语言的变化要缓慢得多,而自然语言则相对迅速一些。

编程语言是由某个人或组织发明并且负责维护。以C++为例,它的发明者是Bjarne Stroustrup,它现在由C++标准委员会维护。从C++98到C++03,再到C++11和C++14,语言的变化是以年为单位的迁越过程,切新版本大致做到了对旧版本的前向兼容、只有少数废弃掉的转性。

而自然语言不是由谁组织或者发明的。或者说任何一门自然语言都是由全人类共同约定俗成的。虽然存在普通话,粤语,但我们每个人都可以自由创造和传播新词汇和新用法,也不停地赋予旧词汇新含义,导致古代和现代汉语相差较大。这些变化是连续的,每时每刻都在进行,给自然语言处理带来了不小的挑战。这也是自然语言是人类发明的,却还要称作“自然”的原因。

六、简略性

由于说话速度和听话速度、书写速度和阅读速度的限制,并不需要重复前面的事实,对于机构名称,我们经常使用简称,比如上文提出一个对象作为话题,则下文经常使用代词。这些省略的东西,是交流双方共有而计算机不一定拥有的。

以上内容整理自《自然语言处理入门》一书,作者:何晗

《自然语言处理入门》,何晗

《自然语言处理入门》是一本务实的入门书,帮助你零起点上手自然语言处理。

这本书从基本概念出发,逐步介绍中文分词、词性标注、命名实体识别、信息抽取、文本聚类、文本分类、句法分析这几个热门问题的算法原理与工程实现。书中通过对多种算法的讲解,比较了它们的优缺点和适用场景,同时详细演示生产级成熟代码,帮助你真正将自然语言处理应用在生产环境中。随着本书的学习,你将从普通程序员晋级为机器学习工程师,最后进化到自然语言处理工程师。

作者何晗(@hankcs)是自然语言处理类库 HanLP 作者(GitHub 加星超过 14 600),“码农场”博主(日活跃读者数超过 3000),埃默里大学计算机博士生,研究方向是句法分析、语义分析与问答系统。

标签: #白话数据结构和算法的区别 #cs是什么编程语言 #计算机算法和语言 #nlp算法和自然语言的区别 #nlp算法和自然语言的区别是什么