Оглавление
В 18 веке была сконструирована автоматическая машина для игры в шахматы. Но, как оказалось, ей управлял человек турецкой национальности, прятавшийся в основании конструкции. С тех пор появилось устойчивое выражение — Mechanical Turk — устройство, которое вроде как должно работать самостоятельно, но в итоге не справляется без человеческой помощи.
В 2005 году Amazon запустил в публичном доступе сервис, решающий задачи с привлечением человеческого интеллекта. Вот о нем мы и поговорим. Но прежде чем разобраться, как этот сервис работает, давайте определимся с терминологией.
Перед вами три базовых понятия:
- HIT — Human Intelligence Task — задача, которую необходимо решить с помощью человека. Она представляет собой инструкцию для Worker и интерфейс для отправки результата Requester.
- Worker — человек, который решает задачи.
- Requester — человек, который создает задачи.
Зачем нужен Mechanical Turk?
Задачи, которые решаются с помощью MTurk, весьма разнообразны:
- каталогизация данных;
- модерация контента;
- проведение опросов;
- транскрипция аудио и видео и т.д.
В целом, устройство способно решить любую задачу, которую может выполнить человек с помощью собственного интеллекта и, возможно, некоторых компьютерных программ. Первое, что нужно сделать — выбрать способ постановки проблемы и проверки результата. При этом MTurk имеет очень гибкий API, позволяющий создать HIT пятью различными способами.
Простые способы создания HIT
Два первых способа максимально просты. Они работают не только через API, но также имеют веб-интерфейс.
Первый способ — единоразовое создание задачи. Выглядит это примерно так:
Вы заполняете все необходимые поля и создаете задачу. У вас также есть возможность выбрать вариант формы — простой текст, чекбоксы, радиокнопки и т.д. Форма запроса очень проста. Она нужна для создания единоразовой задачи. Такую же форму (даже более сложную) можно построить через API, используя специальный формат XML. В терминах MTurk это называется QuestionForm.
Второй способ — MTurk Project — этот способ хорош, когда у вас одна задача с периодически изменяющимися данными. Например, нужно оценить 10 изображений по какому-либо критерию. Количество картинок неизменно. Число критериев тоже не меняется. Меняется лишь сам вопрос, но не его формат.
Проект создается из веб-интерфейса с помощью специального конструктора. Затем мы переходим к HIT — указываем идентификатор проекта и данные для задачи. Это можно сделать через API или через веб-интерфейс. Данные вносятся в специальную форму или загружаются из CSV файла.
Гибкие формы — создаем HIT практически для любой задачи
Следующие два способа доступны только через API. Они необходимы, если вам нужно получить гибкое решение задачи. То есть динамически генерировать любую форму. Это значительно расширяет количество задач, которые можно решить с помощью Mechanical Turk.
Способ №1: ExternalQuestion — вместо описания формы. Вы отправляете ссылку на HTML файл с вашей формой. MTurk отправляет ее в iframe и отображает для Worker. Этот способ удобен, если у вас статическая форма, но ее трудно описать через QuestionForm или для работы ей нужен JavaScript. В таком случае отличным решением станет размещение самой формы и всех ее ассетов на s3. И использование этой ссылки для создания HIT.
Способ №2: HTMLQuestion. То же самое, что и ExternalQuesion. Но вам не надо нигде хранить эти файлы. Вы динамически генерируете форму и отправляете ее в MTurk. Преимущество такого подхода в абсолютной гибкости. Недостаток — если форма ну очень сложная, проще использовать предыдущий подход: генерировать все файлы и загружать их на s3. А уже потом создавать HIT
При использовании этих двух подходов не забываем о специальном JavaScript, который нужно добавить в форму. Он должен будет назначить Worker вашей задаче.
Совет: Mechanical Turk Project позволяет изменять форму в собственном редакторе. Поэтому прототип формы проще создавать именно в нем. А потом уже динамически генерировать ее на своей стороне.
HIT на Вашей стороне
Все предыдущие подходы имеют ограничения, связанные с интерфейсом MTurk, так как формы отображаются внутри iframe. Как это исправить?
Вы можете поступить следующим образом. В задаче ставите ссылку на свою веб-страницу (где будет реализован весь необходимый функционал). По факту выполнения работы Worker получит код, который сможет ввести на форме HIT. Этот подход имеет один недостаток. Для создания всего необходимого функционала на стороне клиента, вам придется приложить некоторые усилия.
Общий FLOW
При создании HIT Requester указывает необходимые поля — заголовок, описание, цена, количество заявок (количество воркеров, которые могут подать заявку), квалификацию, и другие параметры. После этого HIT становится видимым для воркера, и он может подать заявку на выполнение. Requester ее утверждает, и затем Worker приступает к работе. По окончании все данные отправляются в MTurk, где Requester может их проверить и принять, либо отклонить. При положительном завершении проверки, Worker получает вознаграждение. Утверждение воркера на выполнение и принятие задачи можно сделать автоматическим.
Двухуровневые задачи
В самых сложный случаях, когда от результата работы в значительной степени зависит качество вашего продукта, MTurk можно использовать и для проверки результатов работы других Worker. Наш success story в двух словах. К задаче записи некоего текста голосом, мы добавили другую задачу, в которой Worker должен оценить полученные записи. Таким образом, мы смогли улучшить качество полученных результатов практически на полном автомате.
Общие советы для бизнеса, который хочет использовать MTurk
- Не забывайте о возможности указания квалификации. Ищите самых подходящих воркеров.
- Eсли задача содержит порно контент, об этом необходимо предупредить.
- Время выполнение задачи стоит ограничивать.
- Старайтесь постепенно уменьшать размер вознаграждения за выполнение задачи, пока не найдете оптимальную стоимость.
- Не забывайте следить за балансом на своем счете.
Общие советы для разработчиков
- Начните с песочницы (она доступна здесь и здесь). Но учтите — это не ваша личная песочница. Пока вы создавали задачу, она может оказаться уже на второй странице списка.
- Amazon предоставляет полную, но плохо структурированную документацию. Вам могут пригодиться 3 раздела: https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMechanicalTurkGettingStartedGuide/Welcome.html http://docs.aws.amazon.com/AWSMechTurk/latest/AWSMechanicalTurkRequester/Welcome.html http://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/Welcome.html.
- Официально гема mturk на GitHub не существует. Его можно найти в rubygems. Причем, с довольно скудной документацией. Но мы рекомендуем его скачать и заглянуть в папку examples, там довольно много полезных примеров.
- Не забывайте проверить баланс, перед созданием нового HIT.
Выводы
Решение задач с помощью человеческого интеллекта набирает и будет набирать популярность. Ведь его можно использовать не только для механической работы, но и для машинного обучения, которое сегодня развивается со второй космической скоростью. Кроме того, использование человеческих ресурсов порой намного дешевле и эффективнее, чем разработка и дальнейшее сопровождение сложного алгоритма.
Но самое главное — это найти баланс между автоматизацией и контролем Worker. Теоретически вы можете делать все в автоматическом режиме (автоматическое назначение на выполнение первого Worker, подавшего заявку и автоматическая выплата вознаграждения). Или же все контролировать самостоятельно. Но в таком случае вам обязательно понадобится сотрудник, который будет этим заниматься.
Если у вас остались вопросы, оставляйте комментарии или воспользуйтесь формой обратной связи.