Ⅰ 自然语言为什么不适合直接作为编程语言
首先我们要了解什么是自然语言,比如汉语、英语、德语等一系列人与人之间用于沟通的语言,而编程语言则分为高级语言(如C、Java、C#、Python等)和低级语言(汇编语言).
计算机在长期的历史发展中,经过那么多科学家的研究,设计出了我们现在用的计算机,其中的坎坷与困难很难想象,如何将我们的实际问题转化为底层器件的运算,在解决这个问题的同时,就产生了高级编程语言、汇编语言以及计算机。
自然语言为什么不合适做编程语言,是因为自然语言经过了长期的发展,有太多不适用做编程语言的地方,其中最明显的是二义性,如不同音量和语气,以及说话上下文,就会使一段话表现不同的含义,计算机只是一个按部就班执行任务和程序的傻瓜,你给的命令如果存在多种意思,电脑是无法理解的,所以这个时候我们需要特殊的编程语言来告诉计算机我们的真实意图。
程序员在开发一个功能普遍的做法都是:自然语言描述需求------>解决问题的算法------->用程序语言描述算法,这样就可以将实际问题转化为严格的顺序指令,可以让计算机按照顺序去执行并解决我们的需求。
Ⅱ 4、 说明什么是算法,算法的描述方法,各种方法的特点是什么.
第一问、答:为解决某一问题而设计的确定的有限的步骤就称为算法
第二问、答:自然语言、流程图、伪代码或程序设计语言
第三问、答:
自然语言
用自然语言表示算法,人比较容易理解,但书写较烦琐,具有不确切性,容易引起歧义,造成误解;
对较复杂的问题,用自然语言难以表达准确;
计算机不能识别和执行.
流程图
用图形符号表示算法必须要有一组统一规定、含义确定的专用符号;
用流程图表示算法就较直观、形象;
计算机不能识别和执行.
伪代码或程序设计语言
只有用计算机能理解和执行的程序设计语言把算法表示出来,输入计算机执行,计算机才能按照预定的算法去解决问题;
不同类型的计算机能够识别的指令和语言不尽相同,即使对同一种计算机语言,不同类型的计算机对该语言的翻译程序也有差异.
Ⅲ nlp算法是什么呢
1、nlp算法是自然语言处理算法。自然语言处理( Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。
2、自然语言处理(nlp)是一门融语言学、计算机科学、数学于一体的科学。因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系,但又有重要的区别。
3、自然语言处理(nlp)并不是一般地研究自然语言,而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统。因而它是计算机科学的一部分。
4、自然语言处理(nlp)主要应用于机器翻译、舆情监测、自动摘要、观点提取、文本分类、问题回答、文本语义对比、语音识别、中文OCR等方面。
5、自然语言(nlp)的形式(字符串)与其意义之间是一种多对多的关系。其实这也正是自然语言的魅力所在。但从计算机处理的角度看,我们必须消除歧义,而且有人认为它正是自然语言理解中的中心问题,即要把带有潜在歧义的自然语言输入转换成某种无歧义的计算机内部表示。
Ⅳ 算法可以使用哪些描述方式,各有什么优势
算法的描述方式有:自然语言,流程图,伪代码等。
1、自然语言的优势:自然语言即人类语言,描述的算法通俗易懂,不用专门的训练,较为灵活。
2、流程图的优势:流程图描述的算法清晰简洁,容易表达选择结构,不依赖于任何具体的计算机和计算机程序设计语言,从而有利于不同环境的程序设计。
3、伪代码的优势:回避了程序设计语言的严格、烦琐的书写格式,书写方便,同时具备格式紧凑,易于理解,便于向计算机程序设计语言过渡的优点。
(4)算法自然语言的优缺点扩展阅读:
算法使用伪代码的目的是使被描述的算法可以容易地以任何一种编程语言实现。
因此,伪代码必须结构清晰、代码简单、可读性好,并且类似自然语言。 介于自然语言与编程语言之间,以编程语言的书写形式指明算法职能。
伪代码只是像流程图一样用在程序设计的初期,帮助写出程序流程。简单的程序一般都不用写流程、写思路,但是复杂的代码,还是需要把流程写下来,总体上去考虑整个功能如何实现。
Ⅳ 用自然语言描述算法直观,不会产生歧义,容易理解
用
自然语言
描述算法直观,不会产生歧义,容易理解,这是错误的。
用自然语言描述算法比较容易接受,但叙
述冗长,容易产生“歧义”.用流程图描
述算法比较清晰、直观,不容易产生“歧
义”。
Ⅵ AI PM应该懂的自然语言处理(NLP)知识
NLP是人工智能的一个子领域,作为AI产品经理,我们至少要知道NLP是什么,它能做什么事,这样我们就能获得一种解决问题的思维,将遇到的问题和方法连接起来。接下来我从“NLP是什么、能做什么、目前遇到的难题”三个方面来简单介绍下NLP。
一.什么是NLP
NLP,中文叫自然语言处理,简单来说,是一门让计算机理解、分析以及生成自然语言的学科,大概的研究过程是:研制出可以表示语言能力的模型——提出各种方法来不断提高语言模型的能力——根据语言模型来设计各种应用系统——不断地完善语言模型。
NLP理解自然语言目前有两种处理方式:
1.基于规则来理解自然语言,即通过制定一些系列的规则来设计一个程序,然后通过这个程序来解决自然语言问题。输入是规则,输出是程序;
2.基于统计机器学习来理解自然语言,即用大量的数据通过机器学习算法来训练一个模型,然后通过这个模型来解决自然语言问题。输入是数据和想要的结果,输出是模型。
接下来简单介绍NLP常见的任务或应用。
二.NLP能做什么:
1.分词
中文可以分为字、词、短语、句子、段落、文档这几个层面,如果要表达一个意思,很多时候通过一个字是无法表达的一个含义的,至少一个词才能更好表达一个含义,所以一般情况是以“词”为基本单位,用“词”组合来表示“短语、、句子、段落、文档”,至于计算机的输入是短语或句子或段落还是文档就要看具体的场景。由于中文不像英文那样词与词之间用空格隔开,计算机无法用区分一个文本有哪些词,所以要进行分词。目前分词常用的方法有两种:
(1)基于规则:Heuristic(启发式)、关键字表
(2)基于机器学习/统计方法:HMM(隐马尔科夫模型)、CRF(条件随机场)
(注:在这里就不具体介绍方法的原理和实现过程了,大家感兴趣,可以自行网络了解)
现状分词这项技术非常成熟了,分词的准确率已经达到了可用的程度,也有很多第三方的库供我们使用,比如jieba,所以一般在实际运用中我们会采用“jieba+自定义词典”的方式进行分词。
2.词编码
现在把“我喜欢你”这个文本通过分词分成“我”、“喜欢”、“你”三个词,此时把这三词作为计算机的输入,计算机是无法理解的,所以我们把这些词转换成计算机能理解的方式,即词编码,现在普遍是将词表示为词向量,来作为机器学习的输入和表示空间。目前有两种表示空间:
(1)离散表示:
A.One-hot表示
假设我们的语料库是:
我喜欢你你对我有感觉吗
词典{“我”:1,“喜欢”:2,“你”:3,“对“:4,“有”:5,“感觉”:6,“吗”:7} 。一共有七个维度。
所以用One-hot表示:
“我” :[1, 0, 0, 0, 0, 0, 0]
“喜欢”:[0, 1, 0, 0, 0, 0, 0]
········
“吗” :[0, 0, 0, 0, 0, 0, 1]
即一个词用一个维度表示
B.bag of word:即将所有词的向量直接加和作为一个文档的向量。
所以“我 喜欢 你”就表示为:“[1, 1, 1, 0, 0, 0, 0]”。
C. Bi-gram和N-gram(语言模型):考虑了词的顺序,用词组合表示一个词向量。
这三种方式背后的思想是:不同的词都代表着不同的维度,即一个“单位”(词或词组合等)为一个维度。
(2)分布式表示:word2vec,表示一个共现矩阵向量。其背后的思想是“一个词可以用其附近的词来表示”。
离散式或分布式的表示空间都有它们各自的优缺点,感兴趣的读者可以自行查资料了解,在这里不阐述了。这里有一个问题,当语料库越大时,包含的词就越多,那词向量的维度就越大,这样在空间储存和计算量都会指数增大,所以工程师在处理词向量时,一般都会进行降维,降维就意味着部分信息会丢失,从而影响最终的效果,所以作为产品经理,跟进项目开发时,也需要了解工程师降维的合理性。
3.自动文摘
自动文摘是指在原始文本中自动摘要出关键的文本或知识。为什么需要自动文摘?有两个主要的原因:(1)信息过载,我们需要在大量的文本中抽出最有用、最有价值的文本;(2)人工摘要的成本非常高。目前自动文摘有两种解决思路:第一种是extractive(抽取式),从原始文本中找到一些关键的句子,组成一篇摘要;另一种方式是abstractive(摘要式),计算机先理解原始文本的内容,再用自己的意思将其表达出来。自动文摘技术目前在新闻领域运用的最广,在信息过载的时代,用该技术帮助用户用最短的时间了解最多、最有价值的新闻。此外,如何在非结构的数据中提取结构化的知识也将是问答机器人的一大方向。
4.实体识别
实体识别是指在一个文本中,识别出具体特定类别的实体,例如人名、地名、数值、专有名词等。它在信息检索、自动问答、知识图谱等领域运用的比较多。实体识别的目的就是告诉计算机这个词是属于某类实体,有助于识别出用户意图。比如网络的知识图谱:
“周星驰多大了”识别出的实体是“周星驰”(明星实体),关系是“年龄”,搜索系统可以知道用户提问的是某个明星的年龄,然后结合数据“周星驰 出生时间 1962年6月22日”以及当前日期来推算出周星驰的年龄,并把结果直接把这个结果显示给用户,而不是显示候选答案的链接。
此外,NLP常见的任务还有:主题识别、机器翻译、文本分类、文本生成、情感分析、关键字提取、文本相似度等,以后有时间再为大家做简单介绍。
三.NLP目前存在的难点
1.语言不规范,灵活性高
自然语言并不规范,虽然可以找一些基本规则,但是自然语言太灵活了,同一个意思可以用多种方式来表达,不管是基于规则来理解自然语言还是通过机器学习来学习数据内在的特征都显得比较困难。
2.错别字
在处理文本时,我们会发现有大量的错别字,怎么样让计算机理解这些错别字想表达的真正含义,也是NLP的一大难点
3.新词
我们处在互联网高速发展的时代,网上每天都会产生大量的新词,我们如何快速地发现这些新词,并让计算机理解也是NLP的难点
4.用词向量来表示词依然存在不足
上述,我们讲到,我们是通过词向量来让计算机理解词,但是词向量所表示的空间,它是离散,而不是连续,比如表示一些正面的词:好,很好,棒,厉害等,在“好”到“很好”的词向量空间中,你是不能找到一些词,从“好”连续到“很好”,所以它是离散、不连续的,不连续最大的问题就是不可导.计算机是处理可导的函数非常容易,不可导的话,计算量就上来了。当然现在也有一些算法是计算词向量做了连续近似化,但这肯定伴随着信息的损失。总之,词向量并不是最好的表示词的方式,需要一种更好的数学语言来表示词,当然可能我们人类的自然语言本身就是不连续的,或者人类无法创建出“连续”的自然语言。
小结:通过上述的内容,我们已经大概知道了“NLP是什么、能做什么以及目前存在的难题”。作为人工智能产品经理,了解NLP技术能够提高我们自己的技术理解力,在理解行业需求、推进项目开展都有非常大的帮助,其实这可以让我们获得是一种连接能力,将需求与工程师连接起来,将问题与解决方案连接起来。虽然NLP等人工智能技术存在很多不足,但我们需要调整好自己的心态,人工智能应用化才刚刚开始,必然是不够完美的,不要成为批判者,而是成为人工智能时代的推进者。
nt-sizf@�2W��
Ⅶ 使用自然语言来描述算法的主要缺点是
因为没有蕴含具体环境中的实现细节,故而未能指出达到理论性能的方法
Ⅷ 相对于自然语言来说,用流程图描述算法更形象,直观,更容易正不正确
自然语言、优点:容易理解;缺点:书写较烦、不确定性、对复杂的问题难以表达准确、不能被计算机识别和执行流程图、优点:形象直观、容易理解伪代码、优点:简洁易懂、修改容易;缺点:不直观、错误不容易排查