2017-10-11 52 views
0

我想用程序在boto3上創建一個機械turk的問題,但是我似乎做錯了什麼,因爲create_hit需要的ExternalQuestion數據結構似乎丟失了。如何用boto3提交Mechanical Turk外部問題

我嘗試創建HIT像這樣:

import boto3 

#... 

client = boto3.client(
    'mturk', 
    endpoint_url=endpoint_url, 
    region_name=region_name, 
    aws_access_key_id=aws_access_key_id, 
    aws_secret_access_key=aws_secret_access_key, 
) 

question = ExternalQuestion(external_url=question_target, frame_height=800) 

response = client.create_hit(
     MaxAssignments=10, 
     Title='Test', 
     Description='This is a test of ExternalQuestion', 
     Question=question, 
     AssignmentDurationInSeconds=60, 
     LifetimeInSeconds=24 * 60 * 60, 
     Reward=0.01) 

從而未能:

Traceback (most recent call last): 
    File "createTask.py", line 21, in <module> 
    question = ExternalQuestion(external_url=question_target, frame_height=800) 
NameError: name 'ExternalQuestion' is not defined 

如何進行的任何意見表示高度讚賞。

+0

ExternalQuestion是一種數據結構,不是一個函數。它應該在XML文件中創建,然後在Python中使用'open()'命令並將'file.read()'傳遞給Question參數 – Mangohero1

+0

請參閱示例代碼[here](http://docs.aws .amazon.com/AWSMechTurk /最新/ AWSMturkAPI/ApiReference_ExternalQuestionArticle.html) – Mangohero1

回答

0

這是從我的生產代碼直接剪切。我打開一個XML文件,您可以從請求者網站獲取模板,然後將其修改爲包含您自己的javascript和html。我會在下面附上一個樣本。

的Python

import boto3 
region_name = 'us-east-1' 
aws_access_key_id = '*********************' 
aws_secret_access_key = '*********************' 
endpoint_url = 'https://mturk-requester-sandbox.us-east-1.amazonaws.com' 

# Uncomment this line to use in production 
#endpoint_url = 'https://mturk-requester.us-east-1.amazonaws.com' 
client = boto3.client(
    'mturk', 
    endpoint_url=endpoint_url, 
    region_name=region_name, 
    aws_access_key_id=aws_access_key_id, 
    aws_secret_access_key=aws_secret_access_key, 
) 
questionSampleFile = open("K:/" + str(somefile) + ".xml", "r") 
questionSample = questionSampleFile.read() 

localRequirements = [{ 
    'QualificationTypeId': '00000000000000000071', 
    'Comparator': 'NotIn', 
    'LocaleValues': [{ 
    'Country': 'WF' 
    }], 
    'RequiredToPreview': True 
    }] 
xReward = '0.25' 
# Create the HIT 
response = client.create_hit(
    MaxAssignments = 1, 
    #AutoApprovalDelayInSeconds = 259200, 
    #3 days for lifetime 
    LifetimeInSeconds = 172800, 
    #1 hour to finish the assignment 
    AssignmentDurationInSeconds = 5400, 
    Reward = xReward, 
    Title = 'Enter Missing Data', 
    Keywords = 'data entry, typing, inspection', 
    Description = 'Edit and Add Data from PDF', 
    Question = questionSample, 
    QualificationRequirements = localRequirements 
) 

XML

<HTMLQuestion xmlns="http://mechanicalturk.amazonaws.com/AWSMechanicalTurkDataSchemas/2011-11-11/HTMLQuestion.xsd"> 
    <HTMLContent><![CDATA[ 

]]> 
    </HTMLContent> 
    <FrameHeight>900</FrameHeight> 
</HTMLQuestion>