# 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. ## Vorbereiten der Umgebung Die Vektoren werden in `wittsim_data` vorberechnet und anschließend dort in `export-data` gespeichert. ### 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 ``` ### Tree-Tagger Dann muss der Tree-Tagger und die Python-Module installiert werden: ``` make install-python-modules install-tree-tagger ``` ### MongoDB - Zusätzlich muss die MongoDB installiert sein, mit Germanet Daten befüllt sein und laufen: - Install MongoDB - [For Ubuntu](https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/) - [Other versions: MacOSX High Sierra](https://treehouse.github.io/installation-guides/mac/mongo-mac.html) - 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](https://pypi.org/project/pygermanet/) - 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') ``` ## Vorberechnen der Vektoren und Trainieren des KNN Modells - Nun kann das Binary-File der Vektoren berechnet werden. Dafür kann im Verzeichnis `wittsim_data` einfach ``` make 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 ``` ## Starten der KNN Suche - Überprüfen der Richtigen Pfade in `wittsim/html_button/knn_search.py` und in `wittsim/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` oder - Der Flask Server wird aufgerufen mit ``` make server-run ``` ## Frontend Verknüpfung der KNN Suche Die bisherige Dokumentation der Einbindung in das Frontend von WiTTFind ist [hier](https://gitlab.cis.uni-muenchen.de/wast/wast-master-2019/blob/knn_integration/S_nlp/protocols/knn_integration_protocol.md) beschrieben.