management des issues github avec neo4j et nlp

30
Propulsez un bot Github pour le management d’issues avec Neo4j et du Natural Language Processing Meetup Neo4jFR @Prestashop – 19 oct 2016 Christophe Willemsen - @ikwattro

Upload: christophe-willemsen

Post on 12-Apr-2017

117 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Management des issues Github avec Neo4j et NLP

Propulsez un bot Github pour le management

d’issues avec

Neo4j et du Natural Language

ProcessingMeetup Neo4jFR @Prestashop – 19 oct 2016

Christophe Willemsen - @ikwattro

Page 2: Management des issues Github avec Neo4j et NLP

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

Page 3: Management des issues Github avec Neo4j et NLP
Page 4: Management des issues Github avec Neo4j et NLP

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

Page 5: Management des issues Github avec Neo4j et NLP

API Events Github• PullRequestEvent

• IssuesEvent

• ForkEvent

• IssueCommentEvent

• PushEvent

• CommitCommentEvent, CreateEvent, FollowEvent, WatchEvent,

GistEvent, DownloadEvent, DeleteEvent, PublicEvent,…

Page 6: Management des issues Github avec Neo4j et NLP

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

Page 7: Management des issues Github avec Neo4j et NLP

API Events Github

Page 8: Management des issues Github avec Neo4j et NLP
Page 9: Management des issues Github avec Neo4j et NLP

Popularité !

Page 10: Management des issues Github avec Neo4j et NLP

Popularité !

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

Page 11: Management des issues Github avec Neo4j et NLP

Popularité !

Identification de la popularité sur Github

Page 12: Management des issues Github avec Neo4j et NLP

Popularité !

FOLLOWS / STARS

Page 13: Management des issues Github avec Neo4j et NLP
Page 14: Management des issues Github avec Neo4j et NLP

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

• Génère trop de recommendations

• Recommendations irrélévantes

Page 15: Management des issues Github avec Neo4j et NLP

Popularité !

FAMOUS !!!

Page 16: Management des issues Github avec Neo4j et NLP

Quelle métrique ?

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

Page 17: Management des issues Github avec Neo4j et NLP

CONTRIBUTIONS

Page 18: Management des issues Github avec Neo4j et NLP

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

Page 19: Management des issues Github avec Neo4j et NLP

NLP Basics

Page 20: Management des issues Github avec Neo4j et NLP

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, …

Page 21: Management des issues Github avec Neo4j et NLP

Un bot

Page 22: Management des issues Github avec Neo4j et NLP
Page 23: Management des issues Github avec Neo4j et NLP

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

Page 24: Management des issues Github avec Neo4j et NLP

Issue Bot

Page 25: Management des issues Github avec Neo4j et NLP

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

Page 26: Management des issues Github avec Neo4j et NLP
Page 27: Management des issues Github avec Neo4j et NLP
Page 28: Management des issues Github avec Neo4j et NLP
Page 29: Management des issues Github avec Neo4j et NLP

https://github.com/graphaware/

issuebot_nlp_meetup

Page 30: Management des issues Github avec Neo4j et NLP

Merci !

Questions?

graphaware.com

@graph_aware

@ikwattro