CrowdSearcher
Framework
Alessandro Bozzon, Andrea Mauri, Chiara Pasini,
Luca Tettamanti, Riccardo Volonterio
http://crowdsearcher.search-computing.org
Milan, October 22nd 2012
Copyright: Politecnico di Milano 2012, All Rights Reserved
Introduction
CrowdSearcher
Task
A crowdsourced data manipulation/analysis activity, typically focused on a single action (although several concurrent actions are allowed) performed on coherent set of Objects
Task: Examples
Performer
A human being involved in the execution of a Task
Example
MicroTask
An instance of a Task, operating on a subset of its input objects, and assigned to one or more performers for execution.
Example
Roles
Use Case: Performer
Use Case: Task Creator
Use Case: Crowd Developer
Architecture
CrowdSearcher Architecture
CrowdSearcher Configurator
Task Execution Framework
External Application
Task Configuration
Computation: the process of mapping an input to an output
CrowdSearcher
Input Objects
Output Objects
Task Configuration
Task Design (1)
Task Design (2)
Task Object Design
ID | Image URL | Label |
| | |
| | |
| | |
Operations
Aggregation and Output Objects
ID | URL | # Likes |
| | |
ID | URL |
| |
Operation + Aggregation
Operations: Like
Operations: Comment
Operations: Tag
Operations: Classify
Operations: Add
Operations: Modify
Operations: Order
Splitting and Assignment Strategies
Task Planning in CrowdSearcher
Task Planning
Performer Invitation Strategy
Performer Assignment Strategy
Object Splitting Strategy
[Objects]
[{[Objects],Performers}]
MicroTask Assignment
[{[Objects]}]
MicroTask
NOTE: in the future, custom Task Planning flows will be specifiable
Splitting Strategy
Invitation Strategy
Assignment Strategy
Execution Interface
Constraints and Reactive Behaviour
Evolution of a Crowd Task
Reactive Crowdsourcing
CrowdSearcher
Initial Input Objects
Output Objects
Task Configuration
Input Objects Stream
New Performer
Timer
New Answers
Initialization
RunTime Events
END Objects Stream
Properties of CrowdSearch Objects
Task
Properties of CrowdSearch Objects
Object
Properties of CrowdSearch Objects
Performer
Events (1)
Events (2)
Events (3)
Control Rules
Examples of Control Rules (1)
Web APIs
Introduction
Introduction(2)
Task Manipulation
Task Manipulation(2)
Task Manipulation(3)
MicroTask Manipulation
Answers Management
User management
Stream Management
Task Execution Framework Javascript APIs
Introduction
Initialization
Task Details
getDetails( callback )
Task input objects
getData( field, callback )
getData( function( err, data ) {
// Data will contains all the input objects
})
Task configuration
getConfiguration( name, callback )
getConfiguration( 'category', function( err, data ) {
// data contains the list of the categories
} )
Post MicroTask results
outputData
Java APIs
Introduction
Java API closely matches the Web protocol
Initialization
CrowdSearcher cs = CrowdSearcherFactory.newInstance(
"http://localhost:8080", "/cs_prototype_v2",
"s3cr3t");
Task creation
Task task = new Task(TaskType.LIKE, "http://cs.net",
"Title", "question text", false,
"myschema", schema, inputObjects, null);
cs.addTask(task)
Task Configuration (1)
Splitting strategy: defines how many MicroTasks are created and how input objects are splitted among them
// Split into buckets with at most 10 input objects
PlanningStrategy strategy =
new EquiSplitPlanningStrategy(taskId,10);
cs.postTaskPlanningStrategy(strategy);
Task Configuration (2)
Assignment strategy: defines "who" does "what"
PerformerAssignStrategy assignmentStrategy =
new PerformerAssignStrategy(
taskId, AssignmentType.DYNAMIC_ROUNDROBIN);
cs.postPerformerAssignStrategy(assignmentStrategy)
Task Configuration (3)
Invitation strategy: defines how to "invite" performers to execute e task
final List<SocialNetwork> sn = new ArrayList<SocialNetwork>();
sn.add(SocialNetwork.FACEBOOK);
sn.add(SocialNetwork.TWITTER);
Configuration config = new Configuration(3, null, sn);
final InvitationStrategy invitationStrategy = new
InvitationStrategy(taskId,InvitationName.RANDOM_FRIEND, config);
cs.postInvitationStrategy(invitationStrategy);
Task Configuration (4)
Task Implementation: defines how a MicroTask is executed
TaskImplementation implementation = new
TaskImplementation(taskId,ImplementationType.TEF,
new TaskImplementation.Configuration(
"http://tef.example.net", "tefConfigName"));
cs.postTaskImplementation(implementation);
Evolution of a Task (1)
Control rules: "what" the CS has to do "when" something happens.
ControlStrategy controlStrategy = new
ControlStrategy(taskId, ControlEvent.PERIODIC,
"myControlScript", "@hourly");
cs.postControlRule(controlStrategy);
Evolution of a Task (2)
Emission Strategy: "how" and "when" emit results
final EmissionStrategy es = new EmissionStrategy(
taskId,EmissionStrategyType.PERIODIC,"@hourly",
EmissionFormat.CUSTOM,"myFormatterScript");
cs.postTaskEmissionStrategy(emissionStrategy);
Evolution of a Task (3)
Add a subscription: to receive all the task emissions
String url =
"http://localhost:8085/testerCS/CallbackTest";
Subscriber subscriber = new Subscriber(taskId,url);
cs.subscribeToTask(subscriber);
Evolution of a Task (4)
TaskManupulation tm = new
TaskManupulation(taskId);
cs.publishTask(tm);
Evolution of a Task (5)
Stream management:
List<CrowdObject> objects = new ArrayList<CrowdObject>();
//...populate objects...
cs.addObjectsToTask(task.getId(), objects);
final TaskManupulation taskManipulation = new TaskManupulation(taskId);
cs.sendEof(taskManipulation);
Answer
cs.postAnswer(a)
cs.getAnswer(taskId)
WIP
Simplified Groovy Script APIs
Off-the-shelves Result Aggregations
References