« EntryMakerBot » : différence entre les versions

De Wikipast
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
 
(16 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
==Description==
==Description==
EntryMakerBot se base sur des archives de texte afin de déterminer quelles informations pourraient être ajoutées à la page wikipast associée à la recherche. En téléchargeant le texte brut depuis les archives, il est possible de déterminer quelles lignes correspondent au personnage recherché, la date de publication du journal, puis d'effectuer un simple triage en fonction de leur pertinence. L'important réside dans le but fixé d'être capable de savoir quel objet sémantique est le plus important.
EntryMakerBot se base sur des archives de texte afin de déterminer quelles informations pourraient être ajoutées à la page wikipast associée à la recherche. En téléchargeant le texte brut depuis les archives, il est possible de déterminer quelles lignes correspondent au personnage recherché ainsi que la date et le lieu leur faisant référence, puis d'effectuer un simple triage en fonction de leur pertinence. L'important réside dans le but fixé d'être capable de savoir quel objet sémantique est le plus important.


Le fonctionnement du bot se divise en 3 étapes: Premièrement, un scrapping d'informations sur le site de référence (wikipédia ou letempsarchives) est effectué. L'algorithme détermine, grâce aux locations du nom de la personne recherchée, les phrases du texte importantes pour la recherche d'informations. Deuxièmement, les phrases passent par un premier test d'importance puis les dix plus importantes sont sélectionnées afin de passer par la troisième étape: Une sélection basée sur le lexique382.
Le fonctionnement du bot se divise en 3 étapes: Premièrement, un scrapping d'informations sur le site de référence (wikipédia) est effectué. L'algorithme détermine, grâce aux locations du nom de la personne recherchée, les phrases du texte importantes pour la recherche d'informations. Deuxièmement, les phrases passent par un premier test d'importance puis les dix plus importantes sont sélectionnées afin de passer par la troisième étape: Une sélection basée sur le lexique382.


== Scrapping d'informations ==
== Scrapping d'informations ==


En utilisant une copie des articles wikipédia ou les archives du temps, il est possible d'itérer sur chaque mot et trouver les locations du nom du personnage recherché. En interpolant sur ces locations, il est ensuite possible de reconnaître l'emplacement de l'article concernant la cible. Si le texte contient du bruit, il est ensuite nettoyé, c'est à dire que les phrases illisibles sont supprimées, ainsi que les objets purement typographiques, afin de rendre le texte plus facile à analyser pour un ordinateur.  
En utilisant un crawler, il est possible de trouver un nombre défini d'articles lié au personnage mais ne contenant pas son nom dans le titre (afin d'obtenir des informations différentes de ce que l'on pourrait trouver simplement en lisant son article wikipédia, dans le but de 'simuler' un journal ne parlant que latéralement de la personne ciblée) et de les placer dans un dossier spécifique. Dans chacun de ces fichier, une itération sur chaque mot est effectuée afin de trouver les locations du nom du personnage recherché. En interpolant sur ces locations, il est ensuite possible de reconnaître l'emplacement de l'article concernant la cible. Si le texte contient du bruit, il est ensuite nettoyé, c'est à dire que les phrases illisibles sont supprimées, ainsi que les objets purement typographiques, afin de rendre le texte plus facile à analyser pour un ordinateur.  


== Test d'importance 1 ==
== Test d'importance 1 ==
Ligne 18 : Ligne 18 :


==Interface==
==Interface==
Le bot possède une interface utilisant la librairie <code>tkinter</code>. Elle permet de choisir le nom à chercher ainsi que le fichier dans lequel chercher. Elle affiche ensuite les informations trouvées, classées par ordre d'importance.
Le bot possède une interface utilisant la librairie <code>tkinter</code>. Elle permet de choisir le nom à chercher ainsi que le fichier dans lequel chercher. Elle affiche ensuite les informations trouvées, classées par ordre d'importance.
== Structure des Informations ==
Une classe <code>evenement</code> est créée pour contenir les événements: elle possède une <code>DATE</code>, un <code>LIEU</code>, une <code>ACTION</code>, qui contient la phrase retenue, ainsi qu'un <code>SCORE</code>, négatif, qui donne une évaluation de la pertinence de la phrase. Ces évenements sont incorporés dans la classe <code>fiche</code> qui contient le nom de la personne que la recherche concerne, ainsi que tous les évenements trouvés qui sont pertinents.
==Exemples==
On montre ici plusieurs exemples qui mettent en avant les points forts ainsi que les faiblesses du bot. Par souci de clarté, on ne montrera pas tous les événements trouvés, seulement ceux reflétant certains aspects du bot.
Pour Albert Einstein, on trouve
<pre>
DATE:
None
LIEU:
None
ACTION:
  === La modélisation d'Albert Einstein (1879-1955) ===  Après avoir énoncé la théorie de la relativité restreinte en 1905, Albert Einstein cherche à la rendre compatible avec la gravitation dont l'effet est supposé se propager à une vitesse infinie dans la théorie de Newton, alors que la vitesse de la lumière est la vitesse maximale pour toute interaction selon la relativité restreinte
RANG:
1
SCORE:
-2.5271685761
</pre>
On remarque une bonne information possédant un score important, mais pas de date ni de lieu, alors que cette première est dans la phrase.
Pour Barack Obama, on a, avec le cinquième meilleur score
<pre>
DATE:
2016
LIEU:
Mexique
ACTION:
Lors d'une visite au Mexique en 2016, il présente ses excuses par ailleurs au nom de son pays pour les propositions racistes du candidat républicain Donald Trump, affirmant qu'il ne représente pas ce que la majorité des Américains pensent
RANG:
5
SCORE:
-1.84924654733
</pre>
qui possède en l'occurrence une date et un lieu correct.
On peut ensuite montrer l'exemple d'Angela Merkel, qui montre que les informations trouvées dépendent de la nature de la source. En effet, les articles trouvés la mentionnent rarement par son nom, ce qui cause des résultats largement faux, comme:
<pre>
DATE:
2005
LIEU:
Allemagne
ACTION:
Ainsi, suivant la déclaration de Franz Müntefering concernant les hedge funds, qualifiés de sauterelles, il essaya, sans succès, imposer à toute l'Union européenne un code unique de régulation de ces fonds
RANG:
0
SCORE:
-2.37568351746
</pre>
==Téléchargement==
Le code du bot peut être téléchargé [https://github.com/EPFL-ENTRYMAKERBOT-SHS/shs-digital à cette adresse.]
== Améliorations possibles ==
* Accélerer l'accès à lexique382, par exemple en indexant les premières lettres.
* Affiner l'attribution des scores, en devisant d'autres approches heuristiques utilisant lexique382.
* Comparer le système actuel de fit (gaussien) avec d'autres systèmes (poissonien, splines) et trouver la meilleure méthode.
* Utiliser letempsarchives.ch plutôt que wikipedia

Dernière version du 21 mai 2018 à 11:36

Description

EntryMakerBot se base sur des archives de texte afin de déterminer quelles informations pourraient être ajoutées à la page wikipast associée à la recherche. En téléchargeant le texte brut depuis les archives, il est possible de déterminer quelles lignes correspondent au personnage recherché ainsi que la date et le lieu leur faisant référence, puis d'effectuer un simple triage en fonction de leur pertinence. L'important réside dans le but fixé d'être capable de savoir quel objet sémantique est le plus important.

Le fonctionnement du bot se divise en 3 étapes: Premièrement, un scrapping d'informations sur le site de référence (wikipédia) est effectué. L'algorithme détermine, grâce aux locations du nom de la personne recherchée, les phrases du texte importantes pour la recherche d'informations. Deuxièmement, les phrases passent par un premier test d'importance puis les dix plus importantes sont sélectionnées afin de passer par la troisième étape: Une sélection basée sur le lexique382.

Scrapping d'informations

En utilisant un crawler, il est possible de trouver un nombre défini d'articles lié au personnage mais ne contenant pas son nom dans le titre (afin d'obtenir des informations différentes de ce que l'on pourrait trouver simplement en lisant son article wikipédia, dans le but de 'simuler' un journal ne parlant que latéralement de la personne ciblée) et de les placer dans un dossier spécifique. Dans chacun de ces fichier, une itération sur chaque mot est effectuée afin de trouver les locations du nom du personnage recherché. En interpolant sur ces locations, il est ensuite possible de reconnaître l'emplacement de l'article concernant la cible. Si le texte contient du bruit, il est ensuite nettoyé, c'est à dire que les phrases illisibles sont supprimées, ainsi que les objets purement typographiques, afin de rendre le texte plus facile à analyser pour un ordinateur.

Test d'importance 1

Le premier test d'importance se fait en utilisant simplement les phrases analysées. Durant ce test, le nombre d'occurrences (le nombre de fois qu'il apparait dans le texte) de chaque mot est compté et avec cela on détermine leur fréquence dans le texte. Si la phrase contient le nom du personnage, on lui attribuera des points (ce qui va la faire monter dans le classement) puis les phrases avant et après celles-ci gagnent des points elles aussi sous forme d'une fonction en inverse d'exponentielle. Grâce à ces informations, il est possible de classer les phrases et de déterminer celles ayant le plus de chances d'avoir des informations importantes.

Test d'importance 2

Le deuxième test prend en input les dix premières phrases dans le classement du premier puis refait un test d'occurence, mais cette fois-ci en utilisant la fréquence reportée sur la table du lexique382. Grâce à cela il est possible d'effectuer un nouveau classement et d'obtenir le résultat final.

Interface

Le bot possède une interface utilisant la librairie tkinter. Elle permet de choisir le nom à chercher ainsi que le fichier dans lequel chercher. Elle affiche ensuite les informations trouvées, classées par ordre d'importance.

Structure des Informations

Une classe evenement est créée pour contenir les événements: elle possède une DATE, un LIEU, une ACTION, qui contient la phrase retenue, ainsi qu'un SCORE, négatif, qui donne une évaluation de la pertinence de la phrase. Ces évenements sont incorporés dans la classe fiche qui contient le nom de la personne que la recherche concerne, ainsi que tous les évenements trouvés qui sont pertinents.

Exemples

On montre ici plusieurs exemples qui mettent en avant les points forts ainsi que les faiblesses du bot. Par souci de clarté, on ne montrera pas tous les événements trouvés, seulement ceux reflétant certains aspects du bot. Pour Albert Einstein, on trouve

DATE:
None
LIEU:
None
ACTION:
   === La modélisation d'Albert Einstein (1879-1955) ===  Après avoir énoncé la théorie de la relativité restreinte en 1905, Albert Einstein cherche à la rendre compatible avec la gravitation dont l'effet est supposé se propager à une vitesse infinie dans la théorie de Newton, alors que la vitesse de la lumière est la vitesse maximale pour toute interaction selon la relativité restreinte
RANG:
1
SCORE:
-2.5271685761

On remarque une bonne information possédant un score important, mais pas de date ni de lieu, alors que cette première est dans la phrase. Pour Barack Obama, on a, avec le cinquième meilleur score

DATE:
2016
LIEU:
Mexique
ACTION:
 Lors d'une visite au Mexique en 2016, il présente ses excuses par ailleurs au nom de son pays pour les propositions racistes du candidat républicain Donald Trump, affirmant qu'il ne représente pas ce que la majorité des Américains pensent
RANG:
5
SCORE:
-1.84924654733

qui possède en l'occurrence une date et un lieu correct. On peut ensuite montrer l'exemple d'Angela Merkel, qui montre que les informations trouvées dépendent de la nature de la source. En effet, les articles trouvés la mentionnent rarement par son nom, ce qui cause des résultats largement faux, comme:

DATE:
2005
LIEU:
Allemagne
ACTION:
 Ainsi, suivant la déclaration de Franz Müntefering concernant les hedge funds, qualifiés de sauterelles, il essaya, sans succès, imposer à toute l'Union européenne un code unique de régulation de ces fonds
RANG:
0
SCORE:
-2.37568351746

Téléchargement

Le code du bot peut être téléchargé à cette adresse.

Améliorations possibles

  • Accélerer l'accès à lexique382, par exemple en indexant les premières lettres.
  • Affiner l'attribution des scores, en devisant d'autres approches heuristiques utilisant lexique382.
  • Comparer le système actuel de fit (gaussien) avec d'autres systèmes (poissonien, splines) et trouver la meilleure méthode.
  • Utiliser letempsarchives.ch plutôt que wikipedia