Mechanical Turk – 通过API获取批次的结果

我们使用Mechanical Turk网络界面创建了批量的HIT.现在我们要做的就是使用API​​下载批量结果,就像使用“下载CSV”下载Web界面中批量结果一样.

亚马逊的文档说,从API下载结果是可能的,如果不是,我会感到惊讶.但经过大量的编程时间和测试后,我无法获得批量的结果.

http://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_OperationsArticle.html

我们的问题不是获取HIT数据,GetHIT很容易.我们的问题不是获取分配数据,而是使用GetAssignmentsForHIT轻松完成.我们的问题是弄清楚批处理的HIT ID,以便我们只获取该批处理的结果.

我们认为我们可以使用GetHITsForQualificationType执行此操作,但由于我们对所有批次使用相同的HIT类型ID,因此这是不可能的.我能看到的唯一其他操作是SearchHITs,但是这个操作只允许你“排序”值,而不是通过例如批次ID“过滤”.

如果亚马逊是一家SOA公司并且他们遵循“吃你自己的狗食”的概念,那么我想知道他们如何使用他们的API在“下载CSV”中生成结果?

任何提示将不胜感激.谢谢!

更新#1

我相信您可以使用SearchHIT来提取所有HIT.然后使用GetHIT获取每个HIT的详细信息.然后通过实际包含批次ID的“RequesterAnnotation”过滤所有HIT,例如“BatchId:1234567;”.这可能是唯一的解决方案.听起来有点牵强.

最佳答案 工作流程与您在更新#1中描述的完全相同:

(1)使用SearchHITs获取所有HIT.

(2)使用GetHIT获取详细信息(实际上可以跳过此步骤,因为如果包含HITDetail响应组,则“请求者注释”字段随SearchHIT一起提供).

(3)通过注释字段过滤结果以获得所需的HIT.

(4)使用GetAssignmentsForHIT检索分配.

“批处理ID”似乎只能由Amazon访问,以便在请求者用户界面上使用. (见一些讨论on the MTurk Developer Forum)

当然,API会为您提供XML结果,您需要解析它以将其转换为CSV.

点赞