自然语言处理(nlp)聊天机器人模块实现(代码片段)

author author     2022-12-05     623

关键词:

【自然语言处理(NLP)】聊天机器人模块实现


(文章目录)


前言

(一)、任务描述

使用PaddleNLP内置的生成式API的功能和用法,并使用PaddleNLP内置的plato-mini模型和配置的生成式API实现一个简单的闲聊机器人。


(二)、环境配置

本示例基于飞桨开源框架2.0版本。

import paddle
import paddle.nn.functional as F
import re
import numpy as np

print(paddle.__version__)

# cpu/gpu环境选择,在 paddle.set_device() 输入对应运行设备。
# device = paddle.set_device(gpu)

输出结果如下图1所示:


一、下载并更新相关包

AI Studio平台已经默认安装了PaddleNLP,但仍然需要使用如下的指令进行版本的更新,否则后续程序的运行会报错。

!pip install --upgrade paddlenlp -i https://pypi.org/simple
!pip install --upgrade pip
!pip install --upgrade sentencepiece

二、使用生成API实现闲聊机器人

下面我们来学习如何使用UnifiedTransformer模型及其内嵌的生成式API实现一个闲聊机器人。


(一)、数据处理

from paddlenlp.transformers import UnifiedTransformerTokenizer

# 设置想要使用的模型名称
model_name = plato-mini
tokenizer = UnifiedTransformerTokenizer.from_pretrained(model_name)

user_input = [你好啊,你今年多大了]

#调用dialogue_encode方法生成模型输入
encoded_input = tokenizer.dialogue_encode(
    user_input,
    add_start_token_as_response = True,
    return_tensors = True,
    is_split_into_words=False
)

print(encoded_input.keys())
# dict_keys([input_ids,token_type_ids,position_ids,attention_mask])


(二)、使用PaddleNLP一键加载预训练模型

PaddleNLP目前为UnifiedTransformer提供了三个中文预训练模型:

  • unified_transformer-12L-cn,该预训练模型是在大规模中文对话数据集上训练得到的。

  • unified_transformer-12L-cn-luge,该预训练模型是unified_transformer-12L-cn在千言对话数据集上进行微调得到的;

  • plato-mini,该模型使用了十亿级别的中文闲聊对话数据进行预训练。


from paddlenlp.transformers import UnifiedTransformerLMHeadModel

model = UnifiedTransformerLMHeadModel.from_pretrained(model_name)


(三) 、使用生成API输出模型预测结果

下一步我们将处理好的输入作为参数传递给generate()函数,并配置解码策略,这里我们使用的是TopK加sampling的解码策略,即从概率最大的k个结果中按概率进行采样。


ids.scores=model.generate(
    input_ids = encoded_input[input_ids],
    token_type_ids = encoded_input[token_type_ids],
    position_ids = encoded_input[position_ids],
    attention_mask = encoder_input[attention_mask],
    max_length =64,
    min_length = 1,
    decode_strategy = sampling,
    top_k = 5,
    num_return_sequences = 20
)
print(ids)
print(scores)

部分输出结果如下图所示:


四、将词典ID转为对应的汉字

#将词典ID转为对应的汉字
response = []
for sequence_ids in ids.numpy().tolist():
    sequence_ids = sequence_ids[:sequence_ids.index(tokenizer.sep_token_id)]
    text = tokenizer.convert_ids_to_string(sequence_ids,keep_space=False)
    response.append(text)
print(response)

因此,当我们在问机器人:“你好啊,你今年多大了”,可以得到的回复结果如下:


总结

本系列文章内容为根据清华社出版的《自然语言处理实践》所作的相关笔记和感悟,其中代码均为基于百度飞桨开发,若有任何侵权和不妥之处,请私信于我,定积极配合处理,看到必回!!!

最后,引用本次活动的一句话,来作为文章的结语~( ̄▽ ̄~)~:

【**学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。**】

nlp开发python实现聊天机器人(微软azure机器人服务)(代码片段)

...AI服务。借助此框架,开发人员可以创建使用语音、理解自然语言、回答问题等的机器人。什么是机器人?机器人提供了一种体验,感觉不像使用计算机,更像是与人 查看详情

nlp开发python实现聊天机器人(alice)(代码片段)

1、简介简单来说,聊天机器人是一种可以模拟和处理人类会话(无论是书面还是口头会话)的计算机程序,让人能够与数字设备交互,就像和真人交流一样。不同聊天机器人的复杂度各不相同,简单如通过单行响应回答简单查... 查看详情

nlp开发python实现聊天机器人(chatterbot)(代码片段)

...现中文、英文分词🎈🎈【NLP开发】Python实现聊天机器人(ELIZA))🎈🎈【NLP开发】Python实现聊天机器人(ALICE)🎈🎈【NLP开发】Python实现聊天机器人(ChatterBot)🎈🎈... 查看详情

自然语言处理(nlp)基于transformer的中-英机器翻译(代码片段)

【自然语言处理(NLP)】基于Transformer的中-英机器翻译(文章目录)前言(一)、任务描述飞桨框架实现了Transformer的基本层,因此可以直接调用:TransformerEncoderLayer类定义了编码器端的一个层,包括多头注意力子层及逐位前馈网络子... 查看详情

es-自然语言处理(代码片段)

前言自然语言处理(NaturalLanguageProcessing)是计算科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体... 查看详情

中文nlp笔记:13用keras实现一个简易聊天机器人

...,定义一个预测函数:然后进行预测:学习资料:《中文自然语言处理入门实战》 查看详情

自然语言处理(nlp)基于squad的机器阅读理解(代码片段)

【自然语言处理(NLP)】基于SQuAD的机器阅读理解(文章目录)前言(一)、任务描述机器阅读理解(MachingReadingComprehension,MRC)是一项基于文本的问答任务(Text-QA),也是非常重要和经典的自然语言处理任务之一。机器阅读理解旨... 查看详情

自然语言处理(nlp)基于bi-daf的机器阅读理解(代码片段)

【自然语言处理(NLP)】基于Bi-DAF的机器阅读理解(文章目录)前言(一)、任务描述在机器阅读理解(MRC)任务中,我们会给定一个问题(Q)以及一个或多个段落(P)/文档(D),然后利用机器在给定的段落中寻找正确答案(A),即Q+PorD=>A.机... 查看详情

自然语言处理(nlp)基于transformer的英文自动文摘(代码片段)

【自然语言处理(NLP)】基于Transformer的英文自动文摘(文章目录)前言(一)、任务描述本示例教程介绍如何使用飞桨完成一个机器翻译任务。我们将会使用飞桨提供的开源框架完成基于Transformer的英文文本自动文摘模型。飞桨框架... 查看详情

自然语言处理(nlp)基于gru实现情感分类(代码片段)

【自然语言处理(NLP)】基于GRU实现情感分类@TOC前言任务描述任务描述:本示例教程演示如何在IMDB数据集上用GRU网络完成文本分类的任务。IMDB数据集是一个对电影评论标注为正向评论与负向评论的数据集,共有25000条文本数据... 查看详情

自然语言处理(nlp)基于循环神经网络实现情感分类(代码片段)

【自然语言处理(NLP)】基于循环神经网络实现情感分类@TOC任务描述本示例教程演示如何在IMDB数据集上用RNN网络完成文本分类的任务。IMDB数据集是一个对电影评论标注为正向评论与负向评论的数据集,共有25000条文本数据作为... 查看详情

自然语言处理(nlp)基于lstm实现文字检测(代码片段)

【自然语言处理(NLP)】基基于LSTM实现文字检测作者简介:在校大学生一枚,华为云享专家,阿里云星级博主,腾云先锋(TDP)成员,云曦智划项目总负责人,全国高等学校计算机教学与产... 查看详情

自然语言处理之jieba,gensim模块(代码片段)

一,自然语言处理自然语言处理(NLP):自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数... 查看详情

nlp⚠️学不会打我!半小时学会基本操作8⚠️新闻分类(代码片段)

...ectorizer数据介绍代码实现概述从今天开始我们将开启一段自然语言处理(NLP)的旅程.自然语言处理可以让来处理,理解,以及运用人类的语言,实现机器语言和人类语言之间的沟通桥梁.TF-IDF关键词提取TF-IDF(TermFrequency-InverseDocumentFre 查看详情

nlp⚠️学不会打我!半小时学会基本操作8⚠️新闻分类(代码片段)

...ectorizer数据介绍代码实现概述从今天开始我们将开启一段自然语言处理(NLP)的旅程.自然语言处理可以让来处理,理解,以及运用人类的语言,实现机器语言和人类语言之间的沟通桥梁.TF-IDF关键词提取TF-IDF(TermFrequency-InverseDocumentFre 查看详情

自然语言处理(nlp)基于循环神经网络实现情感分类(代码片段)

【自然语言处理(NLP)】基于循环神经网络实现情感分类活动地址:[CSDN21天学习挑战赛](https://marketing.csdn.net/p/bdabfb52c5d56532133df2adc1a728fd)作者简介:在校大学生一枚,华为云享专家,阿里云星级博主,... 查看详情

自然语言处理nlp快速入门(代码片段)

自然语言处理NLP快速入门 https://mp.weixin.qq.com/s/J-vndnycZgwVrSlDCefHZA  【导读】自然语言处理已经成为人工智能领域一个重要的分支,它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。本文提供了... 查看详情

nlp⚠️学不会打我!半小时学会基本操作1⚠️分词(代码片段)

...式搜索引擎模式获取词性概述从今天开始我们将开启一段自然语言处理(NLP)的旅程.自然语言处理可以让来处理,理解,以及运用人类的语言,实现机器语言和人类语言之间的沟通桥梁.分词器jiebajieba算法基于前缀词典实现高效的词图... 查看详情