【對話系統】rasa源代碼閱讀-探索memoization policy是如何實現的

很久沒更新這個博客了,今天工作中需要實現rasa的story流程功能,所以先看看rasa的源代碼找一些靈感。

 

首先我們先train一個對話模型,rasa -core是用來訓練和使用對話管理模型的。下面是train部分的代碼。

from rasa_core.agent import Agent
from rasa_core import config

import uuid
def agent_train():
    policies = config.load("policies.yml")
    agent = Agent("domain.yml", policies=policies)
    training_data = agent.load_data("data/stories_order_food.md")
    agent.train(training_data, validation_split=0.0)
    agent.persist("./tests/models/dialogue2")

進入agent 的train方法裏。

可以發現每個policy都需要train,63行。什麼是policy呢?policy就是對話管理的策略,用來判斷機器回覆標籤的準則。

我們這裏研究的是memoization policy。

 

可以發現momoization policy需要training trackers作爲參數來產生訓練訓練集。

memoization實際上就是記錄所有的狀態,和狀態對應的action。將這些數據持久化之後等待預測時使用。

預測時則是讀出這些數據並查詢當前狀態對應的action

結合上下圖可以看出states都放入了look up屬性中。feature key就是狀態,feature item是action分類

 

states如上圖所示,prev action listen這個action分類表示系統監聽鍵盤輸入,但它放在數據裏的意義不明,還需要再探索

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章