在Mechanical Turk,你如何限制每个工人一个HIT

时间:2010-05-14 16:40:18

标签: amazon-web-services mechanicalturk

我从与机械土耳其工人的沟通中得知,有一种方法可以限制特定工人可以完成的HIT数量,但我无法弄清楚如何去做。任何帮助将不胜感激!

7 个答案:

答案 0 :(得分:15)

我开发了一个主要解决这个问题的脚本。主要思想是针对数据库检查工作者ID,然后在工作人员已经完成相关HIT时隐藏HIT。

因此,您不需要托管自己的数据库服务器,我已将我的脚本作为(免费)服务提供:http://uniqueturker.myleott.com。如果您在使用脚本时遇到任何问题,或者您有任何问题或建议,请与我们联系。

我还在这里包含脚本,以防您希望将它与您自己的URL /数据库一起使用。如果你走这条路线,你需要设置一个带有工人ID的数据库的Web界面,如果允许工人使用HIT,则返回“1”,否则返回“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>

答案 1 :(得分:5)

创建一个真正是单个HIT的命中,但每次查看时都使用javascript动态更改HIT。然后将HIT设置为“每个HIT的分配数量”发布到您想要的参与者数量。通过这种方式,您将只获得独特的参与者。

根据您要运行的HIT的类型,这是一种可能适合您的技术。我用它来随机化给参与者显示的刺激。

答案 2 :(得分:3)

您也可以使用外部问题执行此操作。我在机械土耳其人上进行心理学实验,所以我需要独特的参与者。除了请求worker只执行一个HIT之外,我还使用python脚本来验证唯一性。我的HIT都运行cgi脚本来产生问题。该脚本会查询一个日志文件,如果该工作人员之前已经接受了相关的工作,它会礼貌地通知他们,因为我需要独特的参与者,所以HIT将无法使用。

我曾经用资格证明这一点,但发现它确实限制了参与。

答案 3 :(得分:1)

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

  

您可以设置两种类型的限制:

     
      
  • 任何工作者可以为您创建的特定HIT类型接受的最大分配数。在设置之前,此值是未定义的。
  •   
  • 任何工作人员可以接受的所有HIT的最大分配数,否则这些HIT已经分配了HIT类型特定的限制。初始默认值为10.
  •   
     

最初,无论HIT类型如何,所有HIT都会被应用到组中,并且总体限制(默认值为10)将被归为一类。

请注意,这是指工作人员当前可以接受的分配数量。一旦工人提交了作业,他们就可以接受另一项作业。

你可能不应该关心一个工人总体上完成了多少个HIT,但是你可能有理由想要改变一个工人当前从默认的10中接受的数量。当然,一个工人只能接受一个从具有多个任务的HIT分配。

如果你真的,真的想限制工人实际可以做的HIT数量,你需要指定你不会接受每个工人超过一定数量的HIT,明确说明你一旦达到限制就会拒绝任何提交,或者你可以用资格类型来做这件事(但这可能是很多工作)!

作为后者的一个例子,如果你想限制某人做N个总分配,你可以为每个HIT提供一个资格类型,并且给任何一个工人提供不超过N种类型。

答案 4 :(得分:1)

只是为了澄清你是否只想让唯一的工作人员完成一次命中,你所要做的就是将最大分配设置为你想要的许多独特工人,默认情况下,Mechanical Turk只会为该命中分配唯一的工人。

现在,如果您希望在多个匹配中遇到独特的工作人员,那么您必须使用外部问题以及记录工作者ID的外部脚本...

答案 5 :(得分:1)

如果您需要x个唯一身份用户,请在“设计”部分中将每个HIT的分配数量等于x。然后,在加载csv文件时,只在文件中放入一个HIT。

答案 6 :(得分:0)

psiTurk(MTurk行为研究应用程序)会自动阻止工作人员使用类似于@ david-l的方法重复HIT。披露:我是该项目的开发人员之一。