1. 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
2. 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
3.
4. 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
6. 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
18. 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
20. 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, …
23. 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
25. 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