我们使用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,因此这是不可能的。我能看到的唯一其他操作是SearchHIT,但是这个操作只允许你“排序”值,而不是通过例如批次ID“过滤”。
如果亚马逊是一家SOA公司并且他们遵循“吃你自己的狗食”的概念,那么我想知道他们是如何使用他们的API在“下载CSV”中生成结果的?
任何提示都将不胜感激。谢谢!
更新#1
我相信您可以使用SearchHITs
来提取所有 HIT。然后使用GetHIT
获取每个HIT的详细信息。然后通过实际包含批次ID的“RequesterAnnotation”过滤所有HIT,例如“BatchId:1234567;”。这可能是唯一的解决方案。听起来有点牵强。
答案 0 :(得分:1)
工作流程与您在更新#1中描述的完全相同:
(1)使用SearchHITs
获取所有HIT。
(2)使用GetHIT
获取详细信息(实际上您可以跳过此步骤,因为如果您包含SearchHITs
响应组,则“请求者注释”字段会随HITDetail
一起提供。
(3)通过注释字段过滤结果以获得所需的HIT。
(4)使用GetAssignmentsForHIT
检索作业。
“批次ID”似乎只有亚马逊可以在请求者用户界面上使用。 (参见一些讨论on the MTurk Developer Forum)
当然,API会以XML格式提供结果,您需要解析它以将其转换为CSV格式。