Ziel des Projektes ist es, historische Ortsnamen in den Verlustlisten des 1. Weltkrieges zu vereinheitlichen.
Das Python package compgen2
bietet ein Interface, um Namen und Listen von Namen gegen das GOV abzugleichen und mögliche Matches zu identifizieren. Hierbei wird versucht, häufig vorkommende Fehler wie falsche Schreibweisen oder häufige Verhörer zu korrigieren und so ein Match zu ermöglichen.
Das Python package kann mit dem folgenden Befehl installiert werden:
$ pip install -r requirements.txt
Danach steht das compgen2
package bereit zur Nutzung.
Die notwendigen Daten können über den folgenden Link aus der Nextcloud geladen werden.
Der Ordner final_data
enthält die entsprechenden Datenbankauszüge sowie die Verlustliste und die Abkürzungslisten. Den gesamten Ordner als Archiv herunterladen und lokal entpacken. Der Pfad zu diesem Ordner wird als data_root
für die verschiedenen Anwendungen gebraucht.
Die csv-Dateien gov_a_{}.csv
können alternativ per aktuellem Auszug von der Datenbank erstellt werden.
compgen2
bietet für Anwender ein Kommandozeilen-Interface sowie Klassen, die im Code importiert werden können.
compgen2
stellt den gleichnamigen Befehl compgen2
für die Kommandozeile bereit.
Der Aufruf
$ compgen2 -h
zeigt das Interface.
Grundsätzlich werden zwei Modi unterstützt:
-i
: interaktiv. In diesem Modus wird dasGov
nur am Anfang geladen und der Benutzer kann über die Kommandozeile jeweils einen Ortsnamen eingeben und bekommt dann mögliche Treffer angezeigt.-f
: Dateiliste. In diesem Modus liest das Programm alle Namen aus einer TXT Datei ein und speichert das Ergebnis als JSON in eine Datei Namenscompgen2.json
.
Für beide Modi ist die Angabe eines Ordners mit der Gov-Datenbank notwendig. Dies geschieht als Pfadangabe über den Parameter -d
.
Das Python package compgen2
kann mittels import compgen2
Anweisung geladen werden.
Es stehen im Wesentlichen die Klassen Gov
, Matcher
und Preprocessing
bereit, sowie einige Hilfsmethoden.
Die genaue Verwendung dieser Klassen zeigen die showcase notebooks.
Die grundlegende Verwendung des Matching-Algorithmus sieht wie folgt aus:
from compgen2 import Gov, Matcher
data_root = "data"
gov = Gov(data_root)
matcher = Matcher(gov)
matcher.get_match_for_locations(["location1", "location2"])
matcher.results
Alle während des Projektes gesammelten Erkenntnisse wurden im GitHub Wiki gesammelt.
Unter anderem findet sich dort auch eine Sammlung von Lücken, Unregelmäßigkeiten und Fehlern im GOV
performance_comparison
: Enthält die Evaluierung unseres Ansatzes auf 3 verschiedenen Test Sets und berechnet die Metrikenshowcase_levenshtein
: Enthält eine Demo für die Anwendung der Levenshtein-Distanz zum Auffinden von Kandidaten für ein Wort aus einer Liste ähnlicher Wörter.showcase_matcher
: Enthält eine Demo für die Anwendung des Matching-Algorithmus zum Auffinden von möglichen Treffern für einen Ortsnamen im GOV.showcase_preprocessing
: Enthält eine Demo für die Anwendung des Preprocessings zum Verbessern der Auffindbarkeit von Ortsnamen im GOV.showcase_gov
: Enthält eine Sammlung von typischen Aufrufen mit der Gov Klasseshowcase_koelner_phonetik
: Enthält eine Einführung in die Kölner Phonetik mitsamt Beispielen ihrer Schwächen und Stärkenshowcase_synthetic
: Enthält Beispiel-Anwendungen der Synthetic Klasse
Für einen aktuellen Abzug aus dem GOV und einer Erklärung der SQL Dateien siehe hier.
Wir verwenden jupytext, um Notebooks in .ipynb
und .py
Format zu synchronisieren.
The code is licensed by CorrelAid e.V. under a MIT License. Please see LICENSE.md for more detailed information.