自然语言处理nlp从入门到精通 学习编程语言和学习自然语言哪个更难?为什么?

[更新]
·
·
分类:互联网
3040 阅读

自然语言处理nlp从入门到精通

学习编程语言和学习自然语言哪个更难?为什么?

学习编程语言和学习自然语言哪个更难?为什么?

我的思想受蒙太古语义学的影响较大,我相信自然语言的语义是可以被形式化的,从这个意义上说,自然语言同编程语言并没有本质区别。不过,有很多语言学家认为这个观点过分强调了自然语言和人工符号语言的相似性,忽略了二者的区别。不管怎么说,自然语言处理(NLP)和程序语言的改善都是把蒙太古语义学作为基础理论展开的。目前,自然语言的结构要比编程语言复杂很多,表达的语义也要比编程语言丰富得多。从这个意义上说,自然语言的难度远超编程语言。下面我就从词汇,语法和语义这三个方面说明一下这个问题。
词汇的PK从语义学上看,语言中最重要的词汇是量词。比如,所有人都喜欢编程和有人喜欢编程。这两句话使用了不同的量词(所有,有的)从而意思上区别很大。自然语言中这类量词的数量很大,而很大部分编程语言中量词极为有限。第四代编程语言如Java中就找不到能表达这两种数量的关键字,程序中基本要靠穷举法作复杂逻辑分枝才能实现。这个问题在第五代语言SQL中得到了改善。SQL使用了ALL,HAS,Exists这些关键字比较好的表达了所有和有的的意思。还有更为复杂的情况,比如,喜欢电脑的人也喜欢编程。这里没有确定的量词,数量是用上下文确定的。这对SQL文来说也不是问题。不过,自然语言中还有很多表示程度的量词,编程语言是无法一一对应的,但是,使用一些逻辑表达式,基本上能表达出来。尽管有些武断,我觉得可以粗略地认为在词汇上,自然语言和编程语言打了个平手。因为,接下来的两场PK,编程语言毫无胜算的机会。
语法的PK所谓语法是指句子结构上的规则。自然语言是非结构化的,它的规则十分复杂。尽可能地将自然语言结构化成了自然语言处理(NLP)的主要课题。反观编程语言,它的规则就简单多了。毕竟,编程语言是根据逻辑原理创造出来的结构化的语言。编程语言中最重要的语法逻辑是三段论,也就是,if…then。除此之外,几乎没有能和自然语言进行关联的逻辑结构了。语法结构上,编程语言要比自然语言简单太多了。
语义的PK说到语义自然语言就更加丰富了。从门派上,就能分出哲学语义,历史语义,结构语义,语法语义,逻辑语义(孟德斯鸠语义)。其中,只有逻辑语义能和编程语言扯上一点关系。编程语言的语义更多的体现在程序设计上,比如,面向对象的思想。还有设计语言,如ER,UML之类。编程语言本身完全体现不出语义的成分。论难度,编程语言完败。

如何让机器人自身去学习和分辨措辞?

这个问题的实质是自然语言处理,即NLP。
自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学,关注计算机和人类(自然)语言之间的相互作用的领域。
NLP的处理流程包括:获取语料,语料预处理,特征工程,特征选择,模型训练,评价指标和部署应用。
核心的技术包括:分词、词形还原、词性标注、依存语法、命名实体识别、词嵌入Embedding、模型算法,当前在NLP多采用深度学习的方法,取得了不少的进展。
自然语言的应用包括:机器翻译、自动摘要、文本分类、信息处理(过滤、检索、抽取等)、情感分析、自动问答等等。