2017-07-31 41 views
2

基本上,我想create a HIT,但我不希望它是提供给零工,直到后,我可以检索新的HIT的HITId,并执行一些其他的业务逻辑。有没有办法创建一个HIT,但延迟其对Mechanical Turkers的可用性?

我没有看到一个简单的方法,从亚马逊的文档做到这一点。一种解决方法,看起来可能是使用UpdateHITReviewStatus操作设置HITReviewStatusReviewing的时候,我不希望它是可见的,并Reviewable时,我希望它是可见的。

不幸的是,我不明白的方式来设置自定义HITReviewStatus在HIT创作;只有一种方法可以在HIT创建完成后设置和恢复此属性(这可能太晚了)。我想以某种方式创建一个HIT这样的(使用RTurk为Ruby):

RTurk::Hit.create(title: title) do |hit| 
    hit.assignments = assignments 
    hit.description = description 
    # ... more settings... 
    hit.review_status = 'Reviewing' 
end 

这不工作,虽然 - 我得到:

NoMethodError: 
     undefined method `review_status=' for #<RTurk::CreateHIT:0x007fb7e5db28c0> 

但是即使这个工作,它似乎是一个不雅的黑客。

任何人都有成功创建已有意延迟可用性或可审查的零工一击?

编辑:措辞

回答

2

免责声明:我从来没有使用这个库,并从字面上根本不知道它是什么,甚至,但我安装了宝石只是为了看看是怎么回事,它似乎可以做到这一点。

RTurk::Hit.create(title: title) do |hit| 
    hit.assignments = assignments 
    hit.description = description 
    # ... more settings... 
    hit.set_as_reviewing! # <------ NOTICE THIS LINE 
end 

我简单地通过这个基本步会发现这一点:

RTurk::Hit.new(title: 'Title').methods.sort - Object.methods 
# => [:assignments, :bonus_payments, :details, :disable!, :dispose!, 
#  :expire!, :extend!, :id, :id=, :map_content, :method_missing, 
#  :normalize_nested_params, :set_as_reviewable!, :set_as_reviewing!, 
#  :source, :source=, :url, :xml_to_hash] 

此方法的源位置RTurk::Hit#set_as_reviewing!虽然它缺乏文档。

此外,如果不工作一个可以试试这个:

RTurk::Hit.create(title: title) do |hit| 
    hit.assignments = assignments 
    hit.description = description 
    # ... more settings... 
end.hit.set_as_reviewing! 

虽然此实现将遭受同样的你原来的问题的持续时间应该非常短的周期基本上是

Create -- Web Call ------> Received 
           | 
Response Object <-- Response ---- 
    | 
Update -- Web Call -------> Received 

此外,您可以提供一个auto_approval_delay(不确定这会做什么,但它也可能有所帮助)文档状态:

The number of seconds after an assignment for the HIT has been submitted, after which the assignment is considered Approved automatically unless the Requester explicitly rejects it.

+0

谢谢您花时间回复。 '.set_as_reviewing!'在RTurk :: Hit上,但它在'RTurk :: CreateHIT'中不可用,这就是RTurk :: Hit.create(title:title)所在的地方。 |打| ;结束'块。不幸的是'auto_approval_delay'看起来像它配置时间直到自动批准,而不是直到HIT可以被接受的时间。 – drake

+0

@drake是的我认为第一个在审查源代码之后不会工作,因为它需要一个HitID,它现在还不可用。看起来像往返一样可能是唯一有效的方法 – engineersmnky

0

我使用Python API,而不是Ruby,但我认为它们具有相同的功能。您是否在创建HIT时尝试设置MaxAssignments=0,然后在您想允许工作人员后使用create_additional_assignments_for_hit()?我不知道函数名是否相同,并且有可能用0赋值创建HIT被认为是错误,但值得一试!

+0

MaxAssignments = 0确实是一个错误:调用CreateHITWithHITType操作时发生错误(ParameterValidationError):值0对MaxAssignments无效。有效值范围从1到1000000000 – Trenton

0

做的是该方法是使用HIT类型和UpdateHITTypeOfHIT。基本模式是:

  1. 创建一个HIT类型,任何人都不可能检索。您可以通过将相互独立的资格进行:Country == USCountry != US
  2. 创建另一个HIT类型没有这个不可能的要求。
  3. 在不可能达到HIT类型的情况下创建HIT。你会得到每个人的HIT ID。由于无法满足场所要求,工人无法看到它们。
  4. 当您准备向世界展示HIT时,请致电UpdateHITTypeOfHIT并将其更改为可见的HIT类型。

我不是红宝石的家伙,但我编码了prototype in Python。这是输出。希望这给你一些关于如何去做的想法。

Hidden HIT Type: 3UL1O09SX9IFON31CFQVVXR348R90N 
Visible HIT Type: 3DIFNAQ3LCEUPUBCT8DVOVQM1RE3TC 

Created HIT 3PZDSVZ3J4GXNMGD2YQL4LJ9SQHN40 of type 3UL1O09SX9IFON31CFQVVXR348R90N 

Changed HIT 3PZDSVZ3J4GXNMGD2YQL4LJ9SQHN40 to type type 3DIFNAQ3LCEUPUBCT8DVOVQM1RE3TC 

You can now see it here: 

https://workersandbox.mturk.com/mturk/preview?groupId=3DIFNAQ3LCEUPUBCT8DVOVQM1RE3TC 
相关问题