Login
Newsletter
Werbung

Do, 9. Februar 2006, 00:00

OpenLogos 1.0.1 Installation und Anwendung

Dieser Artikel führt durch die Installation des maschinellen Übersetzungssystems OpenLogos und die dafür notwendige PostgreSQL-Konfiguration. Die Anwendung des betriebsbereiten Systems wird demonstriert und ein Skript zum praktischen Einsatz wird vorgestellt. Der Artikel schließt mit einem Ausblick auf mögliche zukünftige Entwicklungen.

Einleitung

Seit Oktober 2005 ist das maschinelle Übersetzungssystem OpenLogos als freie Software verfügbar. Die Projektverantwortlichen des Deutschen Forschungszentrums für Künstliche Intelligenz (DFKI) haben bei der Portierung ganze Arbeit geleistet. Leider ist die Installation und die Anwendung noch sehr umständlich. Hinzu kommt, dass die Dokumentation eher etwas für die Knobel- und Rätselfreunde unter uns ist. In den Kommentaren zu den OpenLogos-Ankündigungen der Linux-Portale (z.B. Pro-Linux: Übersetzer Logos wird Open Source) gibt es kaum Hinweise auf erfolgreiche Installationen. Auch die OpenLogos-Mailingliste ist noch sehr ruhig.

Es gibt noch einiges zu tun, bevor OpenLogos in Form eines anwenderfreundlichen Distributionspakets zur Verfügung stehen wird. Doch da zukünftige Entwickler aus der Anwenderbasis kommen werden, sollte man zuerst die Installation und Anwendung erleichtern. Dieser Artikel leistet hierzu hoffentlich einen Beitrag. Ganz nebenbei kann auch ein wenig über das Datenbanksystem PostgreSQL gelernt werden.

Die Entwickler testeten OpenLogos 1.0.1 unter SuSE Linux 9.2 und Fedora Core 4. Dieser Artikel beschreibt die Installation unter Ubuntu 5.10 "Breezy Badger". Da Ubuntu auf Debian basiert, sollten auch Debian-Anwender mit dieser Anleitung zurecht kommen. Eine Warnung vorweg: Für Kompilierung und Installation sollte man 2 GB freien Festplattenspeicher vorhalten.

Vorbereitungen

Zuerst holen wir uns die Programmquellen (7,4MB) und die Sicherung der OpenLogos-Datenbank (48MB) und entpacken die Programmquellen wie auf der OpenLogos-Seite beschrieben.

> wget http://logos-os.dfki.de/release/openlogos-1.0.1.tar.gz
> wget http://logos-os.dfki.de/release/pg_esense.dump
> tar xzvf openlogos-1.0.1.tar.gz
> cd openlogos-1.0.1

Gemäß den Systemanforderungen und den Hinweisen in der Datei INSTALL installieren wir nun die benötigten Pakete:

> sudo apt-get install g++ j2sdk1.4 unixodbc unixodbc-dev \
postgresql-8.0 odbc-postgresql postgresql-doc-8.0

Ich empfehle zusätzlich noch das Paket checkinstall zu installieren, damit die manuelle OpenLogos-Installation in die Ubuntu-Paketverwaltung integriert werden kann.

> sudo apt-get install checkinstall

Installation

Das Kompilieren ist schmerzlos, doch dauert es seine Zeit.

> ./configure --with-java=/usr/lib/j2se/1.4/
> make
> # anstelle von 'make install':
> sudo checkinstall

Bei der Installation mit checkinstall kann man einfach solange mit Enter bestätigen, bis man vom Programm mit der erfolgreichen Installation verabschiedet wird. Das erzeugte Paket openlogos-1.0.1_1.0.1-1_i386.deb ist 29 MB groß. Installiert beansprucht OpenLogos 101 MB auf der Festplatte.

Als nächstes erzeugen wir die benötigte Datenbank ESENSE und füllen sie mit den Daten aus der Datei pg_esense.dump. Hierdurch wachsen die Datenbankdateien im Pfad /var/lib/postgresql/8.0/main/base auf eine Größe von insgesamt etwa 1,3 GB an.

> cd ..
> sudo -u postgres createdb -E LATIN1 ESENSE
> sudo -u postgres createlang -d ESENSE plpgsql
> sudo -u postgres pg_restore -O -x --dbname=ESENSE pg_esense.dump

Während des langwierigen Vorgangs meldet das System möglicherweise einige Fehler. Hinweise auf bereits existierende plpgsql-Funktionen dürfen ignoriert werden. Falls jedoch Fehler beim Erzeugen eindeutiger Indexe angezeigt werden, drohen später gravierende Einbußen bei der Übersetzungsgeschwindigkeit. Üblicherweise ist in diesem Fall der Datenbankcluster mit einer lokalen Sortierreihenfolge und Zeichenklassifikation (LC_COLLATE, LC_CTYPE) "verseucht". Liefert der folgende Befehl auf dem System für beide locale-Variablen nicht C zurück, sollte der Datenbank-Cluster neu erzeugt und die Datenbank ESENSE erneut wie oben beschrieben angelegt werden. In einem Fall beschleunigte dies die Übersetzung um den Faktor sieben.

> echo "show LC_COLLATE; show LC_CTYPE;" | sudo -u postgres psql ESENSE
 lc_collate
------------
 C
(1 row)
 lc_ctype
----------
 C
(1 row)

Die nachfolgenden Befehle zum Löschen und zum erneuten Erzeugen des Datenbank-Clusters sollten nur durchgeführt werden, wenn Fehler bei der Indexerstellung gemeldet wurden und wenn man genau weiß, was man tut. Insbesondere wenn neben OpenLogos noch eine andere Datenbank installiert ist, sollte man besser die PostgreSQL-Dokumentation zu Hand nehmen.

# Cluster-Eigenschaften anzeigen lassen
> pg_lsclusters
Version Cluster Port Status Owner ...
8.0 main 5432 online postgres...
# Vorsicht: Alle Datenbanken des Clusters werden gelöscht.
> sudo pg_dropcluster 8.0 main
# Cluster mit Standard-locales anlegen
> LC_COLLATE=C LC_CTYPE=C sudo pg_createcluster 8.0 main

Schauen wir uns die Datenbank doch mal mit psql an. Eine Befehlsübersicht bekommt man mit \?. Die Ergebnisansicht verlässt man mit q.

> sudo -u postgres psql ESENSE
ESENSE=# \l
 List of databases
 Name | Owner | Encoding
-----------+----------+----------
 ESENSE | postgres | LATIN1
 template0 | postgres | UNICODE
 template1 | postgres | UNICODE
ESENSE=# \du
 List of users
 User name | User ID | Attributes | Groups
-----------+---------+----------------------------+--------
 postgres | 1 | superuser, create database |
ESENSE=# \d
 List of relations
 Schema | Name | Type | Owner
--------+--------------------------------+----------+----------
 public | abc_flag | table | postgres
 public | abc_flag_description | table | postgres
 public | adj_combining_form | table | postgres
[...]
ESENSE=# \d abc_flag
 Table "public.abc_flag"
 Column | Type | Modifiers
-----------------+--------------+-----------
 language_code | character(2) | not null
 abc_code | character(1) | not null
 word_class_code | character(2) | not null
 target_switch | character(1) | not null
Indexes:
 "abc_flag_pkey" PRIMARY KEY, btree (language_code,
 word_class_code, abc_code)
ESENSE=# select * from abc_flag
 language_code | abc_code | word_class_code | target_switch
---------------+----------+-----------------+---------------
 03 | Z | 20 | N
 04 | D | 01 | N
[...]
ESENSE=# \q
Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung