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

☁️主页 Nowl

🔥专栏 《自然语言处理》

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

文章目录

一、自然语言处理介绍

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

二、常见的词编码方式

1.one-hot

介绍

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

假设有这样一句话: I like the

stars,那么四个单词对应的one-hot向量分别如图中所示,one-hot向量的长度即为句子长度

缺点

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

2.词嵌入

介绍

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

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

说明

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

三、代码演示

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

python 复制代码
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》专栏吧,有错误也欢迎指出

相关推荐
卡索(CASO)汽车调查7 分钟前
卡索(CASO)汽车调查:数据智能时代,汽车产业竞争格局与战略升维路径探析
大数据·人工智能·汽车·神秘顾客·汽车密采·神秘人·汽车研究
笨鸟笃行11 分钟前
人工智能备考——2.1.1-2.1.5总结
人工智能·学习
晨非辰14 分钟前
【数据结构】排序详解:从快速排序分区逻辑,到携手冒泡排序的算法效率深度评测
运维·数据结构·c++·人工智能·后端·深度学习·排序算法
能来帮帮蒟蒻吗23 分钟前
深度学习(4)—— Pytorch快速上手!从零搭建神经网络
人工智能·pytorch·深度学习
Blossom.11828 分钟前
大模型知识蒸馏实战:从Qwen-72B到Qwen-7B的压缩艺术
大数据·人工智能·python·深度学习·算法·机器学习·pygame
pingao14137843 分钟前
零启动风速+多参数集成:金属超声波传感器的技术突破
人工智能·科技
wshzd1 小时前
LLM之Agent(二十八)|AI音视频转笔记方法揭秘
人工智能·笔记
IT_陈寒1 小时前
Python 3.12新特性实战:5个让你的代码效率翻倍的隐藏技巧!
前端·人工智能·后端
草莓熊Lotso1 小时前
C++ 二叉搜索树(BST)完全指南:从概念原理、核心操作到底层实现
java·运维·开发语言·c++·人工智能·经验分享·c++进阶
Dfreedom.1 小时前
大模型微调技术全景解析:从基础理论到工程实践
人工智能·大模型微调