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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

rasa算法_(十八)基于RASA开始中文机器人实现机制

發布時間:2025/3/8 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 rasa算法_(十八)基于RASA开始中文机器人实现机制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前文介紹了基于RASA的總體架構,本文著重介紹一下實現細節。

機器人管理概述

框架是多租戶SAAS系統,每個用戶可以創建多個機器人,每個機器人關聯獨立的語料庫,機器人能力,話術流程,在RASA中對應一個RASA運行實例。機器人管理應用系統需要給用戶提供最精簡的配置UI,且可以完成Rasa需要的相關配置。然后將這些數據轉成Rasa可以識別的yaml格式,保存在HDFS中。RASA到HDFS中獲取配置數據,進行訓練,測試。測試通過后將模型保存在HDFS中,部署上線時候,在啟動一個容器,加載HDFS中的模型,并啟動RASA服務。對話管理應用系統接收用戶消息,調用RASA endpoint完成響應消息預測。

機器人創建應用系統中創建唯一標識

調用rasa init接口,在rasa中初始化機器人

在git中創建版本庫

在hdfs分配存儲路徑和空間

在train server上啟動docker

機器人話術設計

RASA本身支持是多輪對話,需要做一個可視化流程圖,然后轉成Rasa的story和rule的配置。檢索型機器人,少量Faq可以直接使用rasa的response selector完成。但是海量知識庫的檢索,需要單獨系統,這個后續在機器人擴展能力里面再闡述。

因為機器人創建的時候,已經分配了訓練數據的存儲路徑,話術設計的內容可以直接生成配置文件放在訓練數據的路徑里面。

機器人訓練

訓練數據生成以后,用戶可以啟動訓練。每次數據訓練,會自動在git中生成一個版本節點。訓練是一個異步任務,放入對話管理平臺調度服務統一調度。訓練完成后,可以直接啟動測試。這時候rasa的服務是在訓練服務器啟動。當訓練新數據的時候,必須停止當前的測試任務。

機器人上線

測試通過后,啟動上線。如果是第一次上線,需要在生產環境創建容器,然后使用新訓練的模型,啟動生產環境對應的docker。如果是升級更新,只是使用新模型重啟docker。

機器人能力擴展

假如,我們已經有了KBQA的服務,那么用戶要開通這個服務,那只需要點擊開通,然后用戶需要選擇哪類問題由KBQA回答,那么對話管理服務,要做的事情,根據用戶提供的問題分類訓練一個意圖,然后配置規則將這個意圖關聯到KBQA Action上。能力擴充就完成了。用戶關閉KBQA,在配置文件中刪除這個意圖就可以了。

關于如何創建KBQA服務,如何使用用戶數據Fine turn模型等,后續會按不同的能力單獨討論。

機器人領域動態擴充

前面我們講的訓練數據,都基于一個前提,那就是字典或者說語言模型是固定的。我們在此基礎上擴展訓練數據。

當我們使用一個新的領域的時候,會有很多字庫中不存在的詞,這個時候需要Fine turn語言模型和字庫。比如我們使用的分詞是語言模型分詞,用的BERT作為基礎Featurizer,因此,機器人領域擴充是Fineturn BERT模型。我們在訓練服務器上單獨啟動BERT服務,由用戶傳入訓練數據,然后加入訓練調度隊列,成功后生成模型文件,供RASA啟動的時候引用。

在線學習

在線學習,訓練數據和上線的流程前面已經有了,這里關鍵是錯誤回答的標注問題。如何根據用戶的標注,重新更新訓練數據。

業務能力集成

業務模塊提供接口,rasa action server調用自定義action去調用業務模塊的接口,完成業務能力集成。

算法層架構圖

1、生產服務器和訓練服務器通過HDFS做文件共享,訓練服務器從HDFS取訓練數據進行訓練,生成模型,模型文件依舊保存于HDFS,而生產服務器從HDFS取訓練好的模型應用于推理。

2、每個robot使用的模型都可能不同,因此使用容器隔離,每個機器人啟動一個容器,容器內運行自己的rasa及各個能力組件。

3、語言模型也在各自的容器內訓練,啟動的時候使用各自的語言模型。

RASA相關配置

nlu和dm的配置

nlu和dm的配置都在config.yml里面,語言模型采用BERT,主要分了器使用DIET。

# Configuration for Rasa NLU.

# https://rasa.com/docs/rasa/nlu/components/

language: zh

pipeline:

- name: LanguageModelTokenizer #需要改代碼,去掉不支持中文的限制

- name: RegexFeaturizer

- name: LexicalSyntacticFeaturizer

- name: LanguageModelFeaturizer

model_name: bert

model_weights: bert-base-chinese

- name: DIETClassifier

epochs: 100

- name: EntitySynonymMapper

- name: ResponseSelector

epochs: 100

- name: FallbackClassifier

threshold: 0.3

ambiguity_threshold: 0.1

policies:

- name: MemoizationPolicy

- name: TEDPolicy

max_history: 5

epochs: 100

- name: RulePolicy

Tracker Store配置

Tracker Store主要功能是存儲用戶對話,我們使用PostgreSQL存儲。Rasa默認就支持。PostgreSQL的參數在endpoints.yml中配置。

endpoints.yml

tracker_store:

type: SQL

dialect: "postgresql" # the dialect used to interact with the db

url: "postgres"

db: "rasa" # path to your db

username: # username used for authentication

password: # password used for authentication

query: # optional dictionary to be added as a query string to the connection URL

driver: my-driver

Event Broker

事件代理主要作用是講機器人的對話異步傳給其他服務,比如將機器人的消息轉發給ES等。Event Broker支持kafka,數據庫方式等,我們采用kafka。配置也在endpoints.yml中配置。

endpoints.yml

event_broker:

type: kafka

security_protocol: SASL_PLAINTEXT

topic: topic

url: localhost

sasl_username: username

sasl_password: password

Lock Store配置

Rasa使用token鎖定機制來確保以正確的順序處理給定會話ID的傳入消息,并在消息處于活動狀態時鎖定會話。這意味著多個Rasa服務器可以作為復制服務并行運行,并且客戶端在發送給定會話ID的消息時不一定需要尋址同一節點。我們采用Redis作為Lock存儲。redis參數的配置,也是在endpoints.yml中。

lock_store:

type: "redis"

url:

port:

password:

db:

key_prefix:

模型加載路徑

模型保存在hdfs上,為了和rasa服務解耦,我們在rasa中使用從server加載,這樣模型保存以后,啟動一個http服務,通過http服務可以下載模型,然后再rasa的endpoints.yml中配置server地址

models:

url: http://model-server.com/models/default

wait_time_between_pulls: 10 # In seconds, optional, default: 100

Action Server配置

需要運行ActionServer才可以調用自定義Action。Actionserver的配置也在endpoints.yml里面。

action_endpoint:

url: "http://localhost:5055/webhook"

Action server的啟動方式

rasa run actions

啟動Action Server的時候,需要在配置文件的路徑下,且里面必須包含actions路徑,如典型一個機器人的配置如下,其中helloworld.py就是一個自定義action。

├── actions

│ ├── helloworld.py

│ └── __init__.py

├── config.yml

├── credentials.yml

├── data

│ ├── nlu.yml

│ ├── rules.yml

│ └── stories.yml

├── domain.yml

├── endpoints.yml

├── models

│ └── 20201228-084711.tar.gz

└── tests

└── test_stories.yml

自定義action

KBQA、DrQA 、閑聊機器人、檢索機器人、業務系統相關查詢,都是基于自定義Action實現的。actions路徑下有如下文件:

├── actions

│ ├── drqa_action.py

│ ├── kbqa_action.py

│ ├── chat_action.py

│ ├── retrival_action.py

│ ├── business_action.py

│ └── __init__.py

這些自定義action主要是實現了rasa_sdk的api和各個能力之間的適配。具體能力的實現在不同的系統中,后續我們會依次介紹各個系統的實現。

機器人能力擴展開發規范

由于機器人能力是動態擴展的,而且要嵌入到rasa系統中,因此要有遵循一定規則:支持命令行啟動訓練和推理

支持http調用,并滿足統一的接口規范

支持訓練數據和模型遠程存儲

總結

以上是生活随笔為你收集整理的rasa算法_(十八)基于RASA开始中文机器人实现机制的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: a免费观看 | 国产探花一区 | 青草青在线视频 | 精品国产乱码一区二区三 | www.香蕉视频在线观看 | 日韩专区一区 | 欧美人体做爰大胆视频 | 日韩在线综合 | 天天干夜夜欢 | 久久亚洲av成人无码国产电影 | 91在线看片| 亚洲天堂影院在线观看 | 人人插人人看 | 97人妻精品一区二区三区 | 毛片无码一区二区三区a片视频 | 搡8o老女人老妇人老熟 | 中文人妻熟女乱又乱精品 | 97香蕉超级碰碰久久免费软件 | 国产三级av在线播放 | 亚洲国产精品成人久久蜜臀 | 不用播放器的av网站 | 被灌满精子的波多野结衣 | 天堂网色 | 日韩精品一区二区三区久久 | 免费网站污| 澳门av在线| 亚洲成人一区二区三区 | 天天插伊人 | 奇米影视777在线观看 | 亚洲av无码专区在线电影 | 99热这里都是精品 | 最新中文字幕在线观看 | 女女同性高清片免费看 | 免费看的av片 | 激情久久综合 | 午夜在线播放 | 免费av看| 久久女同互慰一区二区三区 | 精品探花 | 国产精品果冻传媒潘 | 久草青青视频 | 男人午夜影院 | 99久久99久久免费精品蜜臀 | 国产在线精品观看 | 青青草原国产视频 | av黄色av | 欧亚一区二区三区 | 久久久久久久久久久久久女过产乱 | 日韩一级免费毛片 | 日韩avav | 黄色综合网 | 我们2018在线观看免费版高清 | 国产第四页| 大奶在线播放 | 久久久久国产视频 | 日韩成人免费在线视频 | 男生操男生网站 | 国产成人毛片 | 澳门av在线| 黑人无套内谢中国美女 | 伊人久久香| 欧洲精品一区二区三区久久 | 日韩精品视频一区二区三区 | 黄视频在线观看免费 | 都市激情综合 | 18成人免费观看视频 | 一级性生活免费视频 | 少妇做爰k8经典 | 靠逼网站在线观看 | 日本黄色www | 国产草草影院ccyycom | 久久草国产 | 国产在线麻豆精品观看 | 国产污视频在线 | 在线看国产视频 | 亚洲视频在线一区 | 高潮毛片无遮挡高清免费 | 樱花影院电视剧免费 | 特黄一级毛片 | 亚洲一区二区不卡视频 | 美女搡bbb又爽又猛又黄www | 久久综合伊人77777蜜臀 | 免费av大全 | 日韩美女免费视频 | 一级在线视频 | 三级黄色图片 | 亚洲精品国产熟女久久久 | 福利午夜视频 | 国产传媒视频 | 精品人妻午夜一区二区三区四区 | 丰满大肥婆肥奶大屁股 | 精品九九视频 | h视频在线免费看 | 国产一区日韩一区 | 国产欧美亚洲精品 | 国产欧美日韩综合精品一区 | 国产欧美日韩精品一区二区三区 | 日韩在线二区 | 三级理伦 |