我正在使用以下代码使用Boto 3在Mechanical Turk上创建HIT:

new_hit = mturk.create_hit(
    Title='my title',
    Description='my description',
    Keywords='my, keywords',
    Reward='0.02',
    MaxAssignments=25,
    LifetimeInSeconds=9999,
    AssignmentDurationInSeconds=9999,
    AutoApprovalDelayInSeconds=9999,
    Question='''<?xml version="1.0" encoding="UTF-8"?>
<ExternalQuestion xmlns="http://mechanicalturk.amazonaws.com/AWSMechanicalTurkDataSchemas/2006-07-14/ExternalQuestion.xsd">
<ExternalURL>https://myexternalurl/</ExternalURL>
<FrameHeight>540</FrameHeight>
</ExternalQuestion>'''
)


这将创建一个具有25个任务的HIT。

但是,当我尝试检索结果时,只有10个分配:

results = mturk.list_assignments_for_hit(
    HITId='my HIT ID',
    AssignmentStatuses=['Submitted', 'Approved']
)

# This always maxes out at 10
print 'Number of assignments: ' + str(len(results['Assignments']))


我已经尝试了几种不同的HIT和几种不同的MaxAssignments值。它总是在10个作业中达到极限。看来Mechanical Turk正在默默将MaxAssignments设置为10。

我在Mechanical Turk文档中找到了两条线索。第一:


  使用少于10个分配创建的HIT不能扩展为具有
  10个或更多作业。尝试以某种方式添加作业
  使HIT的分配总数少于10
  分配到10个或更多分配将导致
  AWS.MechanicalTurk.InvalidMaximumAssignmentsIncrease异常。
  
  https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/mturk.html#MTurk.Client.create_additional_assignments_for_hit


第二:


  如果创建的HIT具有最多10个或更多的分配,则需要支付额外费用。有关更多信息,请参阅Amazon Mechanical Turk定价。
  
  https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_CreateHITOperation.html


但这并不能解释为什么我不能在第一个实例中为MaxAssignments使用大于10的值。我没有任何错误。

如何为每个HIT创建和检索十个以上的任务?

最佳答案

您是否尝试过指定MaxResults参数,如下所示:

response = client.list_assignments_for_hit(
    HITId='string',
    NextToken='string',
    MaxResults=123,
    AssignmentStatuses=[
        'Submitted'|'Approved'|'Rejected',
    ]
)

关于python - 每个HIT最多只能创建10个作业,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57875678/

10-11 02:21