在 Mechanical Turk 中,如何限制每个工人只能获得一次 HIT

发布于 2024-09-01 17:59:49 字数 82 浏览 4 评论 0原文

我从与 Mechanical Turk 工人的交流中得知,有一种方法可以限制特定工人可以完成的 HIT 数量,但我不知道该怎么做。任何帮助将不胜感激!

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!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

呆萌少年 2024-09-08 17:59:49

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

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

我还在此处包含该脚本,以防您希望将其与您自己的 URL/数据库一起使用。如果您采用这种方式,则需要为数据库设置一个 Web 界面,该界面采用工作人员 ID,如果允许工作人员在 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>

I've developed a script that mostly solves this problem. The main idea is to check the worker ID against a database and then hide the HIT if the worker has already completed a related HIT.

So that you don't need to host your own database server, I've made my script available as a (free) service at: http://uniqueturker.myleott.com. Please let me know if you have any trouble using the script, or if you have any questions or suggestions.

I'm also including the script here, in case you wish to use it with your own URL/database. If you go that route, you'll need to set up a web interface to your DB that takes a worker ID and returns "1" if the worker is allowed to work on the HIT and "0" otherwise. Then you'll just replace "YOUR_URL" below to point to that web interface:

<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>
罪#恶を代价 2024-09-08 17:59:49

创建一个实际上是单个 HIT 的点击,但使用 javascript 在每次查看时动态更改 HIT。然后,在发布 HIT 时,将“每个 HIT 的作业数量”设置为您想要的参与者数量。通过这种方式,您只会获得独特的参与者。

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

Create a hit that really is a single HIT but use javascript to dynamically change the HIT every time it is viewed. Then when posting the HIT set "Number of assignments per HIT" to the number of participants you want. In this way you will only get unique participants.

Depending on the the type of HIT you want to run this is a technique that might work for you. I have used it to randomize the stimuli shown to the participants.

眼眸印温柔 2024-09-08 17:59:49

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

以前我也是有资格做这个的,但发现参与度确实有限。

You can also do this with external questions. I run psychology experiments on mechanical turk, so I need unique participants. In addition to requesting that workers only perform one HIT, I use a python script to verify uniqueness. My HITs all run a cgi script to produce the question. The script consults a log file, and if the worker has previously accepted a related job, it politely informs them that because I need unique participants, the HIT won't be available.

I used to do this with qualifications, but found that it really limited participation.

云胡 2024-09-08 17:59:49

如果您想要 x 个唯一用户,请在“设计”部分中将每个 HIT 的分配数量设置为 x。然后,在加载 csv 文件时,仅在文件中放入一个 HIT。

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.

昔日梦未散 2024-09-08 17:59:49

请参阅

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

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

  • 对于您创建的特定 HIT 类型,任何工作人员可以接受的最大分配数量。在您设置之前,该值是未定义的。
  • 对于所有尚未分配特定于 HIT 类型限制的 HIT,任何工作人员可以接受的最大分配数量。初始默认值为 10。

最初,您的所有 HIT 都会分组在一起,并且无论 HIT 类型如何,该组都会受到总限制(默认为 10)。

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

您可能不应该关心一个工作人员总共完成了多少 HIT,但是您可能有一个原因想要更改工作人员当前可以从默认的 10 接受的数量。当然,一个工作人员只能接受来自一个工作人员的一项分配。 HIT 具有多项作业。

如果您真的非常想限制一个工作人员实际可以执行的 HIT 数量,您将需要指定您不会接受每个工作人员超过一定数量的 HIT,明确说明您要一旦达到限制就拒绝任何提交,或者您可以通过资格类型来做到这一点(但这可能需要大量工作)!

作为后者的一个例子,如果您想限制某人完成 N 项总作业,您可以为每个 HIT 分配一个资格类型,并向任何一名工作人员授予不超过 N 种类型。

See

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

You can set two types of limits:

  • The maximum number of assignments any Worker can accept for a specific HIT type you've created. This value is undefined until you set it.
  • The maximum number of assignments any Worker can accept for all your HITs that don't otherwise have a HIT-type-specific limit already assigned. The initial default value is 10.

Initially, all your HITs are grouped together with an overall limit (default of 10) applying to the group, regardless of HIT type.

Note that this refers to the number of assignments that a worker can have currently accepted. Once the worker has submitted an assignment, they can accept another assignment.

You probably shouldn't care how many HITs a worker completes overall, but there might be a reason why you want to change the number a worker can have currently accepted from the default 10. Of course, a worker can only accept one assignment from a HIT with multiple assignments.

If you really, really want to limit the number of HITs a worker can actually do, you're going to need to either specify that you're not going to accept more than a certain number per worker, explicitly stating that you're going to reject any submissions once the limit has been reached OR you could monkey with qualification types to do that (but that could be a lot of work)!

As an example of the latter, if you want to limit someone to doing N total assignments, you could a qualification type for each HIT and grant no more than N types to any one worker.

丑丑阿 2024-09-08 17:59:49

只是为了澄清您是否只希望唯一的工人完成一次点击,您所要做的就是将最大分配设置为您想要的唯一工人的数量,默认情况下,Mechanical Turk 将只为该点击分配唯一的工人。

现在,如果您希望在多次点击中找到唯一的工作人员,那么您必须想出办法并使用外部问题以及记录工作人员 ID 的分机的脚本...

Just to clarify if you want only unique workers to complete a single hit all you have to do is to set the max assignments to however many unique workers you want and the Mechanical Turk by default will assign only unique workers to that hit.

Now if you want unique workers across multiple hits then you have to have to get fancy and use an external question coupled with a script that logs worker id's ext...

忆伤 2024-09-08 17:59:49

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

psiTurk (MTurk behavioral research app) automatically prevents workers from repeating HITs using an approach similar to @david-l. Disclosure: I'm one of the developers on the project.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文