Mechanical Turk -通过API获取批处理结果



我们已经使用Mechanical Turk web界面创建了一批hit。现在我们要做的就是使用API批量下载结果,就像你可以使用" download CSV"在web界面中批量下载结果一样。

来自Amazon的文档说从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"的结果?

任何提示将非常感激。谢谢你!

UPDATE # 1

我相信您可以使用SearchHITs来拉出所有 HITs。然后使用GetHIT获取每个HIT的详细信息。然后通过"RequesterAnnotation"过滤所有HITs,它实际上包含批ID,例如"BatchId:1234567;"。这可能是唯一的解决办法。听起来有点牵强。

工作流程与您在更新#1中描述的完全相同:(1)使用SearchHITs获取所有hit。(2)获取GetHIT的详细信息(实际上您可以跳过这一步,因为如果包含HITDetail响应组,SearchHITs会附带"Requester Annotation"字段)。(3)通过注释字段对结果进行过滤,得到你想要的HITs。(4)使用GetAssignmentsForHIT检索赋值。

"批处理id"似乎只能在请求者用户界面上被Amazon访问。(参见MTurk开发者论坛上的一些讨论)

当然,API将提供XML格式的结果,您需要对其进行解析,以将其转换为CSV。

最新更新