2015-03-04 1 views
1

J'utilise MTurkR pour publier des HITs à mTurk et j'ai de la difficulté à étendre les HIT jusqu'à ce qu'il y ait un consensus parmi les travailleurs (ou jusqu'à ce qu'un total de 5 HIT aient été affichés).Étendre HITs jusqu'à l'accord MTurkR

Lorsque deux réponses différentes sont entrées, le HIT n'est pas étendu. Mon code découle de MTurkRdocumentation pg. 45. Mon code est le suivant:

# ############################################## 
# 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)} 

Le code génère 2 résultats (comme spécifié par assignments.v), mais le HIT ne sort pas.

Mes infos de session est ci-dessous:

> 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 

Répondre

0

D'abord quelques points clés sur le code affiché:

  1. Parce que vous ajoutez le hit.review.policy vous n'avez pas besoin l'argument assignments. Deux HIT peupleront immédiatement avec juste cette déclaration. Avant de définir les termes du hit.review.policy, consultez Amazon's documentation pour cela. Portez une attention particulière aux valeurs pour QuestionAgreementThreshold. Parce que les valeurs supérieures à cette valeur sont considérées comme des réponses convenues, votre code d'origine indiquait des valeurs supérieures à 49% étaient des réponses acceptées. Également examiner ExtendIfHITAgreementScoreIsLessThan cette valeur devrait probablement +1 de la valeur pour QuestionAgreementThreshold afin de capturer toutes les valeurs d'accord possibles.
  2. Enfin, assurez-vous que les valeurs de réponse pour les réponses HIT correspondent à l'objet QuestionIds. Lorsque je vois les réponses à mes HIT, les réponses sont appelées "question", j'ai donc remplacé cette valeur ici.

Avec tout cela dit, voici le code révisé qui étend désormais correctement HITS:

# ############################################## 
# 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)} 

Notez également que la documentation sur la MTurkR Package p. 44 (fin) est source de confusion. Le document donne l'exemple suivant:

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

Mais l'argument QuestionAgreementThreshold précise en fait au moins 49% accord (à savoir le HIT ne prolongera pas si 2 Turcs divisé les réponses). À moins que ce ne soit l'intention, il pourrait être préférable d'utiliser le code suivant:

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