2022-03-13 RASA實戰(zhàn)筆記 -- 第九章rasa的擴展性

Rasa的擴展性

1. 如何使用自定義NLU組件和自定義策略

自定義NLU和自定義策略使用方式一致,但是絕大多數(shù)情況,開發(fā)者不需要使用自定義策略。重點介紹custom NLU

Rasa流水線(pipeline)配置中,可以直接給出內(nèi)置組件的名字。
Rasa還支持動態(tài)載入其他包的組件:
例如:用戶有自定義組件SillyNLP,其功能和現(xiàn)有的nlp_mitie一樣。該類位于somepackge包的this_model模塊內(nèi),用戶可以在pipeline配置中原本出現(xiàn)"nlp_mitie"地方,用該類的全局名字(fully qulified name)替換 —— "somepackge.this_model.SillyNLP",配置文件還可以傳參。

2. 如何自定義要給NLU組件或策略

NLU組件和策略在DAG中都作為節(jié)點使用,他們都屬于圖組件(graph components)。
自定義圖組件需要滿足以下三個要求:

  • 實現(xiàn)GraphComponent接口

  • 進行組件注冊

  • 使用類型注解(type annotation/ type hint)

  • ① 實現(xiàn)GraphComponent接口
    為了實現(xiàn)接口,組件必須繼承自Graph Component類(全路徑為rasa.engine.graph.GraphComponent),或者其子類(如Tokenizer子類)。

  • ② 進行組件注冊
    注冊是為了讓Rasa系統(tǒng)了解組件的特性,如組件類型、組件是否需要訓(xùn)練等。這些信息覺得構(gòu)造DAG時如何處理每個組件。

  • ③使用類型注解(type annotation/ type hint)
    Rasa利用類型注解來驗證模型的配置是否有效。注:前向引用(forward reference)(python 前向引用)是不被允許的。py3.7中可以使用 "from __ future__ import annotations" 來解決這一問題。

3. 自定義詞槽類型

定義一個詞槽類型關(guān)鍵步驟是將本詞槽轉(zhuǎn)換為Rasa系統(tǒng)可用的特性(機器學(xué)習(xí)的特性)。
開發(fā)者需要繼承詞槽基類,隨后重寫(override)計算特征數(shù)量和計算特征值的方法。
開發(fā)者需要保證在配置不變的情況下(詞槽系統(tǒng)允許開發(fā)者根據(jù)詞槽配置輸出不同的維度,這就是feature_dimensionality是方法而不是屬性的原因),模型輸出的特征維度不變,否則訓(xùn)練和推理時維度不同會導(dǎo)致系統(tǒng)出錯。

4. 其他功能擴展性

還可以自定義:

  • 自定義數(shù)據(jù)導(dǎo)入方式(通過自定義 data importer的方式)
  • 自定義tracker store
  • 自定義connector
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容