日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

瞎扯机器人之语种不限 Paddlehub + Wechaty

發布時間:2024/1/18 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 瞎扯机器人之语种不限 Paddlehub + Wechaty 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

瞎扯機器人之語種不限 WeChaty + PaddleHub

一、項目背景

基于百度翻譯API, PaddleHub 以及 WeChaty實現微信端不限語種的聊天機器人。聊天時,你說啥語言就回復你啥語言,并保持聊天環境上下文。目前是首個使用微信客戶端交互的多輪對話模型。

本項目是參加【AI ChatBot 創意賽】的作品,PaddleHub攜手開源聊天機器人框架WeChaty帶來 AI ChatBot創意賽,為AI算法工程師提供一個全新的應用場景:Chatbot (Conversational AI),同時也為Chatbot 開發者提供一個全新的AI能力平臺,拓寬視野,為未來設計更加強大的 Chatbot 提供一扇門。

本項目主要難點是協調不同語言內容在多輪對話中進行交互,展現plato2模型強大的能力。另一方面亮點,結合了百度翻譯開放API,無縫對接,最終通過Wechaty保證了用戶在終端絲滑般的切換語言聊天。用戶可以很方便的體驗聊天的樂趣,尋找聊天話題不冷場,還能將本應用當成外語學習的好工具。

b站鏈接:https://www.bilibili.com/video/BV1sK4y1d7ys/

二、安裝環境

import paddle.fluid##檢查飛槳安裝情況 paddle.fluid.install_check.run_check()!pip install paddlehub==1.8.2 --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple # 安裝最新版本,使用清華源 !hub install plato2_en_base==1.0.0

三、關于WeChaty和PaddleHub

wechaty(https://github.com/wechaty/wechaty)是一款開源的微信SDK,它基于微信公開的API,對接口進行了一系列的封裝,提供一系列簡單的接口,然后開發者可以在其之上進行微信機器人的開發。

PaddleHub 是基于 PaddlePaddle 開發的預訓練模型管理工具,可以借助預訓練模型更便捷地開展遷移學習工作,旨在讓 PaddlePaddle 生態下的開發者更便捷體驗到大規模預訓練模型的價值。

關于二者的結合使用請參考我的另一個公開項目:
微信醫聊自動問答 WeChaty + PaddleHub

這里使用docker腳本可方便快速部署。請將your_token處替換成你的WeChaty token (puppet_padlocal_xxxxxxxxxxxxx)

export WECHATY_LOG="verbose" export WECHATY_PUPPET="wechaty-puppet-padlocal" export WECHATY_PUPPET_PADLOCAL_TOKEN="your_token"export WECHATY_PUPPET_SERVER_PORT="8080" export WECHATY_TOKEN="your_token"docker run -ti \--name wechaty_puppet_service_token_gateway \--rm \-e WECHATY_LOG \-e WECHATY_PUPPET \-e WECHATY_PUPPET_PADLOCAL_TOKEN \-e WECHATY_PUPPET_SERVER_PORT \-e WECHATY_TOKEN \-p "$WECHATY_PUPPET_SERVER_PORT:$WECHATY_PUPPET_SERVER_PORT" \wechaty/wechaty:latest ~

運行成功后如下圖:

三、關于plato2

PLATO2是一個超大規模生成式對話系統模型。它承襲了PLATO隱變量進行回復多樣化生成的特性,能夠就開放域話題進行流暢深入的聊天。在paddlehub中已經集成了兩個plato對話模型,分別是plato2_en_base和plato2_en_large。本文使用的是小模型plato2_en_base, 相比plato2_en_large會弱一些,本文使用的模型是plato2_en_base,有興趣的同學可以自己嘗試下plato2_en_large。

參考大佬的項目:“沒有對象就自己造”系列之 用paddlehub實現多輪對話
因考慮到訓練時長和數據集,本相關目主要是為了體驗,所以沒像大佬(沒入門的研究生)那樣進行訓練測試。

論文:PLATO-2: Towards Building an Open-Domain Chatbot via Curriculum Learning

代碼原址:github

Plato是百度推出的一個開放域對話系統,經過打磨,如今已經放出了Plato-2版本,不過可能出于商業化考慮,并沒有放出很詳細的教程,也沒有放出中文的預訓練模型,如果個人訓練的話可能會有很大的困難(論文中用64塊V100訓練了3周才得到的模型)。

相較于其他開放域對話系統,Plato的優勢在于一問多答情景下的處理,即一個問題對應多個不同的答復,找出合理的答復進行對話。這個模型包括兩個學習過程(如上圖),第一階段用當前表現很好的一對一對話的模型進行初步訓練;第二步進行微調,學習不同情景的對話生成并進行評估。由于Plato采用了更好的策略應付更加現實的場景,其在對話評估取得了目前最好的結果。

常用的參數:

train.py --train_file 訓練文件地址--valid_file 評估文件地址--model 用到的模型名稱:Plato:plato;NSPModel:next_sentence_prediction model--config_path 模型細節參數配置文件,如24L.json--task 模型應用任務 NextSentencePrediction;DialogGeneration;UnifiedTransformer--vocab_path 詞集路徑--spm_model_file sentencepiece model文件的路徑--num_epochs 訓練周期數--log_steps 輸出訓練詳情的間隔步數--validation_steps 評價間隔步數--save_steps 保存間隔步數infer.py --infer_file 需要推斷的文件--output_name 需要保存的對象,response;data_id;score--model 用到的模型名稱:Plato:plato;NSPModel:next_sentence_prediction model--config_path 模型細節參數配置文件,如24L.json--task 模型應用任務 NextSentencePrediction;DialogGeneration;UnifiedTransformer--vocab_path 詞集路徑--spm_model_file sentencepiece model文件的路徑

四、關于百度翻譯API

PaddleNLP中已有三款性能不錯的機器翻譯模型, 分別是(seq2seq, text_simultaneous_translation, transformer), 但是都需要大量的數據和訓練資源, 集成在項目里復雜度也較高,不太適合這篇新手體驗項目。而且經過測試,百度翻譯API的效果要遠比自己訓練的要好,響應和API設計都能達到要求。

使用百度翻譯API就極其簡單了, 就需要簡單的二三十行代碼,就能實現近實時的文本翻譯以及多語種交互翻譯。

準備工作主要是兩步:

第一步:
注冊百度賬號(自行注冊)

第二步
申請百度翻譯api ,獲得appid以及securityKey
申請教程:https://jingyan.baidu.com/article/3f16e00305bb552591c10304.html

第三步
下載相應的示例代碼,修改appid和securityKey就可以跑通了。 可參考我的代碼: baidu_translate.py

五、運行Plato2和百度翻譯

總體上效果還行, 雖然上下文環境的保持還是不夠優秀,語言翻譯額時候也會有一些偏差,但是已經能滿足瞎扯的需求了, 瞎扯的時候還能練練外語。
注意:要在GPU環境下運行

import paddlehub as hub import os from baidu_translate import translateos.environ["CUDA_VISIBLE_DEVICES"] = '0' module = hub.Module('plato2_en_base')with module.interactive_mode(max_turn=20):while True:human_utterance = input()if len(human_utterance) > 0:print("輸入文本: " + human_utterance) #以中文, 德語, 英語為例lan, en_txt = translate(human_utterance)if lan == "en":en_txt = human_utterancerobot_utterance = module.generate(human_utterance)if lan == "en":print("Robot: %s" % robot_utterance[0])continueelse:_, src_txt = translate(robot_utterance[0], "en", lan)print("Robot: %s" % src_txt)continueelse:break [2021-05-02 00:50:01,181] [ INFO] - Installing plato2_en_base module [2021-05-02 00:50:01,281] [ INFO] - Module plato2_en_base already installed in /home/aistudio/.paddlehub/modules/plato2_en_baseLoad pretraining parameters from /home/aistudio/.paddlehub/modules/plato2_en_base/assets/24L/Plato. 輸入文本: Hello, are you there? Robot: Hello I am . Where are you from ? 輸入文本: Ich komme aus China Robot: Das ist cool.Wo in China?Wenn ich fragen darf...Welchen Teil?Ich bin aus Hongkong, also kenne ich das Gefühl:) 輸入文本: Ich bin von Beijing Robot: I know Beijing is a very large city . Why did you decide to live there ? 輸入文本: 北京是個很好的城市 Robot: 是什么讓你選擇了北京?我聽說它真的很漂亮 輸入文本: for money Robot: What do you mean ? Do you work in Beijing ? And also , where did you live before ? 輸入文本: Ich wohne in Berlin zuvor. Robot: Oh, cool.Du bist einer der wenigen, die in der N?he von Peking leben.Wie ist Berlin? 輸入文本: leider zu Kalt hier Robot: Haha, Ich werde auch eine Berliner in Peking gestalten.

六、部署在wechaty和腳本任務上

實測效果還不錯~~~

七、總結

本項目嘗試了plato2, 并結合百度AI開放的機器翻譯API,打造了一個不限語種的聊天機器人,經過測試效果還挺不錯。

后續我將手動訓練機器翻譯模型以及plato2對話模型。

關于作者

PaddlePaddle開發愛好者

我在AI Studio上獲得黃金等級,點亮5個徽章,來互關呀~ https://aistudio.baidu.com/aistudio/personalcenter/thirdview/89442

請點擊此處查看本環境基本用法.

Please click here for more detailed instructions.

總結

以上是生活随笔為你收集整理的瞎扯机器人之语种不限 Paddlehub + Wechaty的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。