我们使用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.