README
sjw.js
A tool for automatically finding abusive and problematic users on Twitter.com
inspo
Originally an experiment to use facial recognition to find white people saying the "n word", the goal is to expand the amount of recognizable social contexts and document them. By using a primative keyword matching system a large net is cast over Twitter streams that can then be fed into smarter algorithms and reveal mystic truths.
process
- Tweet with trigger words detected
- Facial recognition run on avatar
- If face detected, check for offending traits & context
- If problematic, take an automated screenshot + store tweet object in database
- Curate tweets manually or run ML suite against database
- Tweet the best screenshots & findings at @sjw.js
usage
set a config object that looks like so:
{
// mashape key to use face detection API
"mashape_key": "XXX",
// these are the rules for problematic tweets
"triggers": [
{
// identifier for trigger
"label": "trigger label",
// trigger words
"keywords": [
"twitter",
"search",
"terms",
"here"
],
// problematic offendor traits
"problematics": [
"Male",
"White"
]
}
],
"accounts": [
{
"fullname": "XXXX",
"creds": {
"consumer_key": "XXX",
"consumer_secret": "XXX",
"access_token_key": "XXX",
"access_token_secret": "XXX"
}
}
]
}
If you would like to write to a file, include a "logfile" key with the full system path name like so:
var path = require('path');
config.logfile = path.resolve(__dirname, '../my/output/file/data.json');
Once configuration is set, instantiate a warrior like so:
var Warrior = require('sjw').Warrior;
var config = require('../config');
config.logfile = path.resolve(__dirname, '../data/dump.json');
function warriorCallback(results) {
console.log('FOUND A PROBLEM WITHIN ', results.tweet, ' FROM ', results.source);
}
var sjWarrior = new Warrior(config, warriorCallback);
sjWarrior.startStream();
TODO:
restructure to leverage supreme-streamwrite as a requireable node module- turn into class that emits events
- create
triggers
api for social rulesets - pretty up the console output some more
allow more output customization- incorporate NLP where it makes sense