【HUAWEI】HCIP-AI-MindSpore Developer V1.0 | 第五章 自然语言处理原理与应用(3 And 4) | 学习笔记

目录

[第五章 自然语言处理原理与应用](#第五章 自然语言处理原理与应用)

[3 自然语言处理应用系统](#3 自然语言处理应用系统)

[■ 对话系统](#■ 对话系统)

[■ 任务型对话系统架构](#■ 任务型对话系统架构)

[■ 对话系统关键技术-自然语言理解](#■ 对话系统关键技术-自然语言理解)

[■ 对话系统关键技术-对话管理](#■ 对话系统关键技术-对话管理)

[■ 对话系统关键技术-自然语言生成](#■ 对话系统关键技术-自然语言生成)

[4 基于 MindSpore 的自然语言处理实践](#4 基于 MindSpore 的自然语言处理实践)

[■ 模型实现](#■ 模型实现)

[▲ MindSpore中的NLP模型实现](#▲ MindSpore中的NLP模型实现)

[▲ 常用组件-嵌入层](#▲ 常用组件-嵌入层)

[▲ 常用组件-LSTM层](#▲ 常用组件-LSTM层)

[▲ 常用组件-机器翻译指标BLEU](#▲ 常用组件-机器翻译指标BLEU)

[■ 应用案例](#■ 应用案例)

[▲ 基于MindSpore的大规模预训练模型"盘古"](#▲ 基于MindSpore的大规模预训练模型“盘古”)

[▲ 盘古模型结构](#▲ 盘古模型结构)

[▲ 训练数据集](#▲ 训练数据集)

[▲ 大规模自动并行](#▲ 大规模自动并行)

[▲ 模型预测](#▲ 模型预测)

阅读理解

[古诗 & 对联生成](#古诗 & 对联生成)

文本生成

[第五章 测一测](#第五章 测一测)

缩略语表



第五章 自然语言处理原理与应用

3 自然语言处理应用系统

■ 对话系统

■ 任务型对话系统架构

■ 对话系统关键技术-自然语言理解

■ 对话系统关键技术-对话管理

■ 对话系统关键技术-自然语言生成

4 基于 MindSpore 的自然语言处理实践

■ 模型实现

▲ MindSpore中的NLP模型实现

MindSpore 框架中支持常用的 NLP 模型组件(算子、评估方法等)。

MindSpore 的模型集市 Model Zoo 中提供了经过深度优化的模型,方便使用者基于这些模型进行个性化的开发,包括:LSTM/GRU、 TextCNN、 Seq2Seq、Transformer、BERT、 GPT。

▲ 常用组件-嵌入层

mindspore.nn.Embedding

mindspore.nn.Embedding(vocab_size, embedding_size, use_one_hot=False, embedding_table="normal", dtype=mstype.float32,padding_idx=None)

vocab_size (int) : 词典的维度。

embedding_size (int) : 嵌入向量的维度。

use_one_hot (bool) :是否使用 one-hot 形式。默认值: False 。

embedding_table (Union[Tensor, str, Initializer, numbers.Number]) : 嵌入表的初始化方法。默认值: 'normal' 。

dtype (mindspore.dtype) :数据类型。默认值: mindspore.float32 。

++++输入++++:

input (Tensor)-维度 (batch_size,input_length) 。 其中的元素应为整数并且不应大于词典维度。p

++++输出++++:

output (Tensor)-维度 (batch_size,input_length,embedding_size) 。

使用示例

net = nn.Embedding(20000, 768, True)

input_data = Tensor(np.ones([8, 128]), mindspore.int32)

Maps the input word IDs to word embedding.

output = net(input_data)

result = output.shape

print(result)

输出结果 : (8, 128, 768)

▲ 常用组件-LSTM层

mindspore.nn.LSTM

mindspore.nn.LSTM(input_size, hidden_size, num_layers=1, has_bias=True, batch_first=False, dropout=0, bidirectional=False)

input_size (int) : 输入层维度。

hidden_size (int) ****:****隐藏层维度。

num_layers (int):LSTM 层数,默认值: 1 。

has_bias (bool) :是否使用偏置值。默认值: True 。

batch_first (bool):第一个维度是否为 batch_size. 默认值: False 。

dropout (float, int) :为每一层(除了最后一层)增加 Dropout ,默认值: 0 。

bidirectional (bool) ****:****是否为双向 LSTM. 默认值: False 。

mindspore.nn.LSTM 输入值

input (Tensor): 维度 (seq_len, batch_size, input_size) 或者 (batch_size, seq_len, input_size) 。

hx (tuple): 由两个 Tensors 组成 (h_0, c_0) ,数据类型 mindspore.float32 或 mindspore.float16 ,维度 (num_directions*num_layers,batch_size,hidden_size) 。

mindspore.nn.LSTM 输出值

output (Tensor):维度 (seq_len, batch_size, num_directions * hidden_size) 。

hx_n (tuple) :由两个 Tensors 组成 (h_n, c_n) ,维度 (num_directions * num_layers, batch_size, hidden_size) 。

使用示例

net=nn.LSTM(10,16,2,has_bias=True,batch_first=True,bidirectional=False)

input = Tensor(np.ones([3, 5, 10]).astype(np.float32))

h0 = Tensor(np.ones([1 * 2, 3, 16]).astype(np.float32))

c0 = Tensor(np.ones([1 * 2, 3, 16]).astype(np.float32))

output, (hn, cn) = net(input, (h0, c0))

print(output.shape)

输出结果: (3, 5, 16) 。

除此之外,还有 GRU 层mindspore.ops.DynamicGRUV2

▲ 常用组件-机器翻译指标BLEU

BLEU ( Bilingual Evaluation Understudy ) 是评价机器翻译模型的常用指标。

mindspore.nn.BleuScorel

mindspore.nn.BleuScore(n_gram=4, smooth=False)

n_gram (int):n_gram 值,范围 [1, 4] 。默认值: 4 。

smooth (bool):是否使用平滑,默认值: False 。

使用示例

candidate_corpus = [['i', 'have', 'a', 'pen', 'on', 'my', 'desk']]

reference_corpus = [[['i', 'have', 'a', 'pen', 'in', 'my', 'desk'],

['there', 'is', 'a', 'pen', 'on', 'the', 'desk']]]

metric = BleuScore()

metric.clear()

metric.update(candidate_corpus, reference_corpus)

bleu_score = metric.eval()

print(bleu_score)

输出结果 : 0.5946035575013605 。

■ 应用案例

▲ 基于MindSpore的大规模预训练模型"盘古"

大规模预训练语言模型( Pretrained Language model , PLM )已成为自然语言处理的**++++新范式++++**。具有数千亿个参数的 PLM ,如 GPT-3 ,使用少量的上下文学习,就在自然语言理解和生成方面表现出了强大的性能。

PanGu-α (盘古) 基于 MindSpore 进行开发,该模型具有多达 2000 亿个参数,在 2048 个 Ascend 910 AI 处理器的集群上进行训练。训练并行度策略是基于 MindSpore Auto-parallel 实现的,该策略由五个并行维度组成,将训练任务高效地扩展到 2048 个处理器,包括数据并行、算子级模型并行、 Pipeline 模型并行、优化器模型并行重计算

为了增强 PanGu-α 的泛化能力,从广泛的领域收集了 1.1TB 高质量的中文数据,对模型进行预训练。

PanGu-α 模型在中文 NLP 任务的评估中表现出了卓越的语言学习能力,在小样本学习和生成任务方面尤为突出。

▲ 盘古模型结构

基础结构为单向 Transformer 模型的 Decoder 层。

在堆叠的 Transformer 层之上加上了 Query 层,显式地进行预测,如下图所示:

▲ 训练数据集

通过多种来源的文本收集,经过数据清洗、筛选去重等手段建立了 1.1TB 的高质量中文文本语料库。经统计 Token 数量约为 250B 规模。

▲ 大规模自动并行
▲ 模型预测
阅读理解

阅读文章:株洲北站全称广州铁路(集团)公司株洲北火车站。除站场主体,另外管辖湘潭站、湘潭东站和三个卫星站,田心站、白马垅站、十里冲站,以及原株洲车站货房。车站办理编组、客运、货运业务。车站机关地址:湖南省株洲市石峰区北站路 236 号,邮编 412001 。株洲北站位于湖南省株洲市区东北部,地处中南路网,是京广铁路、沪昆铁路两大铁路干线的交汇处,属双向纵列式三级七场路网性编组站。车站等级为特等站,按技术作业性质为编组站,按业务性质为客货运站,是株洲铁路枢纽的主要组成部分,主要办理京广、沪昆两大干线四个方向货物列车的到发、解编作业以及各方向旅客列车的通过作业。每天办理大量的中转车流作业,并有大量的本地车流产生和集散,在路网车流的组织中占有十分重要的地位,是沟通华东、华南、西南和北方的交通要道,任务艰巨,作业繁忙。此外,株洲北站还有连接石峰区喻家坪工业站的专用线。株洲北站的前身是田心车站。

请问:株洲北站的前身是哪个车站?

回答:田心车站。

古诗 & 对联生成

:以枯藤、老树、夕阳作一首诗。

:藤影参差绕蓝桥,野花压枝低袅风,山风习习观残雪,村舍依依麦已深。

:上联:欢天喜地度佳节。

:下联:喜气洋洋迎新年。

文本生成

:有哪些办法可以教育猫?

:我觉得猫并不是不懂事的孩子,而是不懂事的孩子才会乱咬东西,所以,最好的办法就是给猫咪找个好的主人。楼主给它找家宠物店的话,在宠物店里买猫砂,不过,家里应该再放一个猫盆或者专用的宠物用盆。还有要提醒楼主一点的是,猫咪的牙齿问题也很容易使它们咬东西,所以,一定要给猫咪好好刷牙,定期的给猫咪洗澡,因为猫咪喜欢闻自己的身体的味道,所以,洗澡也是一种很好的办法。在给猫咪买吃的东西的时候,一定要注意,那些味道重的,可能就是猫咪误食的了,那就赶紧停止吃东西,或者把饭菜都吐出来,不然的话,就很可能误食一些它没有办法去辨识的东西,所以,为了防止这些东西误食,最好还是给猫咪买猫咪专用的,防止猫咪误食的。在给猫咪换洗干净的衣服或者是被子的时候,一定要用干净的猫砂盆,不要用热水,也不要用很烫的水,因为猫咪的身体素质很好,耐热能力也很强,所以,很容易伤到它们的身体。

第五章 测一测

缩略语表

ASR : Automatic Speech Recognition ,自动语音识别技术。

BERT : Bidirectional Encoder Representations from Transformers ,基于 Transformer的双向编码表示模型。

CNN : Convolutional Neural Network ,卷积神经网络。

CRF : Conditional Random Field ,随机场模型。

DM : Dialog Management ,对话管理。

GPT : Generative Pre-Training ,生成式预训练模型。

GRU : Gated Recurrent Unit ,门控循环单元。

HMM : Hidden Markov Model ,隐马尔可夫模型。

LSTM : Long Short Term Memory ,长短期记忆模型。

MEMM : Maximum-Entropy Markov Model ,最大熵马尔科夫模型。

NLG : Natural Language Generation ,自然语言生成。

NLP : Natural Language Processing ,自然语言处理。

NLU : Natural Language Understanding ,自然语言理解。

RNN : Recurrent Neural Network ,循环神经网络。

TF-IDF : Term Frequency-Inverse Document Frequency ,词频 - 逆文本频率方法。

TTS : Text to Speech ,文字到语音。

SVM : Support Vector Machine ,支持向量机。

说明:本文内容来源于网络,仅作为学习用途,如有侵权,请联系作者删除。

相关推荐
cnbestec34 分钟前
GelSight Mini视触觉传感器凝胶触头升级:增加40%耐用性,拓展机器人与触觉AI 应用边界
人工智能·机器人
bohu8341 分钟前
ros2-4.2 用python实现人脸识别
人工智能·opencv·人脸识别·ros2·服务调用
i200212091 小时前
【HarmonyOS】纯血鸿蒙真实项目开发---经验总结贴
华为·harmonyos·鸿蒙·鸿蒙系统
Loving_enjoy1 小时前
ChatGPT 数据分析与处理使用详解
大数据·人工智能
达子6661 小时前
笔记-使用ffmpeg产生rtsp视频流,然后用进行VLC播放
windows·笔记·ffmpeg
whaosoft-1431 小时前
51c自动驾驶~合集45
人工智能
生如夏花℡2 小时前
JAVA学习记录3
java·学习·idea
shaxin观yin2 小时前
python反序列化+沙箱逃逸++js+redis
python·学习·https
高 朗2 小时前
【GO基础学习】项目日志zap Logger使用
服务器·学习·golang·日志·zap
刘大猫262 小时前
《docker基础篇:1.Docker简介》,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
人工智能·操作系统·团队管理