Die Idee, einen Bayes-Filter
für Geocaches zu schreiben, ist mir bei einer Diskussion
im Geoclub gekommen.
Das Problem ist doch folgendes: Im Umkreis von
nur einigen Kilometern haben selbst erfahrene
Geocacher tausende von ungefundenen Caches liegen.
Darunter können wahre Perlen absolut untergehen,
ohne dass man jemals auf sie aufmerksam wird.
Mein Bayes-Filter kann
nun eine GPX-Datei einer sogenannten Bayes-Analyse
unterziehen. Das ist letztendlich dasselbe
Verfahren, was E-Mail-Programme wie z.B.
Thunderbird für Spam-Erkennung benutzen! D.h. der
Filter wird mit zwei weiteren GPX-Dateien mit
Caches, die man - nach den persönlichen Maßstäben
- für besonders gut bzw. besonders schlecht hält,
"trainiert" und kann mit dieser Information eine
GPX-Datei mit ungefundenen Caches analysieren. Das
Ergebnis der Analyse ist dann die vierte
GPX-Datei, die Caches enthält, von denen der
Filter meint, dass man sie eigentlich gut finden
müsste.
Der Filter ist ein Perl-Script. Dies bedeutet
erstens, dass man es von der Kommandozeile
aufrufen muss, zweitens, dass man - besonders
unter Windows - zunächst einen sogenannten
Perl-Interpreter installieren muss. Daher werde
ich im folgenden eine kleine Anleitung zur
Installation und zum Aufruf veröffentlichen.
Installation
Der Filter selbst kann von hier
als ZIP-Datei geladen werden. Einfach auf ein
beliebiges Verzeichnis herunterladen und mit einem
beliebigen ZIP-Programm auspacken.
Zur Ausführung ist ein Perl-Interpreter vonnöten.
Unter Linux sollte dieser in der Regel installiert
sein, unter Windows sollte Strawberry
Perl als PortableZIP (im Zweifelsfalle die
32-Bit-Version) verwendet werden. Auch hier lädt
man eine ZIP-Datei, die man am besten auf dasselbe
Verzeichnis wie den Filter ablegen sollte und
ebenfalls mit einem ZIP-Programm auspacken kann.
Jetzt kommt der schwierigste Schritt: Unter Perl
müssen noch zwei sogenannte Perl-Module
nachinstalliert werden, und zwar XML::DOM und
Algorithm::NaiveBayes . Dies macht man mit dem
Kommando "cpan". Dies kann unter Linux direkt in
einer root-Shell eingegeben werden, unter Windows
klickt man in dem Verzeichnis, auf das man
Strawberry Perl installiert hat, auf die Datei
portableshell.bat . Daraufhin öffnet sich eine
spezielle "Eingabeeinforderung", in der man "cpan"
aufrufen kann - einfach als cpan ohne
Anführungszeichen als Kommando eingeben und Return
drücken.
Es erscheint dann ein cpan-Prompt, auf dem man
folgende Kommandos eingibt:
cpan[1]> install XML::DOM
cpan[2]> install Algorithm::NaiveBayes
cpan[3]> exit
(die Zahl wird pro Kommando hochgezählt). Es
erscheinen unter Umständen eine Menge Meldungen,
bevor der Modul hoffentlich erfolgreich
installiert wurde.
Damit ist der Bayes-Filter dann bereit zum
Aufruf.
Aufruf
Das Script wird nun per Kommandozeil aufgerufen -
unter Linux unter einer beliebigen Shell, unter
Windows sollte - wie bereits oben beschrieben -
portableshell.bat durch Anklicken gestartet
werden.
Der Aufruf sieht beispielhaft wie folgt aus:
perl bayes.pl gut.gpx schlecht.gpx
zuuntersuchen.gpx ergebnis.gpx
D.h. es müssen Dateinamen von vier GPX-Dateien
angegeben werden - drei existierende und eine zu
erzeugende:
gut.gpx steht für eine Datei mit Caches, die man
selber für sehr gut hält - dies kann z.B. eine
Pocket-Query aus einer Bookmark-Liste der eigenen
Favoriten sein.
schlecht.gpx steht ganz analog dazu für eine
Datei mit Caches, die man selber für sehr schlecht
hält. Hier könnte man z.B. eine Pocket-Query der
eigenen Ignore-Liste verwenden, sofern man eine
solche verwendet und mit etlichen Caches gefüllt
hat.
WICHTIG: Die Datei mit den schlechten
Caches sollte, um ein gutes Ergebnis zu erreichen,
ca. fünf mal so groß sein wie die mit den guten
Caches! Dann lernt das Programm nämlich, dass es
nur wenige gute Caches gibt...
zuuntersuchen.gpx ist schließlich die Datei, die
auf gute Caches untersucht werden soll - z.B. die
normale Pocket-Query mit zu erledigenden Caches
oder auch eine Kombination mehrerer PQs.
Die vierte Datei, im Beispiel ergebnis.gpx wird
vom Programm angelegt und enthält nach dem
Filter-Lauf das Ergebnis - eine Teilmenge von
zuuntersichen.gpx mit Caches, die der Filter
aufgrund seiner Analyse für gut hält.
Seit Version 0.3 kann auch optional ein fünfter
Parameter angegeben werden. Ist er angegeben, so
beschreibt er eine weitere Ausgabe-Datei. Diese ist
aber keine GPX-Datei, sondern ein GSAK-Macro, was die
vom Script ermittelten Werte in GSAK importiert, wenn
es von dort als Macro aufgerufen wird. Daher sollte
hier die Extension .gsk benutzt werden. Es werden
folgende Felder benutzt: UserData enthält die
Wahrscheinlichkeit, dass der Cache gut ist, User2 die
Wahrscheinlichkeit, dass der Cache schlecht ist (mit
negativem Vorzeichen) und User3 die auf Prozentwerte
skalierte Differenz der vorgenannten Werte. Es kann dann
nach diesen Werten sortiert werden oder man kann
Filter oder eigene Macros entwerfen, die diese Werte
benutzen.
Das Programm hat in meinen Tests erstaunlich gute
Ergebnisse geliefert. Das muss nicht für jeden
gelten. Außerdem mag es immer noch Fehler im
Programm geben. Sollte das Programm dennoch
nützlich sein, würde ich mich freuen.
Über Feedback per Mail
freue ich mich.
Letzte Aenderung: 23.05.2019, 05:53 Uhr
|