Dienstag, 25. November 2008

Graphviz für Mac OS X, Prolog, Computerlinguistik

Für die Mac-Users ist folgende Anleitung bei dem graphischen Tool zu beachten:

um den Parser unter Prolog in Mac OS laufen zu lassen, ist es erforderlich, Graphviz zu installieren, und zwar:
  1. Grafische Oberfläche und
  2. Command line

  1. Grafische Oberfläche ist einfach zu installieren: drag&drop ins Programmenverzeichnis. Das spannende kommt später :) Ich habe die letzte Version, 1.13 (v16), installiert.
  2. Kommandozeile kann man auf verschiedene Weisen installieren. Ich habe den einfachsten Weg gewählt. Über darwinports. Darwinports dürften mittlerweile bei jedem installliert sein, falls nicht, Anleitung hier folgen. Wenn die Macports bereits installiert sind, legt los, und zwar im Terminal, als Root angemeldet, mit:

port install graphviz

Die Installation wird ca. 15-30 Min. dauern, denn Darwinports installiert ein ziemlich komplexes Package mit vielen Extras, z.B.

gmp @4.2.2_1
graphviz @2.20.3_0+darwin_8
hamcrest-core @1.1_0
jpeg @6b_2
junit @4.4_0
libiconv @1.12_0+darwin_8
libmcrypt @2.5.8_0
libpixman @0.12.0_1
libpng @1.2.32_0
ncurses @5.6_0
ncursesw @5.6_1
pango @1.22.2_0


Nach der Installation sind folgende Tools verfügbar:

acyclic, bcomps, ccomps, dot, gvpack etc...

Für Computerlunguistik werden wir vor allem dot und gvpack brauchen. Diese Tools kann man unter anderem mit folgender Syntax benutzen:

toolname -Tps filename -o output.ps

So weit gut. Alle über darwinports installierte Tools sind im Terminal als Kommandozeile verfügbar, zu jedem gibt es einen ausführlichen man-Aufruf. Was fällt ist, der Pfad zur grafischen Oberfläche Graphviz aus Punkt 1, um die dot-Dateien zu pipelinen und beim Kompilieren zu öffnen. Man muss den Pfad nicht unbedingt definieren: die gespeicherten dot-Dateien kann man auch manuell aufmachen und bearbeiten. Apropos die gespeicherten dot- und ps-Dateien - sie werden von unserem Parser [Parser/dot.syntaxbaum.pl] ins Homeverzeichnis geschrieben [/Users/username].
Damit Prolog automatisch diese Dateien mithilfe von Graphviz aufmacht und schön im Hintergrund anzeigt, müssen wir 2 Dinge machen:
  • Den Pfad im Terminal definieren und
  • Prolog-Programm dementsprechend ändern
Um den Pfad zu setzen, fügt folgendes in die .bash_profile hinzu (falls ihr Graphviz in Application folder installiert habt):

cd
mate .bash_profile


wobei mate ein Texteditor sein soll, z.B. mate für Textmate oder smultron für Smultron (benutzt den Befehl für den Editor, den ihr benutzt) etc... Wenn die .bash_profile nicht existieren sollte, einfach anlegen:

cd
touch .bash_profile


Nachdem ihr die .bash_profile mit dem Texteditor geöffnet habt, wird ein Fenster fürs Editieren von .bash_profile aufgemacht. Da folgendes eingeben:

# This sets up the Graphviz path:
export PATH=/Applications/Graphviz.app/Contents/MacOS:$PATH


Dann speichern und den Editor schließen. Terminal neustarten und 'nen neuen Tab öffnen. Jetzt wenn ihr

Graphviz&

eingebt, wird die grafische Oberfläche gestartet. Falls soweit alles gut gegangen ist, können wir das Prolog-Programm ein bisschen anpassen. In der Datei [Parser/dot.syntaxbaum.pl] soll das Prädikat [i]viewgraph/1 [/i] wie folgt geändert werden:

[code]
viewgraph(Datei) :-
concat_atom(['dot -Tps ',Datei,'.tmp.dot ',' -o',Datei,'.tmp.ps '],Command1),
concat_atom(['Graphviz ',Datei,'.tmp.dot &\n'],Command2),
shell(Command1),
shell(Command2).
[/code]

Ich habe lediglich Graphviz hinzugefügt, um den Syntaxbaum gleich nach dem Kompilieren ausgegeben zu bekommen. Achtung: Wenn Graphviz schon mal läuft und ihr noch mal kompiliert und den Syntexbaum ausgeben lässt, kann folgende Fehlermeldung kommen, was des Weiteren nichts Schlimmes ist:

Graphviz[12712] CFLog (0): CFMessagePort: bootstrap_register(): failed 1103 (0x44f), port = 0x4103, name = 'com.pixelglow.graphviz.gui.ServiceProvider'
See /usr/include/servers/bootstrap_defs.h for the error codes.
2008-11-19 23:40:47.294 Graphviz[12712] CFLog (99): CFMessagePortCreateLocal(): failed to name Mach port (com.pixelglow.graphviz.gui.ServiceProvider)


oder ähnlich. Um das zu vermeiden, einfach jedes Mal schön Graphviz beenden. :)

Das war's schon. Ich hoffe, ich habe Euch Zeit gespart... :) Falls Ihr Fragen habt, los damit!

Viel Spaß!

2 Kommentare:

Anonym hat gesagt…

danke! sehr hilfreich!

Anonym hat gesagt…

Filen Dang!