management des issues github avec neo4j et nlp

Post on 12-Apr-2017

117 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Propulsez un bot Github pour le management

d’issues avec

Neo4j et du Natural Language

ProcessingMeetup Neo4jFR @Prestashop – 19 oct 2016

Christophe Willemsen - @ikwattro

Qui Quoi Où• Christophe Willemsen (Belgique)

• Consultant Neo4j et Elasticsearch chez GraphAware

( World’s #1 Neo4j Consultancy )

• Java / Python / PHP / FR / EN / NL

• Passionné de BigData, Machine Learning

• Github/Twitter : @ikwattro

Aujourd’hui• Synchro API events de Github

• Problème de popularité

• Recommendations avec les données Github

• NLP Basics

• Analyse de l’historique de Pull Requests

• Demo avec une Issue

API Events Github• PullRequestEvent

• IssuesEvent

• ForkEvent

• IssueCommentEvent

• PushEvent

• CommitCommentEvent, CreateEvent, FollowEvent, WatchEvent,

GistEvent, DownloadEvent, DeleteEvent, PublicEvent,…

API Events Github• 65k events / heure

• 1.9 millions d’utilisateurs actifs / jour

• 1.6 millions de repos modifiés par jour

• 340 000 milliars de lignes de code en 219 langages différents

API Events Github

Popularité !

Popularité !

Un sérieux problème, voir même un problème sérieux.

Popularité !

Identification de la popularité sur Github

Popularité !

FOLLOWS / STARS

Problème de popularité• Métrique trop vaste

• Génère trop de recommendations

• Recommendations irrélévantes

Popularité !

FAMOUS !!!

Quelle métrique ?

Qu’est-ce qui circule dans les veines de Github ?

CONTRIBUTIONS

Contributions• Neo4j vous permet d’inférer les relations entre les entités

• Ces relations implicites sont parfois beaucoup plus rélévantes que

les relations explicites comme FOLLOWS / STARS

• Si vous avez du mal avec les relations explicites, essayez

d’inférer les relations

NLP Basics

NLP Basics• Sous-type de Machine Learning

• Opérations sur du texte, comme :

• Segmentation de phrases

• Part Of Speech Tagging, Parsing, Named Entity Extraction,

Tokenization, Lemmification, Topic Extraction, …

Un bot

Utilise deux heuristiques• Si une ligne a été modifiée ou supprimée, la dernière personne

ayant modifié cette ligne doit être notifiée

• Si une personne a modifié plusieurs autres lignes dans ce fichier,

elle aimerait être notifiée

Issue Bot

Processus• On effectue les opérations NLP sur les textes des Pull Requests

afin d’en extraire les tags, on crée également des tags en fonction

de la structure camelCased des noms de fichiers

• On applique un score de fréquence et importance sur ces tags

• On applique un score de fréquence de contribution sur les users

• On crée un nouvelle issue, on effectue les opérations NLP

• Content Based recommendation combiné avec les scores de

fréquence

https://github.com/graphaware/

issuebot_nlp_meetup

Merci !

Questions?

graphaware.com

@graph_aware

@ikwattro

top related