18

I know from communication with Mechanical Turk workers that there is a way to limit the number of HITs a specific worker can complete, but I cant figure out how to do it. Any help would be greatly appreciated!

4

7 回答 7

17

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

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

如果您希望将它与您自己的 URL/数据库一起使用,我还会在此处包含该脚本。如果你走这条路,你需要为你的数据库设置一个 web 界面,它接受一个工人 ID,如果允许工人在 HIT 上工作,则返回“1”,否则返回“0”。然后,您只需替换下面的“YOUR_URL”以指向该 Web 界面:

<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>
于 2012-12-13T02:20:20.127 回答
6

创建一个真正是单个 HIT 但每次查看时使用 javascript 动态更改 HIT 的命中。然后,在发布 HIT 时,将“每个 HIT 的作业数”设置为您想要的参与者数量。这样,您只会获得唯一的参与者。

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

于 2011-10-19T14:06:27.727 回答
3

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

我曾经这样做是有资​​格的,但发现它确实限制了参与。

于 2010-09-23T22:00:36.160 回答
1

If you want x unique users, make the number of assignments per HIT equal to x in the "Design" section. Then, when loading your csv file, only put one HIT in the file.

于 2012-07-03T21:14:43.020 回答
0

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

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

  • 对于您创建的特定 HIT 类型,任何 Worker 可以接受的最大分配数。在您设置它之前,该值是未定义的。
  • 任何 Worker 可以为您的所有 HIT 接受的最大分配数,否则这些 HIT 没有分配特定于 HIT 类型的限制。初始默认值为 10。

最初,无论 HIT 类型如何,您的所有 HIT 都与应用于该组的总体限制(默认为 10)分组在一起。

请注意,这是指工作人员当前可以接受的分配数量。工作人员提交任务后,他们可以接受另一个任务。

您可能不应该关心一个工作人员总共完成了多少 HIT,但您可能有一个原因要更改工作人员当前可以接受的数量,而不是默认的 10。当然,工作人员只能接受来自命中多个任务。

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

作为后者的一个例子,如果你想限制某人完成 N 总任务,你可以为每个 HIT 设置一个资格类型,并授予任何一个工人不超过 N 种类型。

于 2010-05-14T18:02:17.043 回答
0

只是为了澄清您是否只希望唯一的工人完成单次打击,您所要做的就是将最大分配设置为您想要的任意数量的唯一工人,而机械土耳其人默认情况下只会为该打击分配唯一的工人。

现在,如果您想要跨多次点击的独特工人,那么您必须花哨并使用外部问题以及记录工人 id 分机的脚本......

于 2012-01-05T01:02:09.423 回答
-1

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

于 2013-08-11T02:32:40.127 回答