当前位置: 首页 > news >正文

自然语言处理第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.lryc.cn/news/256718.html

相关文章:

  • ES6中的Promise
  • 载入了名字空间‘htmltools’ 0.5.6,但需要的是>= 0.5.7解决方案
  • Cisco 思科路由交换网络设备 安全基线 安全加固操作
  • WPF仿网易云搭建笔记(0):项目搭建
  • Python爬虫利器:BeautifulSoup库详解
  • 【链表Linked List】力扣-117 填充每个节点的下一个右侧节点指针II
  • 安卓adb【备忘录】
  • Linux笔记之删除指定目录下除最新修改的以 .pack 为扩展名的文件之外的所有文件
  • 什么是呼叫中心的语音通道?呼叫中心语音线路有几种?
  • 3D点云:平面模型上提取凸(凹)多边形方法
  • 论文笔记--A Fine-grained Interpretability Evaluation Benchmark for Neural NLP
  • NFC和蓝牙在物联网中有什么意义?如何选择?
  • 代码随想录二刷 |二叉树 | 二叉树的最小深度
  • 云上守沪 | 云轴科技ZStack成功实践精选(上海)
  • 2023 IoTDB 用户大会成功举办,深入洞察工业互联网数据价值
  • cache教程 3.HTTP服务器
  • redis应用-分布式锁
  • 51单片机程序
  • Android 分享小结
  • Ubunutu18.04 ROS melodic 无人机 XTDrone PX4 仿真平台配置
  • JVM 命令行监控及诊断工具
  • 飞天使-linux操作的一些技巧与知识点2
  • Android : 篮球记分器app _简单应用
  • 音视频之旅 - 基础知识
  • 分类预测 | SSA-HKELM-Adaboost麻雀算法优化混合核极限学习机的数据分类预测
  • 如何使用 Zotero 导出所选条目的 PDF 文件
  • minio的k8s的单机部署
  • Git 更改remote repo 地址
  • 24、文件上传漏洞——Apache文件解析漏洞
  • 使用Go快速开发TCP公共服务