Alexa Entity Resolution на Flask Ask (без обработки синонимов)

Я делаю навык Alexa, используя Flask-Ask, у которого есть собственный слот — Пол. Основными значениями являются «Мужчина», «Женщина» и соответствующие им синонимы «Он», «она», «мальчик», «девочка» и т.д.

Навык просто реагирует на пол человека. Например. Высказывание «Ему 24 года» должно давать «мужской», но в ответ дает «он».

Я вижу правильные значения в выводе Json навыка, но есть ли более простая встроенная функция для обработки разрешений в flask-ask, чем кодирование для этого в обработчике намерений или анализ ответа json?

Любая помощь будет очень признательна


person Aditya Ganguli    schedule 15.05.2018    source источник


Ответы (1)


У меня была аналогичная проблема, я проанализировал JSON с помощью небольшой функции:

def resolved_values(request):
    """
    Takes the request JSON and converts it into a dictionary of your intent
    slot names with the resolved value.

    Example usage:

    resolved_vals = resolved_values(request)
    txt = ""
    for key, val in resolved_vals.iteritems():
        txt += "\n{}:{}".format(key, val)


    :param request: request JSON
    :return: {intent_slot_name: resolved_value}
    """
    slots = request["intent"]["slots"]
    slot_names = slots.keys()

    resolved_vals = {}

    for slot_name in slot_names:
        slot = slots[slot_name]

        if "resolutions" in slot:
            slot = slot["resolutions"]["resolutionsPerAuthority"][0]
            slot_status = slot["status"]["code"]
            if slot_status == "ER_SUCCESS_MATCH":
                resolved_val = slot["values"][0]["value"]["name"]
                resolved_vals[slot_name] = resolved_val
            else:
                resolved_vals[slot_name] = None
        else:  # No value found for this slot value
            resolved_vals[slot_name] = None
    return resolved_vals
person Avi Vajpeyi    schedule 03.08.2018