自然语言处理基本概念

server/2024/9/24 6:32:39/

自然语言处理基本概念

所有学习循环神经网络的人都是看这一篇博客长大的:
https://colah.github.io/posts/2015-08-Understanding-LSTMs/

import jieba
import torch
from torch import nns1 = "我吃饭了!"
s2 = "今天天气很好!"
s3 = "这辆车很好看!"jieba.lcut(s3)
words = {word for sentence in [s1, s2, s3] for word in jieba.lcut(sentence)}
words.add("<UNK>")
words.add("<PAD>")
print(words)word2idx = {word: idx for idx, word in enumerate(words)}
idx2word = {idx: word for word, idx in word2idx.items()}
print(word2idx)
print(idx2word)idx1 = [word2idx.get(word, word2idx.get("<UNK>")) for word in jieba.lcut(s1)]
idx2 = [word2idx.get(word, word2idx.get("<UNK>")) for word in jieba.lcut(s2)]
idx3 = [word2idx.get(word, word2idx.get("<UNK>")) for word in jieba.lcut(s3)]
print(idx1,idx2,idx3)# 补 1 个 pad
idx1 += [word2idx.get("<PAD>")]
idx2 += [word2idx.get("<PAD>")]
print(idx1,idx2,idx3)# 转张量
X = torch.tensor(data=[idx1, idx2, idx3], dtype=torch.long).T
# [seq_len, batch_size]
print(X.shape)# word embedding
embed = nn.Embedding(num_embeddings=len(word2idx), embedding_dim=6)
print(len(word2idx))# [3, 5, 12] --> [3, 5, 6]
# [batch_size, seq_len, embedding_dim]
print(embed(X).shape)# [N, C, H, W]
# [N, Seq_len, Embedding_dim]
print(nn.RNN)# $h_t = \tanh(x_t W_{ih}^T + b_{ih} + h_{t-1}W_{hh}^T + b_{hh})$
rnn = nn.RNN(input_size=6, hidden_size=7, batch_first=False)
X1 = embed(X)
out, hn = rnn(X1)# 每一步的输出
print(out.shape)
# 最后一步的输出
print(hn.shape)print(out[-1, :, :])
print(hn)class Model(nn.Module):def __init__(self, dict_len=5000, embedding_dim=256, n_classes=2):super().__init__()# 嵌入:词向量self.embed = nn.Embedding(num_embeddings=dict_len,embedding_dim=embedding_dim)# 循环神经网络提取特征self.rnn = nn.RNN(input_size=embedding_dim,hidden_size=embedding_dim)# 转换输出self.out = nn.Linear(in_features=embedding_dim,out_features=n_classes)def forward(self, x):# [seq_len, batch_size] --> [seq_len, batch_size, embedding_dim]x = self.embed(x)# out: [seq_len, batch_size, embedding_dim]# hn: [1, batch_size, embedding_dim]out, hn = self.rnn(x)# [1, batch_size, embedding_dim] --> [batch_size, embedding_dim]x = torch.squeeze(input=hn, dim=0)# [batch_size, embedding_dim] --> [batch_size, n_classes]x = self.out(x)return xmodel = Model(dict_len=5000, embedding_dim=256, n_classes=2)
print(model)X = torch.randint(low=0, high=5000, size=(26, 3), dtype=torch.long)
# [seq_len, batch_size]
print(X.shape)# [batch_size, n_classes]
print(model(X).shape)

- 输出


http://www.ppmy.cn/server/62262.html

相关文章

【EI征稿】第四届机器人、自动化与智能控制国际会议

【快速通道】 参会方式&#xff1a;担任会议committee成员、组建workshop 、参会报告、参会交流、审稿专家、投稿参会。 会议地点&#xff1a; 湖南 长沙 会议时间&#xff1a;12月6日-9日 会议检索&#xff1a;EI检索 会议官网&#xff1a;https://www.icraic.org/ 投稿链接&a…

昇思25天学习打卡营第14天|K近邻算法实现红酒聚类

红酒Wine数据集 类别(13类属性)&#xff1a;Alcohol&#xff0c;酒精&#xff1b;Malic acid&#xff0c;苹果酸 Ash&#xff0c;灰&#xff1b;Alcalinity of ash&#xff0c;灰的碱度&#xff1b; Magnesium&#xff0c;镁&#xff1b;Total phenols&#xff0c;总酚&#xf…

数据建设实践之大数据平台(二)安装zookeeper

安装zookeeper 上传安装包到/opt/software目录并解压 [bigdatanode101 software]$ tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/services/ 重命名文件 [bigdatanode101 services]$ mv apache-zookeeper-3.5.7-bin zookeeper-3.5.7 配置环境变量 export JAVA_H…

5.3 需求分析

软件需求 定义 分类 真题 需求工程 需求获取 真题 需求分析 状态转换图 数据流图 数据流图分层 顶层数据流图、0层数据流图 1层数据流图 真题 需求规约 需求定义方法 需求验证 需求验证内容 需求管理 版本控制 需求跟踪 变更控制 真题

构筑自主可控大数据“底座”,赋能数字经济发展

随着信息技术的飞速发展&#xff0c;大数据已成为推动经济社会发展的重要力量。在这个时代背景下&#xff0c;构筑自主可控的大数据“底座”不仅关乎国家安全&#xff0c;更是赋能数字经济、推动产业升级的关键所在。 自主可控大数据“底座”的重要性 自主可控大数据“底座”是…

CollectionUtils的使用

1、非空判断 判断集合是否为空 List<String>对象list&#xff0c;可以使用CollectionUtils中的isEmpty方法来判断list是否为空。代码如下 List<String> list new ArrayList<>(); boolean isEmpty CollectionUtils.isEmpty(list); System.out.println(is…

ES6 Module 的语法(十二)

ES6&#xff08;ECMAScript 2015&#xff09;引入了模块&#xff08;Modules&#xff09;的概念&#xff0c;使得JavaScript代码可以更容易地组织和复用。 1. export 关键字 命名导出 (Named Exports) 你可以使用 export 关键字导出多个变量、函数或类。 // module.js export…

Transformer——多头注意力机制(Pytorch)

1. 原理图 2. 代码 import torch import torch.nn as nnclass Multi_Head_Self_Attention(nn.Module):def __init__(self, embed_size, heads):super(Multi_Head_Self_Attention, self).__init__()self.embed_size embed_sizeself.heads headsself.head_dim embed_size //…