Rasa NLU 原始碼分析

2021-09-19 21:12:16 字數 1955 閱讀 1540

週末找了個 nlp 相關的工具,使用起來還不錯,它就是 rasa_nlu, 具有實體識別,意圖分類等功能,在加上乙個簡單的意圖操作即可實現簡單的 chatbot 功能,其類圖如下所示:

rasa_nlu 類依賴圖

整體程式的入口是在 data_router.py 檔案中的 datarouter 類中,主要作用是將模型以 project 的方式進行管理,控制資料的流向問題

component_classes 中包含所有 component 類

registered_components 通過將 component_classes 中的類進行迭代並遍歷出名稱 map

get_component_class 函式將 名稱轉為相應的 component 類

registry.py 檔案 主要作用是將 pipeline 中的名稱轉為相應的 類,以及匯入相應的模型檔案

config.py 配置檔案轉換

類名

說明rasanlumodelconfig

用來存放訓練是使用的 pipeline 引數

metadata

將 model 目錄下 metadata.json 檔案進行解析,並快取

trainer

訓練所有相關的 component 部分, 通過 train 函式進行訓練, 通過 persist 函式進行持久化儲存

interpreter

通過訓練好的 pipeline 模型解析文字字串

persistor

用於儲存模型在雲端 aws,gcs,azure等

在 persist 函式中,通過 self.pipeline 快取內容,加上各種引數以及相應模型檔案配置到 metadata.json 檔案中

interpreter 初始化流程

1. 載入 metadata 資料內容

2. 根據 metadata.json 中 pipeline 構件component 執行序列

3. 初始化 interpreter 引數列表

interpreter 解析文字過程

1. 將文字通過 message 進行封裝

2. 根據 component 執行序列處理 message 物件

3. 格式化輸出 message 物件內容

message 中通過 map 將所有計算結果存放在相應的地方最終格式化為輸出結果

spring原始碼分析 spring原始碼分析

1.spring 執行原理 spring 啟動時讀取應用程式提供的 bean 配置資訊,並在 spring 容器中生成乙份相應的 bean 配置登錄檔,然後根據這張登錄檔例項化 bean,裝配好 bean 之間的依賴關係,為上 層應用提供準備就緒的執行環境。二 spring 原始碼分析 1.1spr...

思科VPP原始碼分析(dpo機制原始碼分析)

vpp的dpo機制跟路由緊密結合在一起。路由表查詢 ip4 lookup 的最後結果是乙個load balance t結構。該結構可以看做是乙個hash表,裡面包含了很多dpo,指向為下一步處理動作。每個dpo都是新增路由時的乙個path的結果。dpo標準型別有 dpo drop,dpo ip nu...

redux原始碼分析(三) 原始碼部分

下面是每個部分的一些解讀 createstore apicreatestore reducer,initialstate enhancer 曾經非常好奇這個函式的第二個引數到底是initialstate還是enhancer,因為見過兩種寫法都有的,以為是版本問題。看了原始碼才發現,都可以的。如果你不...