2016-11-18 12 views
0

this tutorialに続いて、Wit.aiを使用してsimple scriptを書きました。Wit.aiの1つのメッセージで複数のエンティティを操作する方法は?

だから、最初のメッセージからエンティティを取得するコードスニペットがあります:私は他のメッセージからエンティティを取得できますか

  1. :私は2つの質問がある

    def first_entity_value(entities, entity): 
        if entity not in entities: 
         return None 
        val = entities[entity][0]['value'] 
        if not val: 
         return None 
        return val['value'] if isinstance(val, dict) else val 
    

    は?だから、ユーザーが何かを入力したとき(最初のメッセージではない)?

  2. 私はメッセージ内に複数のエンティティを持っている(例えば:私はこの週末つもり訪問ロンドンだ)、どのように私は、例えば、第2のエンティティ(週末)で入手できますか? は今、私は、次のような何かを書くことを試みたが、エラーました:

    def first_entity_value(entities, entity): 
        if entity not in entities: 
         return None 
        val = entities[entity][0][1]['value'] # to get the second entity 
        if not val: 
         return None 
        return val['value'] if isinstance(val, dict) else val 
    

答えて

1

「ロンドン」の場所と「週末」ですが日時です。彼らは同じ存在ではありません。

はちょうど適応、 entity引数を両方のエンティティを取得するには、次の

city = first_entity_value(entities, 'location') 
date = first_entity_value(entities, 'datetime') 

あなたが同じエンティティの2つの値を取得したい場合(例:私はパリロンドンを愛する)あなたがすべき、試した方法を使用してください:

def get_entity_value(entities, entity, pos): 
    if entity not in entities: 
     return None 
    val = entities[entity][pos]['value'] # to get the entity at "pos" 
    if not val: 
     return None 
    return val['value'] if isinstance(val, dict) else val 

私は本当にあなたの最初の質問を取得しません。あなたがユーザーからメッセージを受け取るたびに、選択されたアクション(Witの逆)が実行されます。

+0

私は2つのエンティティ(datetimeとlocation)を持っています。私はあなたが言ったように書いています(city = first_entity_value(エンティティ、 '場所') date = first_entity_value(エンティティ、 'datetime')、次のエラーがあります:val = entities [エンティティ] [0] ['値'] KeyError: 'value') –

+0

first_entity_value関数のval = entities [entity] [0] ['value'] 'を再設定しましたか? – Nitsuja

+0

私は同じval = entities [エンティティ] [0] ['値']を残しました –

関連する問題