-
Notifications
You must be signed in to change notification settings - Fork 0
Etape 1 Indexation
Question-Answering (GitHub)
• Question-Answering (Wiki)
isabelleysseric (GitHub)
• isabelleysseric.com (Portfolio)
• isabelle-eysseric (LinkedIn)
Co-équipiers: Isabelle Eysseric, Nicolas Garde et David Poisson
( Voir fichier recherche_infos.py et annexe - Résultats )
Nous avons opté pour l’approche avec un corpus de texte, plus précisément le corpus de Wikipédia. Ce corpus est disponible gratuitement sur internet.
Ce corpus contient 70 000 articles de Wikipédia sous format texte. Nous utilisons la librairie Whoosh pour créer l’index inversé à partir de ce corpus.
Corpus:
0.txt
1.txt
2.txt
3.txt
Pour se faire, nous avons besoin d’organiser le corpus sous forme de liste de documents afin de faciliter l’indexation et de la stocker pour éviter de la reproduire à chaque exécution. Le fichier de cette liste se nomme list_docs.txt et se trouve dans le dossier principal. Chaque document est enregistré dans la forme:
{"title": … , "content": … , "path": … }
Ensuite, nous définissons un schéma pour ranger nos documents dans l’index inversé en passant le contenu des documents à l’analyseur de type stemming.
stem = StemmingAnalyzer()
schema = Schema(
title = TEXT(stored=True),
content = TEXT(analyzer=stem, stored=True),
path = ID(unique=True, stored=True)
)
Puis une boucle nous permet d’indexer tous les documents du corpus selon le schéma définit plus tôt.
for doc in list_docs:
writer.add_document( title = doc["title"],
content = doc["content"],
path = doc["path"]
)
Et pour finir, en visualisant quelques lignes de l’index inversé, on a constaté que 2 documents, le 7678.txt
et le 29468.txt
, étaient soient l’alphabet en majuscule en 12 répétitions, soit des combinaisons de lettres alphabétiques d’au plus 3 lettres. On a pris la décision de les supprimer du corpus afin d’améliorer nos résultats lors des recherches.
7678.txt : a b c … aa ab ac … aaa aab aac … azx azy az
29468.txt: N A A B C … X Y Z A B C ... noinclude