В Mechanical Turk, как вы ограничиваете один HIT на одного работника? - PullRequest
14 голосов
/ 14 мая 2010

Из общения с рабочими из Mechanical Turk я знаю, что есть способ ограничить количество HIT, которые может выполнить конкретный работник, но я не могу понять, как это сделать. Любая помощь будет принята с благодарностью!

Ответы [ 7 ]

15 голосов
/ 13 декабря 2012

Я разработал скрипт, который в основном решает эту проблему. Основная идея состоит в том, чтобы сравнить идентификатор работника с базой данных, а затем скрыть HIT, если работник уже завершил связанный HIT.

Чтобы вам не нужно было размещать собственный сервер базы данных, я сделал мой сценарий доступным (бесплатно) по адресу: http://uniqueturker.myleott.com. Пожалуйста, дайте мне знать, если у вас возникли проблемы с использованием сценария или если у вас есть какие-либо вопросы или предложения.

Я также включаю сюда сценарий, на случай, если вы захотите использовать его со своим собственным URL / базой данных. Если вы идете по этому пути, вам нужно будет настроить веб-интерфейс для вашей БД, который принимает идентификатор работника и возвращает «1», если работнику разрешено работать в HIT, и «0» в противном случае. Затем вы просто замените «YOUR_URL» ниже, чтобы указать на этот веб-интерфейс:

<script type="text/javascript">
 (function() {
  var assignmentId = turkGetParam('assignmentId', '');
  if (assignmentId != '' && assignmentId != 'ASSIGNMENT_ID_NOT_AVAILABLE') {
   var workerId = turkGetParam('workerId', '');
   var url = 'http://YOUR_URL/?workerId='+workerId;
   var request = new XMLHttpRequest();
   request.open('GET', url, false);
   request.send();
   if (request.responseText != '1') {
    document.getElementById('mturk_form').style.display = 'none';
    document.getElementsByTagName('body')[0].innerHTML = "You have already completed the maximum number of HITs allowed by this requester. Please click 'Return HIT' to avoid any impact on your approval rating.";
   }
  }
 })();
</script>
5 голосов
/ 19 октября 2011

Создайте попадание, которое на самом деле представляет собой один HIT, но используйте javascript для динамического изменения HIT при каждом его просмотре. Затем при публикации HIT установите «Количество назначений на HIT» на количество участников, которое вы хотите. Таким образом, вы получите только уникальных участников.

В зависимости от типа HIT, который вы хотите запустить, этот метод может работать на вас. Я использовал его, чтобы рандомизировать стимулы, показанные участникам.

3 голосов
/ 24 сентября 2010

Вы также можете сделать это с внешними вопросами. Я провожу психологические эксперименты на механическом турке, поэтому мне нужны уникальные участники. В дополнение к требованию, чтобы работники выполняли только один HIT, я использую скрипт на python для проверки уникальности. Все мои хиты запускают скрипт cgi, чтобы получить вопрос. Сценарий просматривает файл журнала, и если работник ранее принял соответствующую работу, он вежливо сообщает им, что, поскольку мне нужны уникальные участники, HIT не будет доступен.

Раньше я делал это с квалификациями, но обнаружил, что это действительно ограничивает участие.

1 голос
/ 04 июля 2012

Если вы хотите, чтобы x уникальных пользователей, сделайте количество назначений на HIT равным x в разделе «Дизайн». Затем, при загрузке CSV-файла, поместите в него только один HIT.

1 голос
/ 05 января 2012

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

Теперь, если вам нужны уникальные работники для нескольких попаданий, вам нужно придумать и использовать внешний вопрос в сочетании со скриптом, который регистрирует ext идентификатора работника ...

1 голос
/ 14 мая 2010

См

http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2008-08-02/

Вы можете установить два типа ограничений:

  • Максимальное количество назначений, которое может принять любой работник для определенного типа HIT, который вы создали. Это значение не определено, пока вы его не установите.
  • Максимальное количество назначений, которое может принять любой работник для всех ваших HIT, для которых в противном случае уже не назначен лимит для конкретного типа HIT. Начальное значение по умолчанию - 10.

Первоначально все ваши HIT сгруппированы вместе с общим лимитом (по умолчанию 10), применяемым к группе, независимо от типа HIT.

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

Возможно, вам не важно, сколько HIT завершает работник в целом, но может быть причина, по которой вы хотите изменить число, которое работник может принять в настоящее время, по умолчанию 10. Конечно, работник может принять только один назначение из HIT с несколькими назначениями.

Если вы действительно, действительно хотите ограничить количество HIT, которые рабочий может на самом деле сделать, вам нужно будет либо указать, что вы не будете принимать больше, чем определенное число на одного работника, явно заявив, что вы Вы будете отклонять любые заявки после того, как предел будет достигнут ИЛИ вы можете сделать это с типами квалификации (но это может быть много работы)!

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

0 голосов
/ 11 августа 2013

psiTurk (приложение для исследования поведения MTurk) автоматически запрещает работникам повторять HIT, используя подход, аналогичный @ david-l. Раскрытие информации: я один из разработчиков проекта.

...