Публикация моего HTML в HIT в Mturk sandbox с моего локального компьютера

#python #amazon-web-services

#python #amazon-веб-сервисы

Вопрос:

Я выясняю, как я могу опубликовать свой HTML-файл с помощью python со своего локального компьютера для хитов в песочнице. У меня есть python и HTML в одном каталоге, и я использовал шаблон в данном руководстве. https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMechanicalTurkRequester/Welcome.html.

 
  

    1 import boto3
      2 MTURK_SANDBOX = 'https://mturk-requester-sandbox.us-east-1.amazonaws.com'
      3 mturk = boto3.client('mturk',
      4    aws_access_key_id = "AKIAWMEANKTGFT3M57VI",
      5    aws_secret_access_key = "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",
      6    region_name='us-east-1',
      7    endpoint_url = MTURK_SANDBOX
      8 )
      9 print("I have $"   mturk.get_account_balance()['AvailableBalance']   " in my Sandbox account")
     10
     11 html_layout = open('./HTML_template.html', 'r').read()
     12 new_hit = mturk.create_hit(
     13     Title = 'Finish all tasks',
     14     Description = 'Please follow the instructions described in the webpage',
     15     Keywords = 'multiple choice',
     16     Reward = '0.01',
     17     MaxAssignments = 1,
     18     LifetimeInSeconds = 172800,
     19     AssignmentDurationInSeconds = 600,
     20     AutoApprovalDelayInSeconds = 14400,
     21     Question = html_layout,
     22 )
     23 print("A new HIT has been created. You can preview it here:" )
     24 print("https://workersandbox.mturk.com/mturk/preview?groupId="   new_hit['HIT']['HITGroupId'])
     25 print("HITID = "   new_hit['HIT']['HITId']   " (Use to Get Results)")
     26 # Remember to modify the URL above when you're publishing
     27 # HITs to the live marketplace.
     28 # Use: https://worker.mturk.com/mturk/preview?groupId=

   

Вот сообщение об ошибке при запуске команды python3 create_tasks.py

 botocore.exceptions.ClientError: An error occurred (ParameterValidationError) when calling the CreateHIT operation: There was an error parsing the XML question or answer data in your request.  Please make sure the data is well-formed and validates against the appropriate schema. Details: Scanner State 24 not Recognized  (1602359732641 s)
  

Вот моя мысль: в строке 11 есть ошибка. Функция open не может принять HTML-файл, и поэтому я получил сообщение об ошибке. Как я могу исправить эту ошибку?

Ответ №1:

Очень вероятно, что ваш HTML-файл отформатирован неправильно. Пожалуйста, смотрите следующий пример.

 

    
      
          
            
        <crowd-form>
          <crowd-classifier
            name="sentiment"
            categories="['Positive', 'Negative', 'Neutral', 'N/A']"
            header="What sentiment does this text convey?"
          >
            <classification-target>
            Everything is wonderful.
            </classification-target>
            
            <full-instructions header="Sentiment Analysis Instructions">
            <p><strong>Positive</strong> 
              sentiment include: joy, excitement, delight</p>
            <p><strong>Negative</strong> sentiment include: 
              anger, sarcasm, anxiety</p>
            <p><strong>Neutral</strong>: neither positive or 
              negative, such as stating a fact</p>
            <p><strong>N/A</strong>: when the text cannot be 
              understood</p>
            <p>When the sentiment is mixed, such as both joy and sadness,
              use your judgment to choose the stronger emotion.</p>
            </full-instructions>
         
            <short-instructions>
             Choose the primary sentiment that is expressed by the text. 
            </short-instructions>
          </crowd-classifier>
        </crowd-form>
      </body>
    </html>
  ]]></HTMLContent>
  <FrameHeight>0</FrameHeight>
</HTMLQuestion>

  

Ответ №2:

Каково содержимое вашего HTML-файла?

Это не должен быть просто HTML. Turk ожидает, что html будет заключен в тег.

Смотрите https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMturkAPI/ApiReference_HTMLQuestionArticle.html для примера и посмотрите, как форматируется HTML-вопрос.