Amazon Mechanical Turk:一种资格类型中的随机问题

Amazon Mechanical Turk: Random Questions in One Qualification Type

我正在使用 CreateQualificationType 操作在 MTurk 中创建一个新的资格类型,这样我就可以在我的 HIT 中要求这个资格测试。

现在我有一套资格考试的问题,但我只希望要求资格考试的 MTurk 工人只回答这些问题的一小部分,并且不同作品随机回答 不同 个问题。我在 AWS Document about Qualifications 中没有找到任何有用的答案。有什么方法可以实现吗?

不幸的是,这是不可能的。只能使用 QuestionForm XML 设置资格测试,它不允许任何类型的随机化。最常推荐的替代方法是创建一个包含您想要的内容的 HIT,然后根据员工对 HIT 的响应为他们分配资格分数。不太理想,但唯一的选择。

事实上,小菜一碟。您需要做的是在循环中创建问题 xml 文件,然后从该问题 xml 创建命中。在下面的示例中,我手工制作了一个问题 xml 并验证了它在沙箱上的工作。然后我将问题 xml 文件分成与未更改的部分相对应的部分 a、b、c,然后在循环中我将 xml 代码写入文本文件。

  • 部分
  • 问题的一部分发生了变化,在本例中是图像
  • partb 部分问题发生了变化,在本例中为多项选择
  • 部分

在进度结束时,我有一个有效的 xml 文件,我打开并在创建命中中使用它。现在我知道这道题是关于资格的,但是思路是完全一样的。

for hit_number in range(how_many):
    print(hit_number)
    my_emotions = sample(emotion_names,5)
    my_emoji = sample(emoji_numbers,1)
    HIT_image = <a url on S3 is convenient>

    f_out = open('data/dynamic_question.xml', 'w')
    f_out.write(parta)
    f_out.close()

    f_out = open('data/dynamic_question.xml', 'a')
    f_out.write('    <DataURL>' + HIT_image + '</DataURL>' + '\n')
    f_out.write(partb)

    for emotion in my_emotions:
        f_out.write('          <Selection>' + '\n')
        f_out.write('            <SelectionIdentifier>' + emotion + '</SelectionIdentifier>' + '\n')
        f_out.write('            <Text>' + emotion.capitalize() + '</Text>' + '\n')
        f_out.write('          </Selection>' + '\n')

    f_out.write(partc)
    f_out.close()

    with open("data/dynamic_question.xml") as f:
        question = f.read()

    # Create the HIT 
    response = client.create_hit(