我的目标是防止以前为我的HIT工作的人为我的下一个HIT工作。
为了实现这个目标,在发布了第一轮HIT后,我为第一轮HITs的工作人员分配了一个名为"already_done_myHITs"的资格类型。
然后,为了发布第二个HIT,我将创建一个QualificationRequirement,它的比较器中有"DoesNotExist"值,,但我在导入库建议的值列表中看不到这个值。
我认为,在下面的代码中,我需要使用"DoesNotExist"值而不是X;然而,建议列表只包含"Exists",我看不到"DoesNotExist"。
QualificationRequirement[]qualReq=新的QualificationRequirement[1];
qualReq[0]=新的QualificationRequirement();
qualReq[0]。setQualificationTypeId(qualID);
qualReq[0]。setComparator(Comparator.X)
qualReq[0].setRequiredToPreview(false);
(我认为,如果我在发布第二个HIT时使用我分配给前一个工人的qualification_type_ID,然后使用Comparator.DoesNotExist,我可以禁止第一个HIT的工人在下一个HIT上工作)你对这个问题有什么建议吗?
我相信只有用于Amazon Mechanical Turk的Java SDK和Ruby SDK才是最新的DoesNotExist资格比较器。您可以在此处了解有关最近更新的Java SDK的更多信息。
请注意,Perl和.NET SDK以及命令行工具还不支持DoesNotExist比较器。
看起来你在使用Java SDK,所以你应该处于一个好的位置。下面是一个可以直接放入SDK中SimpleSurvey.java代码示例的示例。它应该出现在createSimpleSurvey()
方法中。只需更换这些线路:
// The create HIT method takes in an array of QualificationRequirements
// since a HIT can have multiple qualifications.
QualificationRequirement[] qualReqs = null;
qualReqs = new QualificationRequirement[] { locationQualReq, numHITsApprovedQualReq };
这个:
// This is a built-in qualification -- user must NOT be a Mechanical Turk Master Worker
QualificationRequirement notMasters = new QualificationRequirement();
notMasters.setQualificationTypeId("2ARFPLSP75KLA8M8DH1HTEQVJT3SY6"); // You can get these values here: http://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_QualificationRequirementDataStructureArticle.html
notMasters.setComparator(Comparator.DoesNotExist);
// The create HIT method takes in an array of QualificationRequirements
// since a HIT can have multiple qualifications.
QualificationRequirement[] qualReqs = null;
qualReqs = new QualificationRequirement[] { locationQualReq, numHITsApprovedQualReq, notMasters };
问题与JAVA SDK版本有关。我使用的是java aws mturk 1.6.2,现在我将其更新到了1.7.0版本。所以,问题已经过去了!现在Comparator的值列表包含"DoesNotExist"值!