ralpeng – Übersetzungs Programm/Bibliothek

Started by xMine, July 24, 2010, 12:25:08 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

xMine

Kaltxì ma eylan,
Ich arbeite seit geraumer Zeit an einer Bibliothek inklusive Programm,
das mir möglichst einfach und schnell viele informationen zu verschiedenen
Wörtern ausgibt. Oder Kurz: Eine Wörterbuch Software.
Es gibt schon ein paar kleinere Projekte, wie zB:
Tuiqs EanaEltu: Im IRC ohne Zweifel praktisch, aber ich bin mit meinem Programm schneller
SirHaxalots Programm: Ist Systemabhängig, da es .NET benutzt. (Mono ist keine alternative; Ich halte
von .Net und Mono nicht viel)

Also hab ich in C eine ansich portable Lösung geschrieben.
Das einzige, was ein Problem wäre: Das Pogramm ist eine Konsolen Anwendung.
Unter Linux läufts wunderbar »mit Bunt« und sowas, aber für Windows wirds eklig (Danke an Redmond):
Nicht nur, dass dort Bunt nicht so gut geht, nein, die Konsole kann nicht einmal UTF8 –
auf Deutsch: Sonderzeichen wie ä und ì kann man ohne zusätzliche Funktionen knicken.
Wies mit der Konsole auf Mac aussieht weiß ich nicht – wenns dafür nen BASH samt
Terminal gibt, ist alles wunderbar ;)

Davon mal ab: Die meisten hier werden Konsolen Interfaces nicht mögen (weil "kompliziert" ... aha).
Da ich wiederum immoment schlichtweg keine Lust auf eine GUI habe, aber hier jemand
ist, der schon immer mal eine portable GUI-Anwendung schreiben wollte, dann Hand hoch:
Ich habe die komplette notwendige Funktionalität von Anfang an in eine lib gekloppt,
namentlich "libralpeng" (ja, ich weiß, sehr kreativ).

Wenn sich ein paar Leute mit C Kentnissen melden (in der GUI von mir aus C++, in der lib bleibts aber C ;) )
könnte man daraus vielleicht sogar ein kleines Community Projekt machen :)

Für Meckerer: Warum nur C? Weil ich C++ schlicht und ergreifend NICHT mag. Alle, die meinen, C sei veraltet und es nicht mehr Wert, brauchen sich gar nicht zu melden. Danke

Im Anhang hab ich mal ein einfaches Anwendungsbeispiel angehangen von (lib)ralpeng ;)

Zu sehen ist eine einfache Abfrage (mit auf dem ersten Blick kryptischen Flags :D ), den kleinen Vokabel Trainer,
den Import (aus dem Internet) einer CSV mit dem engl. Na'vi Wörterbuch und einer kleinen Information über die Datenbanken.

um noch ein wenig interesse bei den Codern zu schüren, hier ein kleines Beispiels Programm:
(Wie dem Code zu entnehmen ist, braucht man dazu libcurl)

// Compile me with: $> gcc -o test test.c -Llib/ -lralpeng -lcurl
//
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <lib/ralpeng.h>

int main (int argc, char **argv) {

if (argc < 1) {
printf ("Verwendung: %s Wort\n", argv[0]);
}

char *suche = argv[1];

if (!ralpeng_init()) { // Bibliothek initialisieren
printf ("ralpeng_init() failed\n");
return 1;
}

if (!ralpeng_loaddb()) { // Datenbank laden oder ggf. erstellen (unter $HOME/.ralpeng/database)
printf ("ralpeng_loaddb() failed\n");
return 2;
}

r_database_item_t *treffer = ralpeng_search (suche, false, false, RALPENG_BOTH, ralpeng_get_id ("de"));

if (!treffer) {
printf ("Fehler beim Suchen\n");
return 3;
}

int i; // Der letzte Eintrag ist komplett NULL
for (i=0; treffer[i].navi[0] != 0x0; i++) {
printf ("Treffer %i: %s => %s\n", i, treffer[i].navi, treffer[i].lang);
}

if (!ralpeng_deinit()) {
printf ("ralpeng_deinit() failed\n");
return 4;
}

return 0;
}


Ich weiße einfach darauf hin: Das ganze Ding ist als Beta zu behandeln.
Nicht wegen seg faults oder solchen Späßen, sondern einfach, weil einige Funktionen nicht immer
hundertprozentig korrekte Ergebnisse liefern!

Naja, hier mal ne Funktionsübersicht:
Quote
- Einfacher Import/Aktualisierung von verschiedenen Wörterbüchern
- Wörterbücher werden beim Import vorher auf Aktualität überprüft
- Einfaches Interface
- Funktionen wurden kurz kommentiert:
/* Sucht nach einem Wort in einer DB
* Parameter: Suchwort, nur Volltreffer, Strikte Suche, Richtung, DB ID
* Rückgaben: Eine Liste von r_database_item_t (Der letzte Eintrag ist komplett NULL), bei Fehlern NULL
*/
r_database_item_t *ralpeng_search (const char *, bool, bool, int, int);

- Extrem schnell (siehe unten)
- Bietet für vieles, auch Grammatikalische Dinge, Funktionen
  Wie zB zum Plurale bilden (oder einfachem lenitisieren) oder für die Infix Positionen
- Mehrere Datenbanken simultan verwaltbar
- Strikte und unstrikte Suche: Automatische ersetzung von ì, ä, tx, px, kx => i, a, t, p, k

Hier noch ein kleines Benchmarking für ralpeng,
Aufruf: $> ralpeng lookup de (Deutsche DB) -i (IPA bestimmen) "" (Leerer String, passt auf alles)

Ich messe die Ausführungszeiten mit "time" unter Kubuntu Lucid Lynx (CPU: 2x2,5GHz, 4GB RAM)
Quote$> time ralpeng lookup de -i ""
... Etwa 1800 Ergebnisse später ...
real    0m0.159s
user    0m0.028s
sys     0m0.000s

Nun rufe ich das ganze ohne sichtbaren Ausgaben von ralpeng auf:
Quote$> time $(ralpeng lookup de -i "" > /dev/null)
real    0m0.027s
user    0m0.008s
sys     0m0.016s

Was macht er in diesen 27ms ? Folgendes:
Er lädt die Datenbank (Deutsche und Englische), dursucht diese, gibt alle Ergebnisse aus:
Er gibt Wortarten der Wörter aus, dazu bei Verben die berechneten Infix Positionen und die IPA.

Find ich als Ergebnis ganz okay, dafür, dass das ganze Single-Threaded abläuft.

Also, nochma kurz: Ich suche Tester für die lib und fürs Programm (hier nur Linux momentan).

Danke für die Aufmerksamkeit :)
Kìyevame

raster

ich darf ja morgen testen, bin schon gespannt

mfg raster
ayoeng lu aysmuktu mì sirea.

Bisher 3 Kekse bekommen.

xMine

Zuerst muss ich Windows überreden, dass GTK so toll ist, dass es das auch baut ;D
Immerhin hab ich ihn schon davon überzeugt das auch die lib sich bauen lässt...

Nun, ich werde dann, so vermute ich, einen neuen Thread dafür eröffnen – nicht nur, weil der Bereich "OffTopic"
sich als denkbar schlecht dafür herausgestellt hat... ;)

Naja, so lange kann ich ja schon mal das ein oder andere mehr einbauen :)

Kìyevame

luke sre'

HIhi, hatte test-1 und test-2 mitgemacht und es lief wunderbar.



Gallery meiner selbst gebauten Pics    http://www.imgbox.de/show/gallery/IOVB1lcoS3

raster

wer will, ich habe aktuell 9 verschiedene versionen
ayoeng lu aysmuktu mì sirea.

Bisher 3 Kekse bekommen.