私はwit.aiアプリで3階建てがあります最後からループバックされたwit.aiストーリーをやめるには?
- order_pizza: typical pizza ordering with size and toppings
- reserve_table: book a table for a specific date and time
- fav_topping: query favourite pizza topping from historical data by date
三番目に、fav_toppingは少し特殊です。ユーザーは「6月にお気に入りのトッピングは何でしたか」のように聞くことができます。そして答えを得た後、「うーん、7月?」のような日付を変更して再度尋ねることができます。
もっと正式には:私は複数のエンティティ(XとY)の話があるとしましょう。ユーザは、いくつかのパラメータ(Xについてはa、Yについてはb)を用いて質問を行い、答えを得る。 (Cの場合はX)、現在のパラメータと前のパラメータを混在させて回答します(Xはc、Yはb)。これを処理する
私はから最初に私のfav_toppingストーリーをループバック: fav_topping story with a loop-back
は完璧に動作しますが、私は問題を抱えています。それは決して終わらない。だから、それを止めることはできません、ユーザーはトピックを変更することはできません。ここでは、対話型モードを使用して、私のNode.jsクライアントからのログです:
> What was my favourite topping in June?
fav_topping
context in: {}
entities in: {"contact":[{"confidence":0.9965486088458536,"type":"value","value":"my","suggested":true}],"datetime":[{"confidence":0.9954243915206602,"type":"value","value":"2017-06-01T00:00:00.000-07:00","grain":"month","values":[{"type":"value","value":"2017-06-01T00:00:00.000-07:00","grain":"month"},{"type":"value","value":"2018-06-01T00:00:00.000-07:00","grain":"month"},{"type":"value","value":"2019-06-01T00:00:00.000-07:00","grain":"month"}]}],"intent":[{"confidence":0.9969200405818317,"value":"fav_topping"}]}
context out is: {"ft_answer":"Your favourite topping was tomato for sure :) *"}
sending... {"text":"Your favourite topping was tomato for sure :) "}
> and in June?
fav_topping
context in: {"ft_answer":"Your favourite topping was tomato for sure :) "}
entities in: {"datetime":[{"confidence":0.994470434703695,"type":"value","value":"2017-06-01T00:00:00.000-07:00","grain":"month","values":[{"type":"value","value":"2017-06-01T00:00:00.000-07:00","grain":"month"},{"type":"value","value":"2018-06-01T00:00:00.000-07:00","grain":"month"},{"type":"value","value":"2019-06-01T00:00:00.000-07:00","grain":"month"}]}]}
context out is: {"ft_answer":"Your favourite topping was tomato for sure :) "}
sending... {"text":"Your favourite topping was tomato for sure :) "}
> OK, I want a normal pizza with tomato and pepperoni
fav_topping
context in: {"ft_answer":"Your favourite topping was tomato for sure :) "}
entities in: {"contact":[{"confidence":0.5452832324099028,"type":"value","value":"I","suggested":true}],"pizza_size":[{"confidence":0.9769454518025678,"type":"value","value":"middle"}],"pizza_topping":[{"confidence":0.9934795348369287,"type":"value","value":"tomato"},{"confidence":0.9505825366331593,"type":"value","value":"pepperoni"}],"intent":[{"confidence":0.6669035510798399,"value":"order_pizza"}]}
context out is: {"ft_answer":"Your favourite topping was tomato for sure :) "}
sending... {"text":"Your favourite topping was tomato for sure :) "}
> Book me a table for 5 persons at 9pm
fav_topping
context in: {"ft_answer":"Your favourite topping was tomato for sure :) "}
entities in: {"contact":[{"confidence":0.8387365394318869,"type":"value","value":"me","suggested":true}],"number":[{"confidence":1,"type":"value","value":5}],"datetime":[{"confidence":1,"type":"value","value":"2016-07-07T21:00:00.000-07:00","grain":"hour","values":[{"type":"value","value":"2016-07-07T21:00:00.000-07:00","grain":"hour"},{"type":"value","value":"2016-07-08T21:00:00.000-07:00","grain":"hour"},{"type":"value","value":"2016-07-09T21:00:00.000-07:00","grain":"hour"}]}],"intent":[{"confidence":0.9997353858626356,"value":"reserve_table"}]}
context out is: {"ft_answer":"Your favourite topping was tomato for sure :) "}
sending... {"text":"Your favourite topping was tomato for sure :) *"}
質問です:どのように私は話を終えるためにBEに/プログラム的に手動で伝えることができますか?または、スイッチを処理するために自分のストーリーを設定するにはどうすればよいですか?
もう1つ注意してください:私のログでは、BEがよく理解しているように、ユーザーは新しいトピックを開始しました(意図が 'order_pizza'と 'reserve_table'に変更されたことがわかりました)。ストーリーの意図を明示的に定義できれば多分助けになるかもしれません。どう思いますか? (私たちが現在持っているものに大きな変更はない:物語の最初の文を定義する)
ヒントのおかげで。現在、私は似たようなことに取り組んでいますが、これをもっと深くやっています - ktsakasはhttps://github.com/wit-ai/wit/issues/258をお勧めしています。最初の会話をした後、私たちが同じ意図にあるかどうかをチェックします。もしそうでなければ、私はセッションを中止し、新しいセッションで同じテキストを送ります。かなりうまくいく。 – qspi