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

☁️主页 Nowl

🔥专栏 《自然语言处理》

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

​​

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

一、自然语言处理介绍

二、常见的词编码方式

1.one-hot

介绍

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

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

缺点

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

2.词嵌入

介绍

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

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

说明

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

三、代码演示

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())

四、结语

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

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

12-13 15:05