2010-05-14 6 views

risposta

1

Vedi

http://docs.amazonwebservices.com/AWSMechanicalTurkRequester/2008-08-02/

È possibile impostare due tipi di limiti:

  • Il numero massimo di incarichi di qualsiasi lavoratore può accettare per un tipo specifico di HIT che hai creato. Questo valore non è definito fino a quando non lo hai impostato.
  • Il numero massimo di incarichi che un lavoratore può accettare per tutti i propri HIT che non dispongono altrimenti di un limite specifico del tipo HIT già assegnato. Il valore iniziale di default è 10.

Inizialmente, tutti i colpi sono raggruppati con un limite complessivo (predefinito 10) applicare al gruppo, indipendentemente dal tipo HIT.

Si noti che questo si riferisce al numero di incarichi che un lavoratore può avere attualmente accettato. Una volta che il lavoratore ha inviato un incarico, può accettare un altro incarico.

Probabilmente non ci si deve preoccupare di quanti HIT un operaio completi nel suo complesso, ma potrebbe esserci un motivo per cui si desidera modificare il numero che un lavoratore può avere attualmente accettato dal predefinito 10. Naturalmente, un lavoratore può solo accettare un compito da un HIT con incarichi multipli.

Se si vuole davvero limitare il numero di HIT che un operatore può effettivamente fare, è necessario specificare che non si accetterà più di un determinato numero per lavoratore, affermando esplicitamente che rifiuterai qualsiasi invio una volta raggiunto il limite O potresti scimmiottare con i tipi di qualifica per farlo (ma potrebbe essere molto lavoro)!

Come esempio di quest'ultimo, se si desidera limitare qualcuno a eseguire N assegnazioni totali, è possibile un tipo di qualifica per ogni HIT e non concedere non più di N tipi a qualsiasi lavoratore.

+0

"Probabilmente non dovresti preoccuparti di quanti HIT un lavoratore completi in generale" - naturalmente dovresti. Per alcune categorie di lavoro, avere una persona fare molte iterazioni ha senso. Per altre categorie, è completamente inutile. Molti sondaggi utilizzano turk, ad esempio, e vogliono che una sola persona faccia il sondaggio solo una volta. –

+1

Tuttavia, non è questo il turk. Mechanical Turk esiste principalmente per gli umani per svolgere attività di Human Intelligence che un computer non può fare facilmente. Se davvero ti interessa quanti HIT completano un lavoratore, probabilmente non dovresti usare Mechanical Turk in primo luogo. –

+4

Apparentemente stai citando la documentazione per SetWorkerAcceptLimit. Questa funzionalità è stata disabilitata dal 2008: "Non è più possibile impostare il limite di accettazione". http://docs.amazonwebservices.com/AWSMechTurk/2008-04-01/AWSMechanicalTurkRequester/ApiReference_SetWorkerAcceptLimitOperation.html –

3

È anche possibile farlo con domande esterne. Eseguo esperimenti di psicologia su turk meccanico, quindi ho bisogno di partecipanti unici. Oltre a richiedere che i lavoratori eseguano solo un HIT, io uso uno script python per verificare l'unicità. I miei HIT gestiscono tutti uno script cgi per produrre la domanda. Lo script consulta un file di registro e, se il lavoratore ha precedentemente accettato un lavoro correlato, li informa educatamente che, poiché ho bisogno di partecipanti unici, l'HIT non sarà disponibile.

Ero abituato a farlo con le qualifiche, ma ho riscontrato che la partecipazione era davvero limitata.

+0

I turchi si arrabbiano se accettano un hit e viene quindi detto che non possono prenderlo? – VikR

5

Creare un hit che è in realtà un singolo HIT ma utilizzare javascript per modificare dinamicamente l'HIT ogni volta che viene visualizzato. Quindi, quando pubblichi il set HIT "Numero di assegnazioni per HIT" al numero di partecipanti che desideri. In questo modo otterrai solo partecipanti unici.

A seconda del tipo di HIT che si desidera eseguire, questa è una tecnica che potrebbe funzionare per voi. L'ho usato per randomizzare gli stimoli mostrati ai partecipanti.

1

Giusto per chiarire se si desidera che solo i lavoratori unici completino un singolo hit, tutto ciò che si deve fare è impostare i compiti massimi su un numero qualsiasi di lavoratori unici desiderati e il Mechanical Turk di default assegnerà solo i lavoratori unici a quel colpo .

Ora, se si vuole lavoratori unici tra più colpi, allora si deve avere per ottenere l'immaginazione e utilizzare un domanda esterna accoppiato con uno script che registra ext di id lavoratore ...

1

Se si vuole x utenti unici, fanno il numero di assegnazioni per HIT pari a x nella sezione "Progettazione". Quindi, quando si carica il file csv, inserire solo un HIT nel file.

15

Ho sviluppato uno script che risolve principalmente questo problema. L'idea principale è controllare l'ID lavoratore su un database e nascondere l'HIT se il lavoratore ha già completato un HIT correlato.

In modo che non sia necessario ospitare il proprio server di database, ho reso disponibile il mio script come servizio (gratuito) a: http://uniqueturker.myleott.com. Per favore fatemi sapere se avete qualche problema nell'usare la sceneggiatura, o se avete domande o suggerimenti.

Includo anche lo script qui, nel caso in cui si desideri utilizzarlo con il proprio URL/database. Se segui questa strada, dovrai configurare un'interfaccia web per il tuo DB che accetta un ID lavoratore e restituisce "1" se il lavoratore è autorizzato a lavorare su HIT e "0" in caso contrario. Poi devi semplicemente sostituire "YOUR_URL" di seguito per indicare che l'interfaccia web:

<script type="text/javascript"> 
(function() { 
    var assignmentId = turkGetParam('assignmentId', ''); 
    if (assignmentId != '' && assignmentId != 'ASSIGNMENT_ID_NOT_AVAILABLE') { 
    var workerId = turkGetParam('workerId', ''); 
    var url = 'http://YOUR_URL/?workerId='+workerId; 
    var request = new XMLHttpRequest(); 
    request.open('GET', url, false); 
    request.send(); 
    if (request.responseText != '1') { 
    document.getElementById('mturk_form').style.display = 'none'; 
    document.getElementsByTagName('body')[0].innerHTML = "You have already completed the maximum number of HITs allowed by this requester. Please click 'Return HIT' to avoid any impact on your approval rating."; 
    } 
    } 
})(); 
</script> 
+0

Grazie per aver postato la tua risposta! Si prega di leggere attentamente le [FAQ sulla promozione di sé] (http://stackoverflow.com/faq#promotion) attentamente. –

+1

Grazie Andrew. Ho modificato la mia risposta per includere la sceneggiatura, in modo da sperare di rendere la risposta più generale. –

+0

@MyleOtt, questo è molto utile, ma una domanda sullo script sopra, dove è definita la funzione 'turkGetParam'? Questa è una funzione inclusa in una libreria standard con MTurk o hai scritto la tua? Grazie. –

0

psiTurk (MTurk ricerca comportamentale app) impedisce automaticamente lavoratori da colpi ripetuti utilizzando un approccio simile a @ david-l. Divulgazione: sono uno degli sviluppatori del progetto.

+0

Come per i post nella discussione precedente, ho cercato di utilizzare gli hit esterni per assicurarmi di avere lavoratori unici tra gruppi di HIT diversi. Sembra che quando l'HIT esterno viene visualizzato in anteprima dal lavoratore MTURK, MTURK non invii l'ID utente al server esterno. Come fanno le persone a occuparsi di questo quando mostrano l'anteprima dell'HIT al lavoratore? Vorrei evitare, se possibile, di mostrare loro un HIT, e solo dopo averlo accettato, potenzialmente dicendo loro che non possono accettarlo. Grazie in anticipo a tutti per eventuali pensieri/informazioni. – VikR

+0

potresti chiedere al lavoratore di inviare il loro MTurkID (WorkerID) e collegarlo al link del sondaggio in entrata. Quindi visualizza un ringraziamento per la pagina partecipante se l'ID è già stato visto. – Kwame

Problemi correlati