Nachdem dies ja neulich irgendwo ein Thema war, habe mir gedacht, dass es wohl nicht so schwer sein dürfte. Ich habe mir also die Dokumentation für *.dic Dateien reingezogen und noch ein bisschen über den Levenshtein-algo.
Ich erstelle diesen Thread unter dem Präfix "Skript". Dabei ist es eigentlich eine DLL. Und irgendwie dann doch wieder ein Script.
Lasst mich das erklären.
Ich habe den Levenshtein Algorithmus in c++ geschrieben, um größtmögliche Performance zu erlauben. Levenshtein berechnet die Distanz zwischen 2 Wörtern. So haben Zb. "correctnes" und "correctness" den Faktor 0.5 weil man nur ein mal Hand anlegen muss, um das richtige Wort zu erhalten.
Folglich gilt: 1/( Anzahl_der_Korrekturen +1);
Ich habe ihn auf einem alten, abgestaubten Rechner getestet. Dort brauchte die 1000fache Berechnung von "Eisnbahn" und "Eisenbahn" 6.8 Millisekunden. Wobei ich nicht sagen kann, wie viel dabei für den GM drauf geht, da der immerhin auch 1000 mal einen "external call" machen muss.
Und dann wären da ja noch die Scripte. Die machen alles andere Drum und Dran z.B. die *.dic Dateien analysieren.
In der zip vom gleich genannten Link findet ihr einen Haufen an Dateien. Das wären:
de_DE.dic (1MB) - eine Deutsche Sprachdatei.
en-US.dic (0.6MB) - eine Englische Sprachdatei.
GMLevenshtein.dll (7.5 kb) - Die DLL
GMSpell.gmk (11 kb) - ein Beispiel.
GMSpell.gml (4 kb) - Die Scripte.
GMSpell.gmres ( 2 kb) - Die Scripte für GM8. Der Vorteil: Gruppen bleiben erhalten.
Hier gehts zum Download (0.5 MB, komprimiert)
Und noch ein bisschen zur Nutzung:
Man kann die GMLevenshtein.dll natürlich auch ohne die Rechtschreibprüfung für seine eigenen Angelegenheiten nutzen.
da wären folgende Funktionen:
gmlevenshtein_init()
gmlevenshtein_eval( string1, string2 );
gmlevenshtein_free();
gmspell_init( dic path );
gmspell_check( word, distance, [Separator]);
gmspell_free();
Dabei gilt zu beachten, dass die gmspell_init (wenn nicht bereits geschehen) die gmlevenshtein_init Funktion aufruft und, dass gmspell_free ebenfalls gmlevenshtein_free aufruft.
Ein Beispiel:
Eine detaillierte Beschreibung der Funktionen findet ihr in den selbigen Skripten.
Ich bin außerdem dessen bewusst, dass die Rechtschreibung nicht an die von z.B. FF ran kommt. Diese analysiert auch in welchem Zusammenhang das Wort geschrieben ist.
Das einzige was jetzt noch Fehlt ist eine Erklärung, wofür man dies nutzen kann. Ich weiß es ehrlich gesagt auch nicht
MfG SDX
Ich erstelle diesen Thread unter dem Präfix "Skript". Dabei ist es eigentlich eine DLL. Und irgendwie dann doch wieder ein Script.
Lasst mich das erklären.
Ich habe den Levenshtein Algorithmus in c++ geschrieben, um größtmögliche Performance zu erlauben. Levenshtein berechnet die Distanz zwischen 2 Wörtern. So haben Zb. "correctnes" und "correctness" den Faktor 0.5 weil man nur ein mal Hand anlegen muss, um das richtige Wort zu erhalten.
Folglich gilt: 1/( Anzahl_der_Korrekturen +1);
Ich habe ihn auf einem alten, abgestaubten Rechner getestet. Dort brauchte die 1000fache Berechnung von "Eisnbahn" und "Eisenbahn" 6.8 Millisekunden. Wobei ich nicht sagen kann, wie viel dabei für den GM drauf geht, da der immerhin auch 1000 mal einen "external call" machen muss.
Und dann wären da ja noch die Scripte. Die machen alles andere Drum und Dran z.B. die *.dic Dateien analysieren.
In der zip vom gleich genannten Link findet ihr einen Haufen an Dateien. Das wären:
de_DE.dic (1MB) - eine Deutsche Sprachdatei.
en-US.dic (0.6MB) - eine Englische Sprachdatei.
GMLevenshtein.dll (7.5 kb) - Die DLL
GMSpell.gmk (11 kb) - ein Beispiel.
GMSpell.gml (4 kb) - Die Scripte.
GMSpell.gmres ( 2 kb) - Die Scripte für GM8. Der Vorteil: Gruppen bleiben erhalten.
Hier gehts zum Download (0.5 MB, komprimiert)
Und noch ein bisschen zur Nutzung:
Man kann die GMLevenshtein.dll natürlich auch ohne die Rechtschreibprüfung für seine eigenen Angelegenheiten nutzen.
da wären folgende Funktionen:
gmlevenshtein_init()
gmlevenshtein_eval( string1, string2 );
gmlevenshtein_free();
gmspell_init( dic path );
gmspell_check( word, distance, [Separator]);
gmspell_free();
Dabei gilt zu beachten, dass die gmspell_init (wenn nicht bereits geschehen) die gmlevenshtein_init Funktion aufruft und, dass gmspell_free ebenfalls gmlevenshtein_free aufruft.
Ein Beispiel:
Eine detaillierte Beschreibung der Funktionen findet ihr in den selbigen Skripten.
Ich bin außerdem dessen bewusst, dass die Rechtschreibung nicht an die von z.B. FF ran kommt. Diese analysiert auch in welchem Zusammenhang das Wort geschrieben ist.
Das einzige was jetzt noch Fehlt ist eine Erklärung, wofür man dies nutzen kann. Ich weiß es ehrlich gesagt auch nicht

MfG SDX