2017-07-07 56 views
0

我是MTurk的新手,並一直試圖在此平臺上實現我的Web應用程序進行點選擇。我已經使用基於kaflurbaleen.blogspot的教程的ExternalQuestion成功創建了一個HIT。但是,當我測試沙箱中的代碼時,我意識到HIT並未按照需要工作。我發現如下兩個問題。使用MTurk的externalQuestion創建的HIT在沙箱中不起作用

  1. 我找不到應該追加到URL的'assignmentId'。我檢查了workersandbox,發現下面的網址接受任務 https://workersandbox.mturk.com/mturk/preview?groupId=3JCELWMC4P1FAXE0GMTAW1L96T93VS

    據我瞭解,在「assignmentId」應該接受上面的鏈接後追加到URL之前。此參數必須使用'externalSubmit'方法返回到Mturk服務器。我發現只有下列參數後接受 hitId & prevHitSubmitted & prevRequester & requesterId & prevReward & hitAutoAppDelayInSeconds &的groupId &簽名

  2. 我也意識到可以根據需要在iframe的應用程序不能正常工作。每個(鼠標點擊+移動)應該創建一個紅色的球體,如原始網站https://s3.amazonaws.com/www.pickvertex3js.com/vertexpicking.html所示。

我曾嘗試谷歌尋找答案,很少成功。我現在正以智慧結束這兩個支撐我研究的問題。任何幫助將非常感激。使用BOTO3創建HIT的代碼如下。

import boto.mturk.connection 

# define the host environment 
sandbox_host = 'mechanicalturk.sandbox.amazonaws.com' 
real_host = 'mechanicalturk.amazonaws.com' 

mturk = boto.mturk.connection.MTurkConnection(
     host = sandbox_host, 
     debug = 1 
     ) 

# test the setup of boto by printing the version and account balance 
print(boto.Version) 
print(mturk.get_account_balance()) 

# link to my web app, which will be loaded by the iframe of Mturk 
URL = "https://s3.amazonaws.com/www.pickvertex3js.com/vertexpicking.html" 

# setting task description of the iframe 
title = "A Special HIT for Picking!" 
description = "Vertex picking!" 
keywords = ["3D mesh", "vertices"] 
frame_height = 500 # the height of the iframe holding the external hit 
amount = .00 

# creating the HIT (task) 
questionform = boto.mturk.question.ExternalQuestion(URL, frame_height) 
response = mturk.create_hit( 
     title = title, 
     description = description, 
     keywords = keywords, 
     question = questionform, 
     reward = boto.mturk.price.Price(amount = amount), 
     response_groups = ('Minimal', 'HITDetail'), 
     ) 

# trying to get some outputs 
HIT = response[0] 
assert response.status 

print ('[create_hit(%s, $%s): %s]' % (URL, amount, HIT.HITId)) 

# The response included several fields that will be helpful later 
print ('Your HIT has been created. You can see it at this link:') 
print ('https://workersandbox.mturk.com/mturk/preview?groupId={}'.format(HIT.HITTypeId)) 
print ('Your HIT ID is: {}'.format(HIT.HITId)) 

回答

0

我也在AWS開發者論壇上發佈了一個回覆,但在這裏也添加了它。

這裏的帖子:https://forums.aws.amazon.com/thread.jspa?threadID=259228&tstart=0

下面是它的一個副本,其他人因此從受益:

我看看你的命中率,我想我會在這裏提供一些建議。首先,幾個基準事情,如果他們幫助:

1)assignmentId被正確添加到您的HITs。您可以通過加載您共享的頁面(https://workersandbox.mturk.com/mturk/preview?groupId=3JCELWMC4P1FAXE0GMTAW1L96T93VS),點擊查看源代碼並滾動到標籤來確認。你應該看到的東西,看起來像這樣:

<iframe height="500" scrolling="auto" frameborder="0" align="center" src="https://s3.amazonaws.com/www.pickvertex3js.com/vertexpicking.html?assignmentId=ASSIGNMENT_ID_NOT_AVAILABLE&amp;hitId=33K3E8REWX0SAJQPACFE1K5LTDBX8G" name="ExternalQuestionIFrame"></iframe> 

2)一旦你接受了HIT,你應該看到標籤的變化看起來是這樣的:

<iframe height="500" scrolling="auto" frameborder="0" align="center" src="https://s3.amazonaws.com/www.pickvertex3js.com/vertexpicking.html?assignmentId=38YMOXR4MW4S3P05XVRV37Q4QFGW6D&amp;hitId=33K3E8REWX0SAJQPACFE1K5LTDBX8G&amp;workerId=A39ECJ12CY7TE9&amp;turkSubmitTo=https%3A%2F%2Fworkersandbox.mturk.com" name="ExternalQuestionIFrame"></iframe> 

3)我在當時一看你的代碼,並且我可以確認它在直接加載時工作正常,但放在IFRAME中似乎不起作用。我進一步嘗試瞭解onDocumentMouseDown()方法是否在IFRAME(我在該函數中添加了alert())時被調用,並且它是。我最好的猜測是,沒有深入研究它,是因爲THREE庫對IFRAME視口不友好。這也可能是這樣的一條線:

var mouse3D = new THREE.Vector3((event.clientX/window.innerWidth) * 2 - 1, 
-(event.clientY/window.innerHeight) * 2 + 1, 
0.5); 

沒有使用右窗口(即,,而不是使用IFRAME視口,它使用整個瀏覽器窗口,導致怪異/錯誤/錯誤行爲)。

簡短的說法是我不認爲你的問題與MTurk本身有關,而是與IFRAME相關。作爲一種不理想的解決方法,您也可以考慮將Worker直接鏈接到您的頁面(而不是IFRAME)並將其鏈接回MTurk上的提交URL。這並不理想,但我認爲它可以奏效。

希望有所幫助。