基本上,我想要create a HIT ,但我不希望 Turkers 可以使用它,直到我可以从新 HIT 检索 HITId
并执行一些其他业务逻辑。
我没有从亚马逊文档中看到执行此操作的直接方法。一种看起来可行的解决方法是使用 UpdateHITReviewStatus当我不希望其可见时,将 HITReviewStatus
设置为 Reviewing
;当我希望它可见时,将其设置为 Reviewable
。
不幸的是,我没有找到在创建 HIT 时设置自定义 HITReviewStatus
的方法;只有一种在 HIT 创建后设置和恢复此属性的方法(这可能为时已晚)。我想以某种方式创建一个 HIT(对于 Ruby 使用 RTurk):
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>
然而,即使这有效,它看起来确实像是一个不优雅的黑客。
是否有人成功创建了故意延迟 Turkers 的可用性或可审核性的 HIT?
编辑:措辞
最佳答案
免责声明:我从未使用过这个库,而且根本不知道它的用途,但我安装 gem 只是为了看看发生了什么,看来你可以做到这一点。
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.
关于ruby - 有没有办法创建 HIT,但延迟其对 Mechanical Turkers 的可用性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45424513/