工信网备案网站,大连网络推广公司哪家好,济南行业网站开发,网站开发系统计划书 ☁️主页 Nowl #x1f525;专栏 《自然语言处理》 #x1f4d1;君子坐而论道#xff0c;少年起而行之 文章目录 一、自然语言处理介绍二、常见的词编码方式1.one-hot介绍缺点 2.词嵌入介绍说明 三、代码演示四、结语 一、自然语言处理介绍 自然语言处理#xf… ☁️主页 Nowl 专栏 《自然语言处理》 君子坐而论道少年起而行之 文章目录 一、自然语言处理介绍二、常见的词编码方式1.one-hot介绍缺点 2.词嵌入介绍说明 三、代码演示四、结语 一、自然语言处理介绍 自然语言处理Natural LanguageProcessing简称NLP与一般的机器学习任务都不相同自然语言处理研究我们的语言任务因为文本是一个复杂的东西我们如何让计算机去理解我们的自然语言是一个很有挑战的事情一个普遍的思想就是将我们的语言进行编码 二、常见的词编码方式
1.one-hot
介绍
one-hot是一种简单的词编码方式它包含每个词在句子中的位置信息看下面的简单示例 假设有这样一句话: I like the stars那么四个单词对应的one-hot向量分别如图中所示one-hot向量的长度即为句子长度 缺点
仅能表示单词位置信息无法表示更复杂的如上下文单词类型等信息无法处理词库外的词即无法处理没有在数据集中的词汇
2.词嵌入
介绍
词嵌入是一种更加有效的表达单词的处理方法看下面的简单示例 同样的一句话词嵌入的表示方法如下图所示每个词的词嵌入向量的长度由我们根据任务来设置每个值包含了某种信息上下文词义等等 说明
词嵌入矩阵通常经过训练得到训练后我们将获得一个包含所需数据的词嵌入矩阵方便我们进行后续任务情感分析文本生成等
三、代码演示 这一部分展现了Bert预处理模型获取示例文本的词向量矩阵的代码打印了词嵌入矩阵的维度和第一个词的词嵌入矩阵仅作拓展读者可以试着运行来得到一个直观感受打印出来的维度是12768可我们看到句子只有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_tensorspt)
print(input_ids)# 获取BERT模型的输出
with torch.no_grad():outputs model(input_ids)# 获取最后一层的输出CLS token对应的向量
last_hidden_states outputs.last_hidden_state# 打印CLS token的词嵌入向量
print(fEmbedding for CLS token: {last_hidden_states[0].numpy().shape})
print(last_hidden_states[0][0].numpy())
四、结语
自然语言处理的编码问题是一个很基础的问题之后在自然语言处理领域中将会经常看到请好好了解 感谢阅读觉得有用的话就订阅下《自然语言处理NLP》专栏吧有错误也欢迎指出