2015-03-04 3 views
1

Я использую MTurkR для отправки HITs в mTurk, и у меня возникают проблемы с расширением HIT, пока не будет достигнуто согласие среди рабочих (или пока не будет опубликовано в общей сложности 5 HIT).Расширить HIT до согласования MTurkR

Когда введены два разных ответа, HIT не расширяется. Мой код следует из MTurkRdocumentation стр. 45. Мой код выглядит следующим образом:

# ############################################## 
# SET PARAMTERS FOR HITS 
# ############################################## 
layout="XXXXXXXXXXX" 
    #format for sandbox question. Get this from MTURK site 
annotation.v="Question1" 
assignments.v="2" 
title.v="TITLE" 
description.v="DESCRIPTION." 
reward.v=".00" 
duration.v=seconds(hour=1) 
expiration.v=seconds(days=4) 
keywords.v="survey" 
auto.approval.delay.v=seconds(days=1) 


# ############################################## 
# EXTEND HIT UNTIL AGREEMENT 
# ############################################## 
TurkAgreement=list(QuestionIds=c("Question1"), 
    QuestionAgreementThreshold=49, #at least 50% agree 
    ExtendIfHITAgreementScoreIsLessThan=50, 
    ExtendMinimumTimeInSeconds=3600, 
    ExtendMaximumAssignments=5, 
    DisregardAssignmentIfRejected=TRUE) 

policya=do.call(GenerateHITReviewPolicy,TurkAgreement) 


# ############################################## 
# CREATE HITS 
# ############################################## 
hits=NULL 
for(i in 1:length(DF)){ 
    hits.i=CreateHIT(
    hitlayoutid=layout, 
    hitlayoutparameters=GenerateHITLayoutParameter(c("XX","XX","XX"), c(DF[i,1],DF[i,2],DF[i,3])), 
    annotation=annotation.v[i], 
    assignments=assignments.v, 
    title=title.v, 
    description=description.v, 
    reward=reward.v, 
    duration=duration.v, 
    expiration=expiration.v, 
    keywords=keywords.v, 
    auto.approval.delay=auto.approval.delay.v, 
    qual.req=qualReqs, 
    hit.review.policy=policya, 
    sandbox=sandbox.v) 
    hits=rbind(hits,hits.i)} 

код генерирует 2 Кликов (как определено assignments.v), но ХИТ не распространяется.

Моя информация сессии ниже:

> sessionInfo() 
R version 3.1.1 (2014-07-10) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 

locale: 
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C       
[5] LC_TIME=English_United States.1252  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] MTurkR_0.6 

loaded via a namespace (and not attached): 
[1] digest_0.6.4 RCurl_1.95-4.3 tcltk_3.1.1 XML_3.98-1.1 

ответ

0

Сначала несколько ключевых моментов, о коде, публикуемую:

  1. Поскольку вы добавляете hit.review.policy вам не понадобится assignments аргумент. Два HIT сразу будут заполнены только этим утверждением.
  2. Прежде чем вы определяете условия для hit.review.policy, просмотрите Amazon's documentation. Обратите особое внимание на значения для QuestionAgreementThreshold. Поскольку значения, превышающие это значение, считаются согласованными, ваш исходный код показал значения, превышающие 49%, были согласованы. Также рассмотрите ExtendIfHITAgreementScoreIsLessThan, это значение должно, вероятно, +1 для значения QuestionAgreementThreshold, чтобы зафиксировать все возможные значения соглашения.
  3. Наконец, убедитесь, что значения ответа для ответов HIT соответствуют объекту QuestionIds. Когда я рассматриваю ответы на мои HIT, ответы называются «вопросом», поэтому я заменил это значение здесь.

Со всем, что сказал, вот пересмотренный код, который теперь корректно расширяет Кликов:

# ############################################## 
# SET PARAMTERS FOR HITS 
# ############################################## 
layout="XXXXXXXXXXX" 
    #format for sandbox question. Get this from MTURK site 
annotation.v="question" #NOTE CHANGE HERE 
#assignments.v="2" #NOTE CHANGE HERE (COMMENTED THIS OUT) 
title.v="TITLE" 
description.v="DESCRIPTION." 
reward.v=".00" 
duration.v=seconds(hour=1) 
expiration.v=seconds(days=4) 
keywords.v="survey" 
auto.approval.delay.v=seconds(days=1) 


# ############################################## 
# EXTEND HIT UNTIL AGREEMENT 
# ############################################## 
TurkAgreement=list(QuestionIds=c("question"), #NOTE CHANGE HERE 
    QuestionAgreementThreshold=50, #at least 50% agree #NOTE CHANGE HERE 
    ExtendIfHITAgreementScoreIsLessThan=51, #NOTE CHANGE HERE 
    ExtendMinimumTimeInSeconds=3600, 
    ExtendMaximumAssignments=5, 
    DisregardAssignmentIfRejected=TRUE) 

policya=do.call(GenerateHITReviewPolicy,TurkAgreement) 


# ############################################## 
# CREATE HITS 
# ############################################## 
hits=NULL 
for(i in 1:length(DF)){ 
    hits.i=CreateHIT(
    hitlayoutid=layout, 
    hitlayoutparameters=GenerateHITLayoutParameter(c("XX","XX","XX"), c(DF[i,1],DF[i,2],DF[i,3])), 
    annotation=annotation.v[i], 
    assignments=assignments.v, 
    title=title.v, 
    description=description.v, 
    reward=reward.v, 
    duration=duration.v, 
    expiration=expiration.v, 
    keywords=keywords.v, 
    auto.approval.delay=auto.approval.delay.v, 
    qual.req=qualReqs, 
    hit.review.policy=policya, 
    sandbox=sandbox.v) 
    hits=rbind(hits,hits.i)} 

Также обратите внимание, что документация на MTurkR Package стр. 44 (конец) запутан. В документе приводится следующий пример:

lista<-list(QuestionIds = c("Question1","Question2","Question5"), 
QuestionAgreementThreshold = 49, # at least 50 percent agreement 
ExtendIfHITAgreementScoreIsLessThan = 50, 
... 

Но аргумент QuestionAgreementThreshold фактически определяет по крайней мере, 49% соглашения (т.е. HIT не будет распространяться, если 2 турки расколоть ответы). Если это не намерение, может быть лучше использовать следующий код:

lista<-list(QuestionIds = c("Question1","Question2","Question5"), 
QuestionAgreementThreshold = 50, #NOTE CHANGE HERE # at least 50 percent agreement 
ExtendIfHITAgreementScoreIsLessThan = 51, #NOTE CHANGE HERE 
...