dynamic seq2seq
1.0.0
Google最近開源了一個seq2seq專案google seq2seq
tensorflow推出了dynamic_rnn取代了原來的bucket,本計畫是基於dynamic_rnn的seq2seq模型。
這裡我建構了一些對話預料,中文語料本身就比較稀缺,理論上語料越多模型的效果越好,但會遇到很多新的問題,這裡就不多作說明。
對話語料分別在data目錄下Q.txt A.txt中,可以替換成你自己的對話語料。
# 新增小黄鸡语料
# 添加
python prepare_dialog.py 5000
seq = Seq2seq()
# 训练
seq.train()
# 预测
seq.predict("天气")
# 重新训练
seq.retrain()
me > 天气
AI > 地点: 重庆
气温: 7
注意: 天气较凉,较易发生感冒,请适当增加衣服。体质较弱的朋友尤其应该注意防护。
本專案增加了Action支持,可以自訂自己的功能後續會加入多輪會話的支援!
在action.py檔中,註冊自己action標籤及對應的接口,如:
# 注意:参数为固定参数
def act_weather(model, output_str, raw_input):
#TODO: Get weather by api
page = requests.get("http://wthrcdn.etouch.cn/weather_mini?city=重庆")
data = page.json()
temperature = data['data']['wendu']
notice = data['data']['ganmao']
outstrs = "地点: %sn气温: %sn注意: %s" % ("重庆", temperature.encode("utf-8"), notice.encode("utf-8"))
return outstrs
actions = {
"__Weather__":act_weather
}
Tips: 介面的參數暫時固定,後續更新
同時,訓練語料如下設計:
# Q.txt
天气
# A.txt
__Weather__