2016-07-21 4 views
0

私は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'に変更されたことがわかりました)。ストーリーの意図を明示的に定義できれば多分助けになるかもしれません。どう思いますか? (私たちが現在持っているものに大きな変更はない:物語の最初の文を定義する)

答えて

1

ありがとうございました。これはボットエンジンの現在の制限であり、我々はこれをカバーするよりエレガントな方法に取り組んでいます。その間、意図が "fav_topping"でないときは、 "ft_answer"コンテキストキーを削除することをお勧めします。コンテキスト

ウィットに

詳細情報は、次のステップの予測を行うためのコンテキストを読み込みます。我々は私たちの側で文脈を更新することはありません。コンテキスト内のキーを更新するには、あなたの側でアクションを使用します。これらのキーは、ストーリーに基づいて予測に影響するだけでなく、変数を介してボットの回答を構築することもできます。ウィットは、現在のコンテキスト(キーは現在のところ)、コンテキストの以前の状態(インタラクションN-1、N-2 ...)だけでなく、ユーザメッセージ(特性エンティティ)を使用して次のアクションを予測する。

+1

ヒントのおかげで。現在、私は似たようなことに取り組んでいますが、これをもっと深くやっています - ktsakasはhttps://github.com/wit-ai/wit/issues/258をお勧めしています。最初の会話をした後、私たちが同じ意図にあるかどうかをチェックします。もしそうでなければ、私はセッションを中止し、新しいセッションで同じテキストを送ります。かなりうまくいく。 – qspi

関連する問題