Boto + Mechanical Turk: как вы получаете все поля?

В настоящее время я хочу создавать HIT вручную и извлекать их с помощью API mturk.

Я использую Boto для получения заданий, но проблема в том, что я вижу только информацию, заполненную работниками. Я также хочу увидеть оригинальную информацию, которую я предоставил для HIT.

Дело в точке:

Название ресторана: Mike's Burritos (предоставлено мной)

Адрес ресторана: [пожалуйста, введите адрес здесь] (заполняется mturk)

Я могу получить адрес ресторана с:

from boto.mturk.connection import MTurkConnection
mtc = MTurkConnection(aws_access_key_id=[ACCESS_ID],
                  aws_secret_access_key=[SECRET_KEY],
                  host=[HOST])

assignments = mtc.get_assignments([HIT_ID], status=None, sort_by='SubmitTime', sort_direction='Ascending', page_size=10, page_number=1, response_groups=None)
address = assignments[0].answers[0][0].fields

Как я могу получить название ресторана?

Спасибо Эд

Обновить

Это соответствующий HTML-код, который я использовал для создания HIT:

<table>
    <tbody>
        <tr>
            <td><label>Restaurant name:</label></td>
            <td>${name}</td>
        </tr>
    </tbody>
</table>

^ Затем я загружаю файл.csv с именем в качестве одного из свойств. Это заполняет поле выше.

<div><label>Restaurant address:</label> <input class="form-control" id="address" name="address" placeholder="Enter restaurant address here" type="text" /></div>

^ MTurk заполняет это для каждого ресторана

Когда я вхожу в MTurk, просматриваю результаты и нажимаю "Скачать CSV", я могу получить желаемый результат: CSV, который включает в себя как название ресторана, так и адрес ресторана.

Однако проблема, которую я имею, состоит в том, чтобы делать это программно. Мне удалось получить только адрес ресторана... который бесполезен без названия ресторана.

1 ответ

Решение

То, что вы испытываете, - это разница между RUI и API. RUI (т. Е. Веб-сайт) на самом деле представляет собой приложение, построенное на основе MTurk API, которое включает в себя дополнительные функции. Когда вы создаете пакет CSV-загрузки в RUI, MTurk присоединяет входные значения к каждому HIT, чтобы они присутствовали при загрузке результатов. MTurk на самом деле не имеет этой функции; это особенность только RUI.

Если вы создаете HIT через API, вы можете пометить их, используя RequesterAnnotation поле, чтобы узнать, какой HIT какой, но нет способа имитировать пакетные функции API (которые объединяют входные и результирующие значения) без локальной записи того, какой HIT идет к каким входным данным, а затем слияния их после извлечения данных назначения из API. Таким образом, если вы создаете HIT через RUI, а затем извлекаете их из API, в принципе невозможно сопоставить входные данные с результатами.

Другие вопросы по тегам