Skip to content
Isabelle Eysseric edited this page Sep 11, 2024 · 33 revisions

Question / Answer System with Wikipedia Corpus
Expert System with Corpus

Expert System with Corpus


Equipe



Introduction

Mise en situation

Reproduire le système de questions/réponses dans le langage Java du livre Taming Text [01] et de le reproduire en Python.

Comme données, nous avons utilisé un sous-ensemble des données de Wikipédia [02] afin d’avoir un corpus gratuit et non un moteur de recherche qui utilise l’API de Google qui est payante.

Nous avons utilisé l'environnement de développement PyCharm [03] avec la version 3.7 de Python, la librairie Whoosh [04] comme moteur de recherche dans notre corpus et Spacy [05] pour les entités nommées.

Pour le développement du système, nous avons utilisé la méthode du livre Taming Text pour le construire

L’application compte deux phases distinctes, soit celle de l’indexation des documents du corpus ainsi que la phase de recherche dans les documents à l’aide de l’index inversé (voir Figure 1).

Dans le livre Taming Text, leur implémentation de la phase d’indexation consiste à effectuer de la détection de phrases et d’entités nommées, pour ensuite inscrire l’information dans l’index inversé.

Lors des recherches, la question est décortiquée et le type de question est déduite. Une requête est générée et exécuté et une fois les résultats obtenus, ceux-ci sont classés par ordre de pertinence.


Conclusion

Le temps nous manque pour ce projet, mais il serait intéressant d’améliorer quelques détails


Étape 1 – Indexation

Corpus: Prendre le temps d’examiner plus de textes du corpus pour se faire une meilleure idée du type de documents que l’on a pour cibler le genre de questions et déterminer celles qui ne peuvent pas être posé. Le corpus actuel a quelques lacunes sur différents sujets. Il répond bien aux questions sur des films mais moins bien sur celles de sciences par exemple. Essayer différents corpus, sur divers sujets afin d’éviter d’avoir des résultats nuls. Aussi avec un volume d’articles beaucoup plus important, nous aurions plus de chance d’obtenir un résultat positif.

Document: Il faut écrire la liste de documents dans un fichier texte de façon à l‘appeler et non la créer à chaque exécution.

Indexe: Il faudrait également stocker l’index inversé et non le créer à chaque fois, ce qui permettrait de gagner beaucoup de temps car on le perd principalement dans la création de l’index.


Étape 2 – Traitement des questions

Type: La prédiction du type de questions est bonne, je ne ferai pas de changements dessus.

Extraction: Par contre, pour l’extraction, il serait intéressant d’utiliser le pos tagging sur les mots extraits de la requête afin d’affiner les passages et détecter la bonne phrase parmi le passage extrait.


Étape 3 – Recherche de passages textuels

Segmentation: Prendre le temps de jouer avec la taille de la fenêtre pour voir si la réponse finale est plus raffinée.

Priorisation: Je ne changerai pas cette partie car elle est bien automatisée.


Étape 4 – Extraction de réponses

Le système affiche bien la bonne réponse dans le passage par contre, il serait intéressant de raffiner le résultat en éliminant les parties qui ne font pas partie de la réponse. La réponse idéale serait seulement: The current President is Barack Obama.

La boucle doit être améliorée afin de prendre en compte tous les NER des mots clés et non seulement le 1er qui renvoie True.

Il faudrait également mettre un poids sur les mots clés en fonction de leur importance dans la séquence afin d’améliorer la pertinence des résultats.


Étape 5 – Évaluation des réponses

Prendre le temps d’essayer beaucoup de questions diverses et d’examiner les réponses pour s’assurer d’avoir un système beaucoup plus robuste et éviter d’avoir trop de réponses inattendues.



Annexes - Résultats

Exemple d’un document du corpus :

0.txt

Création de la liste de documents...

Création de l'index inversé...

L'index inversé...

Exemple d’exécution du système:


Référence

[01] Livre “Taming Text: How to Find, Organize, and Manipulate It” de Grant S. Ingersoll, Thomas S. Morton et Drew Farris, de 2013, aux éditions Manning. ISBN 9781933988382

[02] Blog ‘’Machine Learning in Action ‘’, l’article ‘’Developing a fast Indexing and Full text Search Engine with Whoosh: A Pure-Python Library’’ écrit par Abhijeet Kumar le 31 juillet 2018 dans la section “Natural Language Processing”.

[03] L'environnement de développement PyCharm

[04] La librairie Whoosh est une bibliothèque de moteur de recherche Python pure et rapide créée par Matt Chaput.

[05] Librairie Spacy pour les entités nommées.

[06] Acétates sur “Watson QA” à la page 22, du cours “CS 124: “From language to information“ de Jurafsky.