我跟着this tutorial使用Wit.ai写了一个simple script。
因此,有一个代码片段可以从第一条消息中检索实体:
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
我有两个问题:
我在邮件中有多个实体(例如:我要访问伦敦这个周末),我怎样才能获得第二个实体实体(周末)? 现在我尝试编写类似下面的内容但出现错误:
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
答案 0 :(得分:1)
“伦敦”是一个位置,“周末”是日期时间。它们不是同一个实体。
要检索两个实体,只需调整entity
参数:
city = first_entity_value(entities, 'location')
date = first_entity_value(entities, 'datetime')
如果您想要检索同一实体的两个值(例如:我喜欢巴黎和伦敦),那么您应该使用您尝试过的方法:
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 converse)。