AI大模型系列:自然语言处理,从规则到统计的演变

自然语言处理,从规则到统计的演变


  自然语言处理(Natural Language Processing,NLP)是人工智能的一个重要分支,主要研究如何让计算机理解、解释和生成人类语言。从自然语言处理的字面上来看,最重要的是“语言”二字,语言则是通过语法规则将一个个毫无联系的文字、数字和字母串联起来的。

  文字的出现是因为咱们祖先为了记录所见所闻和所思所想(传送门),咱们的祖先再将文字、字母和数字进行信道编码就成为了我们日常使用的语言。简单来讲,我们把一个要表达的意思,通过中文的一句话表达出来,就是在头脑中用中文的编码方式对其进行编码,然后得到一串汉字。对方如果懂得中文,在接收到之后就可以在头脑中使用中文的解码方式来解码,进而获得说话人想要表达的信息。

  世界上存在的每一种语言都有自己独有的语法规则,从而都拥有自己独有的编解算法,即这就是语言在数学上的本质。

人类还是机器?

  1946年,冯·诺伊曼体系的现代计算机出现以后,计算机在很多领域的很多工作做得都比人还好。既然如此,当时的科学家们就提出了计算机能不能懂得自然语言的课题,由此开启了自然语言处理研究的漫漫长路。

  最早提出机器智能设想的是,计算机科学之父的阿兰·图灵(Alan Mathison Turing,1912年6月23日—1954年6月7日),没错这是电影《模仿游戏》中的那个阿兰·图灵(传送门)。1950年他在《思想》杂志上发表了一篇题为“计算的机器和智能”的论文,并在论文中提出了一种验证机器是否有智能的方法:让人和机器进行交流,如果人无法判断自己交流的对象是人还是机器,那么就说明这个机器拥有了智能。这个方法被后人称为“图灵测试”,自此拉开了自然语言处理的序幕。

  自然语言处理发展虽然经过几十年的发展,但基本上可分为语言语法规则、数学模式统计和深度学习这么几个阶段。

探索

  时间回到1950年代到1970年代,当时的学术界对人工智能和自然语言处理的统一认识就是:要让机器完成翻译或者语音识别等只有人类才能做的事情,就必须先让计算机理解自然语言,而要做到这一点就必须让计算机拥有类似人类这样的智能。

  之所以会这样的认为,是因为咱们的大脑在解决问题或者学习技能时,首先会寻找与要解决或学习事物类似的事物进行模仿研究,进而完成仿制。正如有人认为怀特兄弟发明飞机仅仅是通过模仿鸟儿飞行,但是殊不知怀特兄弟成功发明飞机靠的不是仿生学而是空气动力学。同样在自然语言处理早期咱们的科学家也就走了弯路,企图使用仿生学来让计算机拥有处理语言的能力。

  基于上述共识科学家在分析语句和获取语义上花费了大量的功夫,并在1954年,乔治城大学和IBM合作开发了第一个机器翻译系统,这个机器翻译系统的底层原理就是通过分析语句、获取语义然后使用语法规则来处理语言,并且其运行几乎依赖于手工编写的规则来解析和处理语言。
image.png
  此阶段虽然有不少的研究成果,但是整体的研究成果乏善可陈。因为世界上语言众多,哪怕只是覆盖一种语言的语法规则的工作量也是巨大的,并且还存在方言、多义性和上下文的问题。自此当时的科学家渐渐地丧失了信心,自然语言发展也进入了蛰伏期。

破局

  1970年代基于规则的句法分析走到了尽头,但是自然语言处理的研究并没有因此停滞不前,历史的齿轮再一次转到,佛里德里克·贾里尼克(Frederick Jelinek)和他领导的IBM华生实验室(T.J.Watson)摒弃使用语法规则来解决语音识别问题,开始转而使用基于统计的方法,一下子就将IBM的语音识别率从70%提升到了90%,同时语音识别的规模也从几百单词上升到了几万单词,这就表示语音识别有从实验室走向实际应用的可能,同时也表示在自然语言处理上有了新的研究方向。

  虽然贾里尼克使用统计学的方法在自然语言处理上取得了突破,但是碍于当时算力不足和顽固派的阻挠整体发展还是相当的缓慢。虽然在1988年,IBM的彼得·布朗(Peter Brown)等人提出了基于统计的机器翻译方法,同样也碍于算力不足和没有足够强大的模型从而没有得到突破。

  1990年代统计方法开始成为自然语言处理的主流方法,并在1990年美国计算语言学会(ACL)成立了。同时在隐马尔可夫模型的加持,推动了自然语言处理研究发展进入了快车道。1993年,第一个基于统计的机器翻译系统IBM Model 1发布。这个时期的自然语言处理系统开始使用大量语料库进行训练,提高系统的准确性和鲁棒性。

  隐马尔可夫模型被任务是解决大多数自然语言处理问题最为快速、有效的方法,在成功地解决了复杂的语音识别、机器翻译等问题。最关键的是它并不是一个复杂的数学模型,理解和实现的难度都不大。

  2000年-2010年这十年深度学习崛起,并开始在自然语言处理中崭露头角。2001年,神经概率语言模型(Neural Probabilistic Language Model)被提出,为后来的深度学习在自然语言处理中的应用奠定了基础。并经过多年的研究发展,2018年谷歌又一次打出了王炸—BERT(Bidirectional Encoder Representations from Transformers)模型刷新了多个自然语言处理任务的记录。此后自然语言处理领域继续快速发展,各种预训练模型如GPT、RoBERTa、XLNet等不断刷新纪录。

  同时,自然语言处理开始与其他领域如计算机视觉、语音识别等结合,形成了多模态学习的趋势。此外,自然语言处理技术开始在工业界得到广泛应用,如智能客服、机器翻译、情感分析等。


一键三连,让我的信心像气球一样膨胀!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/578643.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unity | 集成 Protobuf(proto 转 cs 插件及序列化与反序列化)

1. 添加 dll 1. 下载 protobuf 源码 根据需要下载 protobuf 指定版本的源码,这里以 v3.21.12(protobuf-csharp-3.21.12.zip)为例: 下载地址:「https://github.com/protocolbuffers/protobuf/releases」 2. 下载 Vis…

防火墙技术基础篇:认识安全策略、安全区域、域间转发及报文转发流程

防火墙技术基础篇:认识安全策略、安全区域、域间转发及报文转发流程 一、安全策略匹配机制 简单通俗的讲,防火墙设备最基本的用途就是定义数据如何转发,靠什么定义呢?最基本的就是安全策略,当流量来到防火墙之后首先…

组播技术原理概述

组播与广播和单播的对比 l 组播、广播和单播工作模式的对比 单播:数据报文从一台主机,点对点的发给另外一台主机 广播:数据报文从一台主机,发给广播域内的全部主机 组播:数据报文从一台主机,发给…

JS----前端将列表数据转树型数据

前端将列表数据转树型数据 场景:后端返回列表数据,由前端根据业务需求完成树型数据转换, 常用于侧边导航菜单,下拉树型数据项等 export function listToTree(data: []) {var map: any {},tree: any []data.forEach((item: any…

ansible-playbook获取当前执行任务的ip及hostname

目录 概述注意实践代码 概述 注意 此问题,配置上一个文件即可解决 实践 代码 --- - name: Get IP Addresshosts: allgather_facts: notasks:- name: Get IP Addressansible.builtin.setup:register: host_ip- name: Print IP Addressansible.builtin.debug:msg:…

网络程序 -- TCP版服务器

一 多进程版TCP服务器 1.1 核心功能 对于之前编写的 字符串回响程序 来说,如果只有一个客户端进行连接并通信,是没有问题的,但如果有多个客户端发起连接请求,并尝试进行通信,服务器是无法应对的 原因在于 服务器是一个…

数据结构 - 队列 [动画+代码注释超详解],萌新轻松上手!!!

一. 队列的概念 队列是一种特殊的线性表,用于存储元素,并且按照先进先出(First In First Out)的顺序进行管理,这意味着最先加入队列的元素将会是最先从队列中被移除的元素 队列的原型:只允许在一端进行插入数据的操作&#xff0c…

【嵌入式AI开发】轻量级卷积神经网络MobileNetV2详解

前言:MobileNetV2网络先升维后降维,在降维时使用线性激活函数,带残差的Inverted bottleck模块,防止ReLU信息丢失。在图像分类、目标检测、语义分割等任务上实现了网络轻量化、速度和准确度的权衡。 回顾MobileNetV1的理论和MobileNetV2项目实战可查阅如下链接: 【嵌入式AI…

使用SDRPI运行openwifi和设置网口

目录 一 制作启动盘 二 使用串口的方式启动openwifi 三 无线连接 四 网口设置,有线连接 五 使用SSH登录 一 制作启动盘 在github上下载img文件,由于github上下载速度比较慢,我会上传网盘链接 githun下载img文件地址: https://git…

OS对软件的管理,进程,PCB、子进程

进程 可执行程序加载到内存中,操作系统为内个程序都形成一个PCB对象(结构体对象),PCB里存放着这个程序的所有的属性。进程可执行程序PCB ,CPU执行程序也是先通过该程序的PCB找到相应的程序代码,然后一条一…

SpringCloud之Hystrix

Hystrix理解 熔断器本身是一种开关装置,用于在电路上保护线路过载。当线路中有电器发生短路时,熔断器能够及时切断故障电路,防止发生过载、发热甚至起火等严重后果。这种保护机制被借鉴到分布式系统的设计中,形成了类似Hystrix中…

基于SpringBoot+Vue校园二手交易系统的设计与实现

系统介绍 自从新冠疫情爆发以来,各个线下实体越来越难做,线下购物的人也越来越少,随之带来的是一些不必要的浪费,尤其是即将毕业的大学生,各种用品不方便携带走导致被遗弃,造成大量的浪费。本系统目的就是让…

安装好fedora_kde系统后的操作

文章目录 1 前言2 办公软件2.1 输入法2.1.1 安装 fcitx52.1.2 安装 fcitx5-rime2.1.3 安装 東風破2.1.4 使用 東風破 安装 郭斌勇 大神的 新世纪五笔 项目2.1.5 配置 fcitx5-rime2.1.6 重新部署 3 感谢阅读~ 1 前言 本文用的是 fedora 40 kde plasma 6。 因为有很多的软件都同时…

2024全国大学生高新技术竞赛——算法智星挑战赛(A~J)

好多都是之前的原题&#xff0c;甚至有上次第二届全国大学生信息技术认证挑战赛的原题&#xff0c;刚打完又来一遍&#xff0c;没绷住。 A. 手机 原题之一&#xff0c;具体出处忘了 最无脑的方法直接用map记录每个按下的值就行了&#xff0c;代码仅供参考。 #include <bit…

MATLAB矩阵

MATLAB 矩阵 矩阵是数字的二维数组。 在MATLAB中&#xff0c;您可以通过在每行中以逗号或空格分隔的数字输入元素并使用分号标记每行的结尾来创建矩阵。 例如&#xff0c;让我们创建一个45矩阵一- 示例 a [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8] MATLAB将执行上述语…

pycharm使用ssh连接服务器

1、具体流程 打开pycharm – File – Setting 输入服务器的IP地址&#xff0c;端口号、登录账号名 输入登陆账号的密码 下一步 一些初级设置 2、一些需要注意的小问题 2.1 更改代码地址 2.2 本地代码上传到服务器 首先在需要上传文件右键 2.3 在服务器的环境中上新安装库&am…

Docker 简单使用及安装常用软件

一、Docker 安装、配置与卸载 1.1、Docker 安装 # 1.安装gcc环境 yum -y install gcc gcc-c && \# 2. 卸载docker旧版本&#xff08;可能之前有安装&#xff09; yum -y remove docker docker-common docker-selinux docker-engine && \# 3. 安装依赖的软件包…

【项目学习01_2024.04.27_Day01】

学习笔记 项目学习链接第2章 内容管理模块v3.11 模块需求分析1.1 什么是需求分析1.2 模块介绍1.3 业务流程1.4 界面原型 2 创建模块工程2.1 模块工程结构父工程和子工程之间的继承关系以及工程与工程之间的依赖关系&#xff0c;通俗理解&#xff1a;2.2 创建模块工程\pom\含义及…

go 安装软件报go.mod file not found

执行 go get -u github.com/go-sql-driver/mysql 下载mysql 报错 解决方法: 控制台&#xff1a;输入go env 返回如下&#xff1a; 红圈值为NUL&#xff0c;需要设置GOMOD的值, 然后再控制台执行 &#xff08;1&#xff09;mkdir mod (2)go mod init mod 然后再执行下载&…

AIGC——什么是人工智能生成内容

人工智能生成内容&#xff08;AIGC&#xff09;是当今数字时代的一个引人注目的前沿技术&#xff0c;它借助深度学习和自然语言处理等技术&#xff0c;使计算机系统具备了生成高质量文本、图像、音频等多媒体内容的能力。AIGC的出现不仅推动了信息技术的发展&#xff0c;也在多…