自然语言处理:电脑如何理解我们的语言?

  

c0e90a73eecb4225b1119f65a39ae785.png

☁️主页 Nowl

🔥专栏《机器学习实战》 《机器学习》

📑君子坐而论道,少年起而行之 

178df7fef0cf44119524865535cee8ff.gif

文章目录

​编辑

常见方法

1.基于词典的方法

2.基于计数的方法

基于推理的方法

Bert

input_ids

attention_mask

token_type_ids

结语


 

在广阔的人工智能领域中,有着这样一个神奇的分支——自然语言处理,它研究人工智能在各种语言场景中的应用,我们不禁会思考这样一个问题,电脑是怎么理解我们的自然语言的呢。

24af9e5415c04eeba1ebac7ba8e65893.png

常见方法

1.基于词典的方法

介绍

在自然语言处理学科发展的早期,人们将一些词语的关系串成一个网络,这个网络也叫作同义词词典,类似下图,从一个单词出发可以得到与它相关的近义词,反义词等,通过这个网络,可以让计算机了解单词之间的相关性(要找到一个词的近义词,就可能用某种图搜索方法去寻找)

最著名的同义词词典是WordNet,由普林斯顿大学开发

bace66a7ef084ef7a67389b39a7bf049.png

同义词词典的弊端

  • 不灵活,我们的语言习惯会随着时间产生变化,而词典不会,如果要修改的话牵扯到的劳力又太大,而且总是要更改,浪费时间与精力
  • 无法完全表达单词之间的联系,我们知道语言是很精妙的,有时候我们也无法解释一些词语,因为词语的意思可能与语境,单词顺序有关,而同义词词典难以实现这一功能

2.基于计数的方法

语料库

自然语言处理领域有非常多的语料库,这些语料库收录了许多人类写的文字,包括一些作家的文章,这些语料库可以看作是一个自然语言处理领域通用的数据集

然后呢我们要对其中的文字进行编码(因为计算机只能理解数字),考虑下面这一句话

sentence = "I like these stars because they are bright"

 我们将他们编码,做成一个编码字典

words = {'I': 0, 'like': 1, 'these': 2, 'stars': 3, 'because': 4, 'they': 5, 'are': 6, 'bright': 7}

真实的编码字典复杂得多,这里仅做示例 

这时如果我们要表达这一句话

"these stars are bright"

我们就可以用这样的编码表示

[2, 3, 6, 7]

分布式假设

分布式假设的思想是这样的,一个单词本身没有意义,它的意义与它上下文的单词有关,这点我们也能理解,就像我们常常在英语考试中通过上下文来理解某个不认识的单词一样

想想看,我们统计了两个不同单词的上下文,发现他们的上下文差不多,那么我们是不是就可以猜测这两个单词相关呢,这便是基于统计的方法,统计单词的上下文,以理解词与词之间的关系

假设要统计一个单词前后的词,以上面的例子举例就是这样

{'0': [1], '1': [0, 2], '2': [1, 3], '3': [2, 4], '4': [3, 5], '5': [4, 6], '6': [5, 7], '7': [6]}

得到了一个记录单词和它上下文的字典

基于推理的方法

上文中的基于词典,基于计数等方法都太片面,要理解一个单词的意思我们应该从多个维度考虑

我们在上文中了解到了给单词编码的原理,我们不妨拓展一下,除了单词本身可以编码,我们还能编码什么信息呢

我们经常听过这样一句话,"要抓重点",基于这个思想,我们可以告诉机器是否要省略某些词

还有,当语料库有许多个句子时,我们是不是要区分哪些词是哪句话的呢

基于这些思想,我们接着往下看吧

Bert

bert模型是一个自然语言处理任务的模型,在本章中我们将用它来进行讲解

from transformers import BertTokenizer

这句代码导入了bert模型的分词器,它用来处理句子的基础信息 

input_ids

input_ids是词编码,代表了一个单词在词表中的位置,这是一个单词的基本信息

from transformers import BertTokenizer


# 指定分词模型为中文模型
token = BertTokenizer.from_pretrained('bert-base-chinese')
# 进行分词,固定长度为17,返回类型为pytorch张量
sentence = token.batch_encode_plus(["你好,这是一个编码工具", "它是一个预训练模型"], return_tensors='pt', padding='max_length', max_length=17)

print(sentence["input_ids"])

81045c92eb2847c9ba713c04b61b748b.png

attention_mask

attention_mask表示是否要忽略某个词,它一般用在这些场景中

  • 我们编码句子时肯定需要确定一个固定长度,不统一长度的话之后进行运算会很麻烦,这时attention_mask就可以告诉模型要忽略那些多出句子长度的地方了
  • 在一些具体任务中,如单词填空,我们可以使用mask来遮住要预测的词,实现训练模型的效果
from transformers import BertTokenizer


token = BertTokenizer.from_pretrained('bert-base-chinese')
sentence = token.batch_encode_plus(["你好,这是一个编码工具", "它是一个预训练模型"], return_tensors='pt', padding='max_length', max_length=17)

print(sentence["attention_mask"])

3d6b72096d5c4202b96ad99baedf6361.png

返回了两个句子的attention_mask,0代表忽略,这个例子中忽略了自动补齐长度的单词

token_type_ids

token_type_ids表示了这个词的种类,通常用于区分不同句子的词

from transformers import BertTokenizer


token = BertTokenizer.from_pretrained('bert-base-chinese')
sentence = token.batch_encode_plus(["你好,这是一个编码工具", "它是一个预训练模型"], return_tensors='pt', padding='max_length', max_length=17)

print(sentence["token_type_ids"])

d619bf19a750432f8e6499454dbb7c28.png

由于这个例子中的编码器只是进行批处理,并未在意句子的不同,所以返回的token_type_ids是一样的

结语

  • 我们在这一篇文章中了解到了计算机理解自然语言的基本思想——将单词编码成数字
  • 同时我们还介绍了一些其他因素,是否要忽略某些词,考虑词属于哪些句子等
  • 要理解一个句子的过程是复杂的,跟着本专栏继续探索吧

 

9741edbb1a0546229968c1f90d259244.gif

感谢阅读,觉得有用的话就订阅下本专栏吧,有错误也欢迎指出

 

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

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

相关文章

施密特触发器

1、作用 简单来说,施密特触发器可以将模拟信号转变成数字信号 2、为什么不使用比较器将模拟信号转变成数字信号 当输入电平高于参考电压时,输出高电平;输入电压低于参考电压时,输出低电平。这样比较器也可以实现模拟信号转换成数…

封装Servlet使用自定义注解进行参数接收

文章目录 前言一、前后对比✨二、具体实现🎇三、效果展示🎏 前言 先说项目背景,本项目是本人在校期间老师布置的作业(就一个CRUD),课程是后端应用程序设计,其实就是servlet和jsp那一套&#xf…

Python异常处理【侯小啾python领航班系列(二十六)】

Python异常处理【侯小啾python领航班系列(二十六)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹…

Java三种代理模式:静态代理、动态代理和CGLIB代理

Java三种代理模式:静态代理、动态代理和CGLIB代理 代理模式 代理模式是23种设计模式种的一种。代理模式是一种结构型设计模式,它允许为其他对象提供一个替代品或占位符,以控制对这个对象的访问。代理模式可以在不修改被代理对象的基础上&am…

SPM/SCM 流量跟踪体系

SPM SPM(shopping page mark,导购页面标记) 是淘宝社区电商业务(xTao)为外部合作伙伴(外站)提供的跟踪引导成交效果数据的解决方案 注:也有解释 SPM 为超级位置模型(Super Position…

2024年甘肃省职业院校技能大赛(中职教师组)网络安全竞赛样题卷④

2024年甘肃省职业院校技能大赛(中职教师组)网络安全竞赛样题卷④ 2024年甘肃省职业院校技能大赛(中职教师组)网络安全竞赛样题卷④A模块基础设施设置/安全加固(本模块200分)A-1任务一 登录安全加固&#xf…

(C++)和为s的两个数字--双指针算法

个人主页:Lei宝啊 愿所有美好如期而遇 和为S的两个数字_牛客题霸_牛客网输入一个升序数组 array 和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果。题目来自【牛客题霸】https://www.nowcoder.com/practice/390da4f7a…

关于你对 Zookeeper 的理解

看看普通人和高手是如何回答这个问题的? 普通人 Zookeeper 是一种开放源码的分布式应用程序协调服务 是一个分布式的小文件存储系统 一般对开发者屏蔽分布式应用开发过过程种的底层细节 用来解决分布式集群中应用系统的一致性问题 高手 对于 Zookeeper 的理解…

网工学习9-STP配置

如图 1 所示,当前网络中存在环路, SwitchA 、SwitchB 、SwitchC 和 SwitchD 都运行 STP,通过 彼此交互信息发现网络中的环路,并有选择的对某个端口进行阻塞,最终将环形网络结构修剪成无 环路的树形网络结构&#xff…

python | 使用open读写文件

在目前的环境中,读取文件应该算是最基本的操作了,python也内置了读写文件的函数,让我们来看下。这里有个小点要点一下,我们使用python是没法办直接操作文件的,而是操作系统给我们预留了接口,python通过操作…

关于this和构造器的理解

1.类中的this关键字表示当前对象的引用。它可以被用于解决变量名冲突问题,或者在一个方法中调用类的另一个方法。如果在方法中没有明确指定要使用哪个变量,那么编译器就会默认使用this关键字来表示当前对象。 下面是一个输出this关键字的示例代码&#…

从朋友的反思中想到的一些关于外贸的问题

昨天有两个好消息,一个是上星期客户要开业的项目昨天顺利搭建完成,没有任何东西缺少,虽然指导安装过程中也是一堆糟心的事,还好只是有惊无险,同时也收到来自中间商的感谢信,她说没想到如此复杂的搭建甚至每…

海外的直播平台

1、Netflix Netflix以允许人们从众多设备观看系列和电影而闻名。用户可以开设一个帐户并添加不同的用户个人资料,这对于想要为整个家庭拥有单独帐户而又无需开设大量帐户并单独付款的人来说非常有用。它现在增加了一个直播服务,允许观众参加现场练习课程…

Mars3d标绘的时候通过绑定单击事件,查询点击落点的图层类型

需求期望: 期望可以判断标绘点落下的位置是什么图层类型,例如是否是3dtitles模型,或者是gltf模型,或者是其他数据图层。 需求来源: 标绘点时,无法知道点落下的地方的图层类型 解决方案: ma…

外贸中遇到客户要退款的那些事

最近一个小伙伴说自己的一个客户在付费平台上用信用卡支付的货款,结果客户收到货之后却说自己欺瞒对方,发的货和客户所要的货有差距,要在平台申请退款,然后在群里询问大家有什么好的注意或者方案。 小伙伴说自己的这个产品本身之…

B站热门活动数据如何看?怎样查看up主投稿的作品数据?

细数目前做得较好的短视频平台,无外乎抖音、快手和B站,随着B站逐渐发展,B站也从一个二次元社区慢慢变成了年轻人的多元化文娱社区,有着高黏度、高活跃的用户,同时B站也被用户戏称“万物皆可B站”!B站独特的…

element的el-date-picker时间控件,限制选择范围区间天数并且当前之后的日期不可选

element的el-date-picker时间控件&#xff0c;限制选择范围区间天数并且当前之后的日期不可选 HTML部分代码 <el-date-pickerv-model"dateRange"type"datetimerange"value-format"yyyy-MM-dd HH:mm:ss"range-separator"至"start-p…

【Python动漫系列】名侦探柯南(完整代码)

文章目录 名侦探柯南环境需求完整代码程序分析系列文章名侦探柯南 《名侦探柯南》是由青山刚昌创作的一部侦探漫画,于1994年开始连载,并被改编为动画、电影、游戏等多种形式。故事讲述了高中生侦探工藤新一在破案时被不良组织所毒害,身体缩小成了一个小学生,为了寻找解药并…

编程题:电话号码

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 &#x1f4d1;题目解析 这个题目比较…

SpringTask入门案例

Task cron表达式在线生成网址&#xff1a; https://cron.qqe2.com/ import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component;import java.time.LocalDateTime;/*** 定时任务类*/ Sl…