MTurk Workshop (CASBS 2019)/Notes

The Worker/Turker side of the market
We don't need to spend a lot of time on this but I know not everybody was able to do works as a worker so I think it might be helpful to share their experience.

In preparation for this workshop I personally:


 * Spent probably 8 minutes painstakingly drawing boxes around palm fruits for $0.90 only to have my work rejected because I took more than 5 minutes to finish the task. I submitted the work and got nothing.
 * Did a bunch of transcription of receipts for 1¢ and 2¢ which was incredibly difficult, painstaking, etc. I mostly failed to get paid. One major challenge is that I did not see/read documentation until it was too late.

Turker Experience
A few things you should know about the MTurk labor market:

 The vast majority of work on MTurk falls into a few categories: image/video/audio transcription or transcriptions; data collection  Quite a lot of the work is now run in connection to AI/ML based systems. Things that a computer cannot accurately do are kicked to a person. The person often ends up training the computer. The vast majority of these HITs are created programmatically with an API.  A substantial amount of work is sketchy. &quot;Write a positive review of X on website B&quot; or &quot;collect phone numbers/emails for business&quot; are often obviously part of spamming or astroturfing operations. These are often typically against the rules but are still incredibly common. There's a ton of extra work associated with finding accepting HITs that Turkers are not paid for. Pay is frequently extremely shitty. Sometimes near zero. This is especially for an inexperienced worker. There is also a 20-25% (minimum 1¢) fees charged by Amazon. Payment can sometimes not come because payees have the options to review and accept/reject work. Things are particularly bad for new workers because the vast majority of tasks (especially better ones) on the labor market require &quot;qualifications.&quot;  The most common is master qualification which is determined by Amazon using a secrete algorithm, can be incredibly difficult to gain. In general, it requires lots of high quality (i.e. approved) work across a range of types of tasks.</li> Inexperienced users have only the dregs of MTurk available to them. The first 1,000 HITs often play very little or (in some cases) nothing.</li></ul> </li> </ul>

The MTurk platform has an enormous bias toward support of the &quot;requestor&quot; side of the labor market. That said, Turkers are organized:


 * TurkerNation
 * Turkopticon (and Turkopticon 2) (Both include browser-based scripts to allow Turkers integrate their interface with the labor market to these third-party services.
 * TurkerView Focused on Payment</li>
 * We Are Dynamo — Mostly shut down. Their wiki still has great stuff including thes guidelines for academic requesters which is essential reading
 * You should know that Turkers will often reach out to requesters to give feedback on jobs.

The requester side of the market
There are two big classes of things Academics use MTurk for:


 * Surveys and/or experiments (turkers as human subjects)
 * Data collection or coding (turkers as research assistants)

Approaches to building these vary.

Anatomy of MTurk request
<ul> Project</li> (Optionally) input data that you want coded, processed, etc.</li> Tasks/HITs come in Batches which are defined as (Input Data CSV * Project/Design Template)</li> Assignments (the number of workers assigned to each HIT). A specific Turker can only do a given HIT/task once.</li>  Groups of tasks — If you republish multiple batches of the same task or different tasks with same name/etc, they show up as the same HIT in the worker interface! Be careful that this will mean that people can do each HIT within each batch/group (i.e., similar to doing a HIT multiple times). </li></ul>

Request workflow

 * 1) Define the properties and design the layout of your Project. (Create a Project)
 * 2) Publish your batch of HITs. (Publishing a Batch)
 * 3) Approve or reject the work done on your HITs. You can download the results, review them offline, and republish rejected HITs. (Managing Batches)
 * 4) View a Worker’s approval rating, award bonuses, assign qualifications, or block Workers from working on your HITs. (Managing Workers)

Creating HITs
There are two ways to do this:


 * 1) Using the Requestor UI
 * 2) Using the API or CLI to do this automatically (especially useful for creating HITs that involve working on a w/ third party website)

Although (2) is powerful, we'll focus entirely on (1) here and on two approaches that an be accomplished within (1): (A) external surveys and material (B) created using Amazon's Crowd HTML Elements.

(A) External surveys
Sending Turkers to a survey on an external website is very popular. The challenge with involving a separate website typically relies on ensuring that the worker you hire/pay on MTurk is the same one who is doing the task on the separate website.

There are two approaches:

<ol style="list-style-type: decimal;"> Ask for AMT WorkerID as part of the form (the only approach that works on Google Forms). You are not allowed to ask for emails, etc.</li>  Ask for a code generated/stored on the survey website that can be input onto MTurk. This can work on Qualtrics or Survey Monkey: https://blog.mturk.com/tutorial-getting-great-survey-results-from-mturk-and-qualtrics-f5366f0bd880 https://blog.mturk.com/tutorial-getting-great-survey-results-from-mturk-and-surveymonkey-f49c2891ca6f </li></ol>

In either case, you can choose merge your data from your survey website and MTurk to verify this information before approving/paying.

(B) Crowd HTML Elements
The best way involves modifying a set of HTML templates on MTurk. Understanding at least some HTML is very helpful for doing this but not necessary.

HTML is not code and you can learn enough to do this in an afternoon from any number of websites:

Here are two options:


 * W3C's HTML Tutorial
 * Mozilla's Introduction to HTML

In many cases, modifications will be extremely minimal:


 * 1) Pick an example from the options on the website that is similar to what you want to do.
 * 2) Modify it so that /incoming/ variables from your input file are marked like ${variable_name} in the HTML. Output variables will be marked in the HTML with name= somewhere.

I'll walk through an example on my own.

NOTE: If your task involves external media (images, sounds, etc), you will need to host these yourself. MTurk does not allow you upload this material. I typically host these on my university web servers. You will need to provide these in a sheet in the form of URLs.

Publishing HITs

 * 1) Publishing a batch will require providing a CSV input file that works like the input to a mail merge. An example version of the CSV will be provided will be provided by the MTurk user interface.
 * 2) Preview the HITS
 * 3) Publish/launch the batch!

Reviewing Workers Work
There's an interface for reviewing work. I'll walk through the example quickly.

In general, you should strongly err on the side of paying everybody. Clean/remove data later.

The damage that can come from not paying someone who did poor work on a HIT is potentially much higher than the small amount one would save for a given HIT.

Ensuring quality/honesty
Approaches will very heavily depending on whether there are objective answers (i.e., Turkers as subjects or RAs)


 * Qualifications (best)
 * "Golden" questions (questions for which you know the answers)
 * Javascript web-bugs and similar to track mouse-movement, time on page, etc (some of this comes built-in)
 * Attention checks (seem to be discouraged?)
 * Assignment of 1 task to many workers (cross check results)
 * Working with third-party labor market intermediaries w/ memory of workers across many HITs.

Tips and tricks

 * By default there's no way to request unique works across batches or different tasks but there are tricks/scripts. Here's one example: https://uniqueturker.myleott.com/
 * Rather than requiting "masters" qualification, make your qualification be a 95% approval rate and 1,000 approved assignments.
 * Test things out in the MTurk Requester Sandbox first: https://requester.mturk.com/developer/sandbox
 * ALWAYS PILOT! One great way to use MTurk is as a setting to pilot other projects!