自然语言处理第2天:自然语言处理词语编码

Image Description

☁️主页 Nowl

🔥专栏 《自然语言处理》

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

​​

在这里插入图片描述

文章目录

  • 一、自然语言处理介绍
  • 二、常见的词编码方式
    • 1.one-hot
      • 介绍
      • 缺点
    • 2.词嵌入
      • 介绍
      • 说明
  • 三、代码演示
  • 四、结语

一、自然语言处理介绍

自然语言处理(Natural LanguageProcessing)简称NLP,与一般的机器学习任务都不相同,自然语言处理研究我们的语言任务,因为文本是一个复杂的东西,我们如何让计算机去理解我们的自然语言是一个很有挑战的事情,一个普遍的思想就是将我们的语言进行编码

二、常见的词编码方式

1.one-hot

介绍

one-hot是一种简单的词编码方式,它包含每个词在句子中的位置信息,看下面的简单示例

假设有这样一句话: I like the
stars,那么四个单词对应的one-hot向量分别如图中所示,one-hot向量的长度即为句子长度

在这里插入图片描述

缺点

  • 仅能表示单词位置信息,无法表示更复杂的,如上下文,单词类型等信息
  • 无法处理词库外的词,即无法处理没有在数据集中的词汇

2.词嵌入

介绍

词嵌入是一种更加有效的表达单词的处理方法,看下面的简单示例

同样的一句话,词嵌入的表示方法如下图所示,每个词的词嵌入向量的长度由我们根据任务来设置,每个值包含了某种信息,上下文,词义等等

在这里插入图片描述

说明

词嵌入矩阵通常经过训练得到,训练后我们将获得一个包含所需数据的词嵌入矩阵,方便我们进行后续任务,情感分析,文本生成等

三、代码演示

这一部分展现了Bert预处理模型获取示例文本的词向量矩阵的代码,打印了词嵌入矩阵的维度和第一个词的词嵌入矩阵,仅作拓展,读者可以试着运行来得到一个直观感受(打印出来的维度是(12,768),可我们看到句子只有6个词,这是因为模型的分词方法导致的,它将句子分成10个词,多出来的两个是句首和句尾标识)

from transformers import BertTokenizer, BertModel
import torch

# 使用BERT的tokenizer和模型
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertModel.from_pretrained('bert-base-uncased')

# 输入文本
text = "Example sentence to get BERT embeddings."

# 使用tokenizer编码文本
input_ids = tokenizer.encode(text, return_tensors='pt')
print(input_ids)

# 获取BERT模型的输出
with torch.no_grad():
    outputs = model(input_ids)

# 获取最后一层的输出(CLS token对应的向量)
last_hidden_states = outputs.last_hidden_state

# 打印CLS token的词嵌入向量
print(f"Embedding for 'CLS' token: {last_hidden_states[0].numpy().shape}")
print(last_hidden_states[0][0].numpy())

四、结语

自然语言处理的编码问题是一个很基础的问题,之后在自然语言处理领域中将会经常看到,请好好了解

在这里插入图片描述

感谢阅读,觉得有用的话就订阅下《自然语言处理NLP》专栏吧,有错误也欢迎指出

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

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

相关文章

04-详解Eureka注册中心的作用,具体配置,服务注册和服务发现

Eureka注册中心的作用 Eureka架构 远程调用的两个问题 服务的ip地址和端口号写死: 生产环境中服务的地址可能会随时发生变化,如果写死每次都需要重新修改代码多实例问题: 在高并发的情况下一个服务可以有多个实例形成一个集群,此时如果采用硬编码的方式只能访问服务的一个实…

【代码随想录】算法训练计划41

dp 1、343. 整数拆分 题目: 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 输入: n 10 输出: 36 解释: 10 3 3 4, 3 3 4 36。 思路…

揭秘字符串的奥秘:探索String类的深层含义与源码解读

文章目录 一、导论1.1 引言:字符串在编程中的重要性1.2 目的:深入了解String类的内部机制 二、String类的设计哲学2.1 设计原则:为什么String类如此重要?2.2 字符串池的概念与作用 三、String类源码解析3.1 成员变量3.2 构造函数3…

【小聆送书第二期】人工智能时代之AIGC重塑教育

🌈个人主页:聆风吟 🔥系列专栏:网络奇遇记、数据结构 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋正文📝活动参与规则 参与活动方式文末详见。 📋正文 AI正迅猛地…

ubuntu 20.04 server 安装 zabbix

ubuntu 20.04 server 安装 zabbix 参考文档 zabbix没用过,用过prometheus, 因为现在很多应用都支持直接接入prometheus监控, 而且大部分语言都都有sdk支持, 可以直接接入自己的业务数据监控。 https://www.zabbix.com/cn/downlo…

激光打标机在智能手表上的应用:科技与时尚的完美结合

随着科技的飞速发展,智能手表已经成为我们日常生活中不可或缺的智能设备。而在智能手表制造中,激光打标机扮演着至关重要的角色。本文将详细介绍激光打标机在智能手表制造中的应用,以及其带来的优势和影响。 ​ 一、激光打标机在智能手表制…

MySql-substring函数和substring_index函数的使用及练习

目录 13.2.1 substring函数 1. 概述 2. 使用格式 3. 参数列表 4. 实例练习 13.2.2 substring_index函数 1. 概述 2. 格式 3. 参数说明 4. 返回值 5. 实例练习1 6. 实例练习2 13.3 牛客练习题 13.2.1 substring函数 1. 概述 substring函数是文本处理函数&#xf…

C语言 占位符 + 转义字符 + ASCLL 表 + 缓冲区

整型 占位符 取值范围 浮点型 占位符 转义字符 注意:绿色字体标注的为不可打印字符。 printf 常用占位符: printf 附加格式 ASCII 表 标准ASCII码的范围是0~127,只需7位二进制数即可表示。 缓冲区 缓冲区分类: sizeof(…

【数据结构】——排序篇(中)

前面我们已经了解了几大排序了,那么我们今天就来再了解一下剩下的快速排序法,这是一种非常经典的方法,时间复杂度是N*logN。 快速排序法: 基本思想为:任取待排序元素序列中的某元素作为基准值,按照该排序码…

自动驾驶学习笔记(十六)——目标跟踪

#Apollo开发者# 学习课程的传送门如下,当您也准备学习自动驾驶时,可以和我一同前往: 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo 社区开发者圆桌会》免费报名—>传送门 文章目录 前言 匹配关联 轨迹记录 状态预测 总结 前…

C++使用策略模式,减少使用switch...case...

目录 原理函数类模板函数使用switch...case...不使用switch...case... 知识点decltypestd::remove_reference 原理 函数 #include <iostream> #include <functional> #include <map>void fun1(int a, int b) {std::cout << "fun1 : a "<…

uniApp项目的创建,运行到小程序

一、项目创建 1. 打开 HBuilder X 2. 右击侧边栏点击新建&#xff0c;选择项目 3. 填写项目名&#xff0c;点击创建即可 注&#xff1a;uniapp中如果使用生命周期钩子函数&#xff0c;建议使用哪种 ?(建议使用Vue的) 二、运行 1. 运行前先登录 2. 登录后点击 manifest.js…

Linux和Windows环境下如何使用gitee?

1. Linux 1.1 创建远程仓库 1.2 安装git sudo yum install -y git 1.3 克隆远程仓库到本地 git clone 地址 1.4 将文件添加到git的暂存区&#xff08;git三板斧之add&#xff09; git add 文件名 # 将指定文件添加到git的暂存区 git add . # 添加新文件和修改过的…

golang开发之个微机器人的二次开发

简要描述&#xff1a; 下载消息中的文件 请求URL&#xff1a; http://域名地址/getMsgFile 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/jsonAuthorization&#xff1a;login接口返回 参数&#xff1a; 参数名必选类型…

测试用文章2

clion编辑器安装注意事项 clion是个非常优秀的cIDE&#xff0c;能大幅度提高我们写c的效率&#xff0c;最重要的是开箱即用。不过有些设置和注意事项&#xff0c;能让我们更好地使用clion 安装ideavim插件 vim插件&#xff0c;可以设置快捷键开启和关闭&#xff0c;推荐altf&am…

Windows下nginx的启动,重启,关闭等功能bat脚本

echo off rem 提供Windows下nginx的启动&#xff0c;重启&#xff0c;关闭功能echo begincls ::ngxin 所在的盘符 set NGINX_PATHG:::nginx 所在目录 set NGINX_DIRG:\projects\nginx-1.24.0\ color 0a TITLE Nginx 管理程序增强版CLSecho. echo. ** Nginx 管理程序 *** echo.…

文心ERNIE Bot SDK+LangChain:基于文档、网页的个性化问答系统

现在各行各业纷纷选择接入大模型&#xff0c;其中最火且可行性最高的形式无异于智能文档问答助手&#xff0c;而LangChain是其中主流技术实现工具&#xff0c;能够轻松让大语言模型与外部数据相结合&#xff0c;从而构建智能问答系统。ERNIE Bot SDK已接入文心大模型4.0能力&am…

平衡二叉树

AVL简称平衡二叉树&#xff0c;缩写为BBST&#xff0c;由苏联数学家 Adelse-Velskil 和 Landis 在 1962 年提出。 二叉树是动态查找的典范&#xff0c;但在极限情况下&#xff0c;二叉树的查找效果等同于链表&#xff0c;而平衡二叉树可以完美的达到 log ⁡ 2 n \log_2 n log2…

JVM 内存分析工具 Memory Analyzer Tool(MAT)的深度讲解

目录 一. 前言 二. MAT 使用场景及主要解决问题 三. MAT 基础概念 3.1. Heap Dump 3.2. Shallow Heap 3.3. Retained Set 3.4. Retained Heap 3.5. Dominator Tree 3.6. OQL 3.7. references 四. MAT 功能概述 4.1. 内存分布 4.2. 对象间依赖 4.3. 对象状态 4.4…

docker容器配置MySQL与远程连接设置(纯步骤)

以下为ubuntu20.04环境&#xff0c;默认已安装docker&#xff0c;没安装的网上随便找个教程就好了 拉去mysql镜像 docker pull mysql这样是默认拉取最新的版本latest 这样是指定版本拉取 docker pull mysql:5.7查看已安装的mysql镜像 docker images通过镜像生成容器 docke…
最新文章