borismus / crowdforge Goto Github PK
View Code? Open in Web Editor NEWDjango framework for crowdsourcing complex tasks using MTurk
Home Page: http://smus.com/crowdforge
Django framework for crowdsourcing complex tasks using MTurk
Home Page: http://smus.com/crowdforge
CrowdForge: Crowdsourcing Complex Work (released for non-commercial use creativecommons.org/licenses/by-nc/3.0/) Getting CrowdForge to run locally: 1. Prerequisites: python, django, boto (tested with python-2.7, django-1.2.5 and boto-1.8d). Known issues with boto-1.9b. - NOTE: There's a bug in boto-1.8d that you need to tweak. Change connection.py:466 to say value = self.connection.get_utf8_value(value) (instead of) value = self.get_utf8_value(value) 2. Download: go to https://github.com/borismus/CrowdForge and get the tarball. 3. Extract: let's say to ~/crowdforge 4. Configure: tweak settings.py - specify AWS keys found at URL: https://aws-portal.amazon.com/gp/aws/developer/account/index.html?ie=UTF8&action=access-key - specify absolute URL to your templates directory 5. Create database: run ./manage.py syncdb, create new account 6. Run server: run ./manage.py runserver 7. Test! 8. Setup cron jobs! Testing CrowdForge 1. Point browser to localhost:8000/admin (or whatever your production server URL is) and login. 2. Add a new Problem instance. Give it a name and these parameters - flow: SimpleFlow, - partition: create article - map: collect a fact - reduce: write a paragraph 3. Run `./manage.py poll` manually, and a HIT should be created (check the MTurk server) - expected output: 4. Do a sample HIT from the new HIT group 5. Run `./manage.py poll` again, and a Result should be created locally (look in db or check http://localhost:8000/turk/problem/YOUR_PROBLEM_ID) - expected output: results retrieved [<Result: Result for "Create an Article Ou... #141KMADQXJEYF9EQWEG9UA7S6J5JEW">] Setting up Cron Jobs 0. Basically, you want to run `./manage.py poll` periodically 1. So just tweak your crontab - `crontab -e` - Create a line that says something like "*/15 * * * * /path/to/manage.py poll >> /path/to/crowdforge.log" Getting CrowdForge deployed on a production server: 1. Get CrowdForge running locally (as per instructions above) 2. Get django and crowdforge running on a public facing server 3. Tweak settings.py: - specify external URL of your server in settings.py - switch from sandbox to production - change the database engine to be mysql or postgresql 4. Resync database 5. Do a test 6. Setup cron jobs Advanced: Make your own Hit Types 1. Open management console (localhost:8000/admin or whatever) 2. Add a new Hit Type. 3. Specify title, description and body. These fields can all be parametrized, depending on your flow. Advanced: Make your own flow 1. Open crowdforge/flows.py 2. Create your own subclass of Flow. See SimpleFlow for an example. 3. Don't forget to register your new flow using register('MyNewFlow', MyNewFlow)
running syncdb creates a database that contains a boris account, and NOT the account name and password specified.
got around this by modifying the fixture file, and manually setting the password in a REPL session.
Hi, I am working now on the survey paper about crowdsourcing tools/platforms supporting execution of complex tasks. I plan to put the TurKit inside.
I have followed the instructions:
2. Add a new Problem instance. Give it a name and these parameters
./manage.py poll
manually, and a HIT should be created (check(crowdforge)Pavels-MacBook-Pro-4:CrowdForge pavelk$ ./manage.py poll
Traceback (most recent call last):
File "./manage.py", line 11, in <module>
execute_manager(settings)
File "/opt/crowdforge/lib/python2.7/site-packages/django/core/management/__init__.py", line 438, in execute_manager
utility.execute()
File "/opt/crowdforge/lib/python2.7/site-packages/django/core/management/__init__.py", line 379, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/opt/crowdforge/lib/python2.7/site-packages/django/core/management/base.py", line 191, in run_from_argv
self.execute(*args, **options.__dict__)
File "/opt/crowdforge/lib/python2.7/site-packages/django/core/management/base.py", line 220, in execute
output = self.handle(*args, **options)
File "/Users/pavelk/Code/Research/CrowdForge/crowdforge/management/commands/poll.py", line 15, in handle
self.post_notifications()
File "/Users/pavelk/Code/Research/CrowdForge/crowdforge/management/commands/poll.py", line 30, in post_notifications
results = fetch_results(hit)
File "/Users/pavelk/Code/Research/CrowdForge/crowdforge/utils.py", line 40, in fetch_results
assignments = conn.get_assignments(hit.hit_id)
File "/opt/crowdforge/lib/python2.7/site-packages/boto/mturk/connection.py", line 417, in get_assignments
[('Assignment', Assignment)])
File "/opt/crowdforge/lib/python2.7/site-packages/boto/mturk/connection.py", line 838, in _process_request
return self._process_response(response, marker_elems)
File "/opt/crowdforge/lib/python2.7/site-packages/boto/mturk/connection.py", line 853, in _process_response
raise MTurkRequestError(response.status, response.reason, body)
boto.mturk.connection.MTurkRequestError: MTurkRequestError: 200 OK
<?xml version="1.0" ?>
<GetAssignmentsForHITResponse>
<OperationRequest>
<RequestId>40e54627-976d-40cf-af0e-3327e1fe520a</RequestId>
</OperationRequest>
<GetAssignmentsForHITResult>
<Request>
<IsValid>False</IsValid>
<Errors>
<Error>
<Code>AWS.MechanicalTurk.HITDoesNotExist</Code>
<Message>Hit ? does not exist. (1417442689721 s)</Message>
<Data>
<Key>HITId</Key>
<Value>?</Value>
</Data>
<Data>
<Key>HITId</Key>
<Value>?</Value>
</Data>
</Error>
</Errors>
</Request>
</GetAssignmentsForHITResult>
</GetAssignmentsForHITResponse>
Initially I used the boto version suggested in the instruction - but then i had https error (i think that version sent requests via http, rather than the current AWS requires to have https only). So I decided to upgrade to the final version of the Boto.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.