3.9.3. K-Nearest Neighbour Suche (KNN)¶
Die K-Nearest Neighbour Suche erhät ein Siglum als Input und gibt eine Liste der ähnlichsten Bemerkungen (bzw. deren Siglen) zurück.
3.9.3.1. Vorbereiten der Umgebung¶
Die Vektoren werden in wittsim_data
vorberechnet und anschließend dort in export-data
gespeichert.
3.9.3.1.1. Cluster Modelle¶
Zunächst müssen die Cluster Modelle kopiert werden. Diese liegen im $(HOME) auf CAST2. Dazu in den Ordner deployment
wechseln, dann die Modelle kopieren mit:
make install_cluster_models
3.9.3.1.2. Tree-Tagger¶
Dann muss der Tree-Tagger und die Python-Module installiert werden:
make install-python-modules install-tree-tagger
3.9.3.1.3. MongoDB¶
Zusätzlich muss die MongoDB installiert sein, mit Germanet Daten befüllt sein und laufen:
Install MongoDB
Importiere GermaNet in die MongoDB
Eine Kopie von Germanet ist verfügbar unter dem korpus Ordner, welche im LRZ Sync and Share geteilt werden kann (Kontakt: Max Hadersbeck) Import XML to MongoDB
Starte MongoDB
mkdir mongodb mongod --dbpath ./mongodb &
Entpacke die Germanet Dateien und lade sie in die MongoDB (das kann eine ganze Weile dauern)
python -m pygermanet.mongo_import ./GN_V120/GN_V120_XML/
Überprüfe das Setup der MongoDB + Germanet:
from pygermanet import load_germanet gn = load_germanet() gn.synsets('gehen')
3.9.3.2. Vorberechnen der Vektoren und Trainieren des KNN Modells¶
Nun kann das Binary-File der Vektoren berechnet werden. Dafür kann im Verzeichnis
wittsim_data
einfachmake generate
aufgerufen werden, welches sowohl die Megavektoren berechnet, das KNN Modell trainiert, sowie im Anschluss unnötige Files löscht.
Sollten nicht alle Aufrufe (z.B. kein Trainieren des KNN Modells) gewünscht sein, können entsprechende Einzelaufrufe gestartet werden (siehe
Makefile
):make vectors make knn make clean_json
3.9.3.3. Starten der KNN Suche¶
Überprüfen der Richtigen Pfade in
wittsim/html_button/knn_search.py
und inwittsim/config.py
. Diese müssen auf die richtige Vektor Datei, sowie das vortrainierte KNN Modell verweisen.Das Modell kann entweder manuell gestartet werden über
knn_search.py
oderDer Flask Server wird aufgerufen mit
make server-run