« SPARQLBot » : différence entre les versions

De Wikipast
Aller à la navigation Aller à la recherche
(Wikipastbot update)
(Annulation des modifications 37667 de Orthobot (discussion))
 
Ligne 1 : Ligne 1 :


== Résumés des <span style="color:red">fonctionnalités</span> (correction(s): <span style="color:green">fonctionnalité
== Résumés des fonctionnalités ==
</span>) ==
Ce bot utilise la base de donnée SPARQL des archives du Temps pour générer automatiquement des pages en suivant un certain squelette. Ces pages serviront de base pour être complétée par un humain pour lequel le travail de recherche d'article aura déjà été fait.
Ce bot utilise la base de donnée SPARQL des archives du Temps pour générer automatiquement des pages en suivant un certain squelette. Ces pages serviront de base pour être complétée par un humain pour lequel le travail de recherche d'article aura déjà été fait.


== Description technique ==
== Description technique ==
Le bot effectue une requête sur le <span style="color:red">endpoint</span> (correction(s): <span style="color:green">
Le bot effectue une requête sur le endpoint SPARQL qui permet d'obtenir un grande de nombre de mention d'individu ainsi que des informations sur cette personne:
</span>) SPARQL qui permet d'obtenir un grande de nombre de mention d'individu ainsi que des informations sur cette personne:
* Son nom
* Son nom
* Sa fonction
* Sa fonction
Ligne 35 : Ligne 33 :
D'un autre côté, la véracité des informations trouvées doit également être vérifiée.  
D'un autre côté, la véracité des informations trouvées doit également être vérifiée.  


Nous trouvons, pour les références de [[Louis Blondel]], que toutes <span style="color:red">référencent</span> (correction(s): <span style="color:green">
Nous trouvons, pour les références de [[Louis Blondel]], que toutes référencent effectivement une personne appelée [[Louis Blondel]] (et vraisemblablement la même personne), ce qui peut s'expliquer facilement par le fait que ce n'est pas un patronyme très courant. Si nous avions recherché quelqu'un appelé [[Pierre Favre]] (nous n'avons pas de statistiques exactes, mais nous avons parcouru quelques résultats, et beaucoup d'entre eux diffèrent), nous aurions sûrement eu beaucoup plus de confusions.
</span>) effectivement une personne appelée [[Louis Blondel]] (et vraisemblablement la même personne), ce qui peut s'expliquer facilement par le fait que ce n'est pas un patronyme très courant. Si nous avions recherché quelqu'un appelé [[Pierre Favre]] (nous n'avons pas de statistiques exactes, mais nous avons parcouru quelques résultats, et beaucoup d'entre eux diffèrent), nous aurions sûrement eu beaucoup plus de confusions.


Nous avons également recherché la fonction, et nous avons seulement 3 erreurs sur 111. Ces erreurs proviennent de tournures de phrases qui placent la fonction avant le nom de [[Louis Blondel]], et cela fausse la recherche. Nous pouvons cependant critiquer les fonctions reconnues de manière précise par <span style="color:red">sparql</span> (correction(s): <span style="color:green">
Nous avons également recherché la fonction, et nous avons seulement 3 erreurs sur 111. Ces erreurs proviennent de tournures de phrases qui placent la fonction avant le nom de [[Louis Blondel]], et cela fausse la recherche. Nous pouvons cependant critiquer les fonctions reconnues de manière précise par sparql, car la majorité d'entre elles sont [[chef]] ou [[président]], ce qui peut correspondre à être [[chef]] de plusieurs organisations différentes, ce qui est notamment le cas de [[Louis Blondel]]. Il a assumé la présidence de plusieurs organismes, et les articles ne se réfèrent pas tous au même organisme.  
</span>), car la majorité d'entre elles sont [[chef]] ou [[président]], ce qui peut correspondre à être [[chef]] de plusieurs organisations différentes, ce qui est notamment le cas de [[Louis Blondel]]. Il a assumé la présidence de plusieurs organismes, et les articles ne se réfèrent pas tous au même organisme.  


Nous avons par exemple ici la liste de fonctions qui sont associées au nom [[Pierre Favre]], déjà discuté plus haut:   
Nous avons par exemple ici la liste de fonctions qui sont associées au nom [[Pierre Favre]], déjà discuté plus haut:   
Ligne 50 : Ligne 46 :
Nous pouvons voir que cela est un nombre de fonctions beaucoup trop élevé pour qu'elles soient toutes endossées lors de la même vie.  
Nous pouvons voir que cela est un nombre de fonctions beaucoup trop élevé pour qu'elles soient toutes endossées lors de la même vie.  


Cela montre bien que pour certains noms plus communs, <span style="color:red">sparqul</span> (correction(s): <span style="color:green">
Cela montre bien que pour certains noms plus communs, sparqul n'a pas la faculté de discernement entre les différentes personnes.  
</span>) n'a pas la faculté de discernement entre les différentes personnes.  


== Post-lecture humaine ==
== Post-lecture humaine ==
Ligne 57 : Ligne 52 :
La principale modification des pages créées, à faire par des mains humaines, est de reformuler, et compléter, les informations fournies par le [[SPARQLBot]]. Les informations sont "triées", et les articles pertinents sont mis en avant. Beaucoup de formatage reste cependant à faire, et la gestion des erreurs de l'aspect humain reste également à faire par des humains.  
La principale modification des pages créées, à faire par des mains humaines, est de reformuler, et compléter, les informations fournies par le [[SPARQLBot]]. Les informations sont "triées", et les articles pertinents sont mis en avant. Beaucoup de formatage reste cependant à faire, et la gestion des erreurs de l'aspect humain reste également à faire par des humains.  


Une autre des tâches de la relecture humaine des pages pourrait être d'aller lire les articles d'où sont tirés les informations, et d'ajouter la localisation à l'entrée dans la page (ce n'est pas une information à laquelle nous avons accès dans le <span style="color:red">endpoint</span> (correction(s): <span style="color:green">
Une autre des tâches de la relecture humaine des pages pourrait être d'aller lire les articles d'où sont tirés les informations, et d'ajouter la localisation à l'entrée dans la page (ce n'est pas une information à laquelle nous avons accès dans le endpoint). Cela pourrait notamment permettre au [[BioPathBot]] d'interagir avec le [[SPARQLBot]].
</span>)). Cela pourrait notamment permettre au [[BioPathBot]] d'interagir avec le [[SPARQLBot]].


== Exemple de résultats ==
== Exemple de résultats ==
Ligne 73 : Ligne 67 :


== Utilisation du bot ==
== Utilisation du bot ==
* Installation des dépendances avec <span style="color:red">pip</span> (correction(s): <span style="color:green">piu, pop, pi, pipo, pipi, pin, zip, più, hip, pif, pipa, bip, kip, pic, pie, pipé, pep, pipe, pis
* Installation des dépendances avec pip: <code> pip install -r requirements </code>
</span>): <code> <span style="color:red">pip</span> (correction(s): <span style="color:green">piu, pop, pi, pipo, pipi, pin, zip, più, hip, pif, pipa, bip, kip, pic, pie, pipé, pep, pipe, pis
* Génération du fichiers persons.json avec sparql pour 1000 personnes: <code> python sparqlutils.py 1000 </code>
</span>) <span style="color:red">install</span> (correction(s): <span style="color:green">installe, installa, installé
* Envoi des personnes sur le wiki: <code> python pageutils.py </code>
</span>) -<span style="color:red">r</span> (correction(s): <span style="color:green">ô, , k, re, ri, q, or, z, v, t, l, é, n, b, o, j, m, ru, s, d, y, a, f, e, à, ré, h, c, x, g, w, u, ra, i
</span>) <span style="color:red">requirements</span> (correction(s): <span style="color:green">
</span>) </code>
* Génération du fichiers <span style="color:red">persons</span> (correction(s): <span style="color:green">persans, perdons, pesons, versons, persos, perçons, perrons, pensons
</span>).<span style="color:red">json</span> (correction(s): <span style="color:green">son
</span>) avec <span style="color:red">sparql</span> (correction(s): <span style="color:green">
</span>) pour 1000 personnes: <code> python <span style="color:red">sparqlutils</span> (correction(s): <span style="color:green">
</span>).py 1000 </code>
* Envoi des personnes sur le <span style="color:red">wiki</span> (correction(s): <span style="color:green">kiki, tiki
</span>): <code> python <span style="color:red">pageutils</span> (correction(s): <span style="color:green">
</span>).<span style="color:red">py</span> (correction(s): <span style="color:green">pu, puy, by, pi, p., psy, y, pa, ph, fy, pc, gy
</span>) </code>

Dernière version du 30 mai 2017 à 09:46

Résumés des fonctionnalités

Ce bot utilise la base de donnée SPARQL des archives du Temps pour générer automatiquement des pages en suivant un certain squelette. Ces pages serviront de base pour être complétée par un humain pour lequel le travail de recherche d'article aura déjà été fait.

Description technique

Le bot effectue une requête sur le endpoint SPARQL qui permet d'obtenir un grande de nombre de mention d'individu ainsi que des informations sur cette personne:

  • Son nom
  • Sa fonction
  • Sa nationalité
  • La date de l'article
  • Le journal de l'article
  • Le lien vers l'article

Le bot effectue deux requêtes. Une première pour obtenir une liste de 100 noms de personnes qui ont été mentionnées, nous avons limité les nationalités à la nationalité suisse afin de rester sur des personnes plus locales. La deuxième requête recherche tous les articles dans lesquels la personne a été mentionnée. Cette liste d'articles est ensuite nettoyée et filtrée pour ne garder que celle qui contiennent suffisamment d'information. Elle sont ensuite triées par date et un squelette de page est créé. Chaque mention sur le squelette suivant:

AAAA.MM.JJ/ -. Mention de PERSONNE en tant que FONCTION dans JOURNAL. SOURCE

Le bot vérifie ensuite que la page cible ne contient pas encore de texte. Et, le cas échéant envoie la modification de la page. Dans le futur, une liste des pages modifiées sera tenu à jour afin pour ne pas en perdre la trace si elles deviennent trop nombreuses.

Évaluation des performances

Aspect technique

Le bot a à la fois l'avantage et l'inconvénient d'utiliser la base de donnée SPARQL telle quelle. Ce qui implique une faible quantité de données accessible pour chaque personne et des temps de réponses assez haut.

Malgré quelques précautions prise pour ôter les potentiels doublons dans les recherches, certaines personnes présentes une fois en 'Marcel Dupond' puis en 'M. Dupond' seront introduites deux fois dans les pages. Il y a aussi des personnes dont nous n'avons pas le prénom. Nous avons donc décidé de ne pas créer des pages pour ces personnes, ainsi que d'enlever tous les prénoms abrégés.

Aussi, la grande quantité de données produit des pages très longues car nous ne pouvons pas juger de la pertinence des Mention des différents individus dans les articles. Principalement parce que cette information n'est pas mesurée dans la BDD et également car nous ne pouvons pas l'extraire, n'ayant pas accès au texte de l'article cité.

Aspect humain

D'un autre côté, la véracité des informations trouvées doit également être vérifiée.

Nous trouvons, pour les références de Louis Blondel, que toutes référencent effectivement une personne appelée Louis Blondel (et vraisemblablement la même personne), ce qui peut s'expliquer facilement par le fait que ce n'est pas un patronyme très courant. Si nous avions recherché quelqu'un appelé Pierre Favre (nous n'avons pas de statistiques exactes, mais nous avons parcouru quelques résultats, et beaucoup d'entre eux diffèrent), nous aurions sûrement eu beaucoup plus de confusions.

Nous avons également recherché la fonction, et nous avons seulement 3 erreurs sur 111. Ces erreurs proviennent de tournures de phrases qui placent la fonction avant le nom de Louis Blondel, et cela fausse la recherche. Nous pouvons cependant critiquer les fonctions reconnues de manière précise par sparql, car la majorité d'entre elles sont chef ou président, ce qui peut correspondre à être chef de plusieurs organisations différentes, ce qui est notamment le cas de Louis Blondel. Il a assumé la présidence de plusieurs organismes, et les articles ne se réfèrent pas tous au même organisme.

Nous avons par exemple ici la liste de fonctions qui sont associées au nom Pierre Favre, déjà discuté plus haut:

"vice-président de l' Alliance", 'roi', 'percussionniste suisse', 'percussionniste', 'notaire', 'historien', 'architecte', 'conservateur', 'directeur M', 'rédacteur', 'vice-président du C', 'vice-président', 'peintre', 'directeur', 'automobiliste', 'employé', 'capitaine', 'publiciste', 'alto', 'gouverneur', 'batteur suisse', 'éditeur', 'batteur', 'greffier', "ancien conseiller d'Etat", 'saxophoniste alto', 'motocycliste', 'chef', 'président de la commission', 'président', 'soliste alto', 'Président', 'vice-président des AGS' .

Nous pouvons voir que cela est un nombre de fonctions beaucoup trop élevé pour qu'elles soient toutes endossées lors de la même vie.

Cela montre bien que pour certains noms plus communs, sparqul n'a pas la faculté de discernement entre les différentes personnes.

Post-lecture humaine

La principale modification des pages créées, à faire par des mains humaines, est de reformuler, et compléter, les informations fournies par le SPARQLBot. Les informations sont "triées", et les articles pertinents sont mis en avant. Beaucoup de formatage reste cependant à faire, et la gestion des erreurs de l'aspect humain reste également à faire par des humains.

Une autre des tâches de la relecture humaine des pages pourrait être d'aller lire les articles d'où sont tirés les informations, et d'ajouter la localisation à l'entrée dans la page (ce n'est pas une information à laquelle nous avons accès dans le endpoint). Cela pourrait notamment permettre au BioPathBot d'interagir avec le SPARQLBot.

Exemple de résultats

Planification du bot

Le bot devrait n'être exécute qu'une seule fois avec un grand nombre de personnes. Toutefois, il pourrait être exécuté en plusieurs fois car il maintient une liste des personnes ayant déjà été ajoutées.

Code

Le code source est disponible sur Github.

Utilisation du bot

  • Installation des dépendances avec pip: pip install -r requirements
  • Génération du fichiers persons.json avec sparql pour 1000 personnes: python sparqlutils.py 1000
  • Envoi des personnes sur le wiki: python pageutils.py