Boto + Mechanical Turk:如何获取所有字段?

Boto + Mechanical Turk: how do you get all fields?

目前,我想手动创建 HIT,并使用 mturk 的 API 检索它们。

我正在使用 Boto 检索作业,但问题是我只能看到工作人员填写的信息。我也想看看我为HIT提供的原始资料

例证:

餐厅名称:Mike's Burritos(本人提供)

餐厅地址:[请在此处输入地址](mturk填写)

我可以通过以下方式获取餐厅地址:

from boto.mturk.connection import MTurkConnection
mtc = MTurkConnection(aws_access_key_id=[ACCESS_ID],
                  aws_secret_access_key=[SECRET_KEY],
                  host=[HOST])

assignments = mtc.get_assignments([HIT_ID], status=None, sort_by='SubmitTime', sort_direction='Ascending', page_size=10, page_number=1, response_groups=None)
address = assignments[0].answers[0][0].fields

如何获取餐厅名称?

谢谢, 埃德

更新

这是我用来创建 HIT 的相关 html:

<table>
    <tbody>
        <tr>
            <td><label>Restaurant name:</label></td>
            <td>${name}</td>
        </tr>
    </tbody>
</table>

^ 然后我上传一个 .csv 文件,其中 'name' 作为属性之一。这会填充上面的字段。

<div><label>Restaurant address:</label> <input class="form-control" id="address" name="address" placeholder="Enter restaurant address here" type="text" /></div>

^ MTurk 为每家餐厅填写此项

当我登录到 MTurk,查看结果并单击 "Download csv" 时,我能够得到想要的结果:一个包含餐厅名称和餐厅地址的 csv。

但是,我遇到的问题是以编程方式执行此操作。我只设法得到了餐厅地址...没有餐厅名称匹配它是没有用的。

您遇到的是 RUI 和 API 之间的差异。 RUI(即网站)实际上是一个构建在 MTurk API 之上的应用程序,其中包含其他功能。当您在 RUI 中创建 CSV 上传批处理时,MTurk 会将输入值附加到每个 HIT,以便在您下载结果时它们就在那里。 MTurk 实际上没有这个功能;这只是 RUI 的一个功能。

如果您通过 API 创建 HIT,您可以使用 RequesterAnnotation 字段标记它们以了解哪个 HIT 是哪个,但是无法模仿 API(合并输入和结果值)而不在本地记录哪个 HIT 进入哪个输入数据,然后在从 API 中提取分配数据后合并它们。因此,如果您通过 RUI 创建 HIT,然后从 API 中提取它们,基本上没有办法将输入映射到结果。