- Version 1 - Page rank : LIEN
- Version 2 - Page rank + Collector : LIEN
- Version 3 - Page rank + Collector + Seach : LIEN
Requière Python 3
Pour installer les dépendances :
pip3 install -r requirements.txt
Lancer le programme avec :
python3 run.py [options]
python3 run.py pagerank [options]
-h, --help show this help message and exit
-g FILE, --graph=FILE
FILE that contains a graph
-v, --verbose verbose mode
-e EPSILON, --epsilon=EPSILON
page rank epsilon [default: 0.0001]
-z ZAP, --zap=ZAP zap factor [default: 0.0]
-o FILE, --output=FILE
FILE to store the page rank vector [default: stdout]
-s, --step print number of step
-a STARTER, --starter=STARTER
starter vertex for the page rank vector: index of the
vertex or 'all' for all vertices [default: all]
python3 run.py pagerank -s -g graph.txt -e 0.01 -z 0.15 -o page_score.txt
Le fichier contenant le dictionnaire français se situe : data/dictionary.fr.csv
LIEN
Vous pouvez regarder comment a été généré le dictionnaire avec ce Jupyter Notebook generate_dictionary.ipynb
(visible sur GitHub)
LIEN
Le collector crée trois fichiers :
pageID_to_title.txt
: relation pageID -> page titlepage_links.txt
: relation pageID -> links page idwords_appearance.txt
: relation word id -> list(pageID)
Pour controler la taille du words_appearance.csv
généré, il ne garde que les N pageID pour chaque mot du dictionnaire
qui ont la plus grande fréquence d'apparition dans la page (N vaut 10 par défaut, mais il peut être changé via l'option
-p N
).
Chaque mot contenu dans le titre des pages ajoute 1.0 à la fréquence d'apparition de ce mot dans la page. Ainsi, lors d'une recherche, les pages avec les mots recherchés auront plus de chance de ressortir dans les résultats.
Le programme affiche la progression du collector avec une estimation (peu précise) du temps restant. Pour celà, le
programme commence par compter le nombre de ligne du fichier XML contenant l'archive wikipedia. Cette étape pouvant
être évitée avec l'option -l N
en précisant le nombre de ligne du fichier.
python3 run.py collector [options]
-h, --help show this help message and exit
-w FILE, --wiki=FILE FILE that contains a wiki dump
-o FILE, --output-dir=FILE
FILE output directory where to store collected data
-d FILE, --dictionary=FILE
FILE words dictionary in csv
-i VALUE, --print-interval=VALUE
print progress each VALUE lines [default: 100000]
-l LINES, --line-count=LINES
specify the number of lines in the wiki file, it avoids
the programm to look for it
-p NUMBER, --pages-per-word=NUMBER
NUMBER of pages per word to save [default: 10]
python3 run.py collector -w wikifr.xml -o result_dir -d dictionary.csv -p 25
Quelques fichiers de test généré à partir de 'frwiki-20151226-pages-articles.xml'
Une fois le programme lancé, ont peut réaliser autant de recherche souhaitée. Chaque résultat est affiché et stocké dans un fichier nommé selon la requête.
Les résultats sont classé par pertinence. Le premier étant le plus pertinent et le dernier le moins pertinent (selon le pagerank).
Le programme search charge les fichiers : dictionnaire, apparence des mots et page score en mémoire. Le fichier de relation [pageID -> titre] est simplement lut une fois par recherche afin de traduire les pageID en titre.
Le nombre de résultat étant conditionné par le nombre de pageID par mot dans le fichier d'apparence des mots généré lors
du collector. Ainsi, en modifiant la valeur par défaut (10) avec l'option -p N
du collector, on obtiendra un nombre N
de résultat au maximum.
python3 run.py search [options]
-h, --help show this help message and exit
-d FILE, --dictionary=FILE
FILE words dictionary in csv
-w FILE, --words-appearance=FILE
FILE words appearance in page filename
-p FILE, --pagescore=FILE
FILE pagescore filename
-i FILE, --id-to-page=FILE
FILE id-to-page filename
-v, --verbose verbose mode
python3 run.py search -d dictionary.csv -w words_appearance.txt -p pagescore.txt -i pageID_to_title.txt
Le module all
réalise le collector, le page rank et lance la recherche en une seule commande.
python3 run.py all [options]
-h, --help show this help message and exit
-d FILE, --dictionary=FILE
FILE words dictionary in csv [default:
data/dictionary.fr.csv]
-w FILE, --wiki=FILE FILE that contains a wiki dump
-o FILE, --output-dir=FILE
FILE output directory where to store collected data
-i VALUE, --print-interval=VALUE
print progress each VALUE lines [default: 100000]
-l LINES, --line-count=LINES
specify the number of lines in the wiki file, it
avoids the programm to look for it
-p NUMBER, --pages-per-word=NUMBER
NUMBER of pages per word to save [default: 10]
-v, --verbose verbose mode
-e EPSILON, --epsilon=EPSILON
page rank epsilon [default: 0.0001]
-z ZAP, --zap=ZAP zap factor [default: 0.0]
-s, --step print number of step
-a STARTER, --starter=STARTER
starter vertex for the page rank vector: index of the
vertex or 'all' for all vertices [default: all]
python3 run.py all \
-w data/test0/frwiki-tst-1.xml \
-o data/test0 \
-z 0.15 \
-e 0.01 \
-s