Git Product home page Git Product logo

suasor's Introduction

Suasor -- Likeable-person recommender

Suasor is meant for everyone that wants to find new people or just experiment around with machine learning. Originally meant as a project for Data Science class, but Suasor is going to be available 24/7 when developing is finished and all tiny bits of security are taken care of.

Idea

Idea behind Suasor, mainly it's core -- praedicto --, is for user to decide on some training set of people whether he/she likes that person or not (by appearance, interests, origin, whatever, the praedicto will find out what you prefer). After the manual grading is done, Suasor now trains itself based on your input and input from others whether you like the rest of people in database or not and now it is up to you to decide if you really like the person or not but the idea is to get as close to getting it correct as possible.

How it works?

Suasor consists of two parts:

  • strigili aka scrapper. This is a Python module that given a search root scraps Facebook, going from the given root to root's top 20 friends, to their friends, etc. It scraps various data about users and builds a database, that is just growing by each run with different root.
  • praedicto aka predictor. Written in R (and Python), takes care about all machine learning stuff, from selecting training set for particular user to deciding which people to recommend. Convolutional neural networks is the main thing.

Taking care for communication between user and server is Django, the best web framework.

Setup notes

If you want to somehow experiment with the code, first read LICENSE.


Requirements Linux (might need to change application manager in rex.sh).


First, clone the repository.

git clone https://github.com/campovski/suasor

Now navigate to directory with Suasor and run the dependency manager. You will be asked for your administrator password, because some things need to be installed and some permissions given.

cd suasor
sudo bash praeparo/rex.sh

After the script is done, you have a fully functional Suasor distribution, with your own database. Now, you need to activate virtual environment by

source venv/bin/activate

and now navigate into suasor directory

cd suasor

This is the core of the program, fire up server by executing

python manage.py runserver

Note: change suasor/local_settings.py file with proper settings.

suasor's People

Contributors

campovski avatar

Watchers

James Cloos avatar  avatar

suasor's Issues

Scrap bigger pictures for display

Now Suasor only has small images which it uses for backend stuff. We also need bigger pictures for display (when user trains the algo and when he is suggested new people).

Scrap details of picture

Add details of contents of picture into strigili and in database. This will be used to determine whether a picture is useful or not.

Scrap images as you go

Scrap images for each user separately, instead of scraping them all at the end. This way if we KeyboardInterrupt during scraping, the images for user whose data we have, will still be saved.

Mark whether profile picture for some user has been loaded or not

Currently, when ConnectionError fires, it usually fires when we are trying to download images. Mark in database, whether profile picture of a user has been saved, so we know whether we need to download it or not.

Alternatively, maybe rescrap all data for that user...

UI support for training

Design simple UI that shows data of person and allows user to select whether he likes that person or not.

Password hashing system

Take care that passwords get hashed. This is not urgent because it is only necessary for when Suasor goes live.

Mark people that have useless pictures

Add column in database noting whether a person has useless picture, meaning it is not a person, it is multiple people, etc. These people will be excluded from search, but must still stay in database.

Allow user to save rating session and continue another time

If user wants to save session while he is rating, save current grades.
Ask user if he wants to continue or start new session (if he has some grades saved in database. If he has completed grading, notify him of that and ask only if he wants to start new one).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.