Seite 2 von 3

Re: Module: Silbentrennung

Verfasst: 04.05.2015 14:29
von Kurzer
Klar ist das okay, RSBasic, besten Dank.

In Post 1 ist jetzt eine aktuelle Version verfügbar (1.02), die eine Wortende-Behandlung hat.
Damit wird Dein Wort "Installationseinstellungen" richtig getrennt. Deine anderen Worte muss ich dann noch testen.

Edit: RSBasic, Deine Wortliste wird jetzt korrekt getrennt. Ich habe die Datenbasis erweitert und die Beispiel alle in post 1 ein-ge-fügt. :)

Re: Module: Silbentrennung

Verfasst: 04.05.2015 15:17
von Kurzer
Kiffi hat geschrieben:
NicTheQuick hat geschrieben:Eine Idee wäre auch noch das komplette deutsche Dictionary von Hunspell zu testen. Dann kannst du sicherlich auch ganz einfach die Sonderfälle automatisiert einpflegen.
hierzu gäbe es auch einen PB-Wrapper: http://www.purebasic.fr/english/viewtop ... 12&t=49236 (weiß allerdings nicht, ob der auch funktioniert).
Danke für den link Kiffi, schaue ich mir an.

Re: Module: Silbentrennung

Verfasst: 04.05.2015 16:09
von Nino
Der Vollständigkeit halber:
Hier gibt's sowas Ähnliches. :-)

Re: Module: Silbentrennung

Verfasst: 04.05.2015 16:29
von Thorsten1867
Habe mich vor einiger Zeit mit dem Thema beschäftigt.
Mein Ansatz basiert auf Hyphenation Pattern (Algorithmus von Frankling Mark Liang) und funktioniert sehr zuverlässig.
http://www.purebasic.fr/german/viewtopi ... entrennung

Re: Module: Silbentrennung

Verfasst: 04.05.2015 18:17
von Dadido3
Danke fürs Teilen.

Der Algorithmus funktioniert im Großen und Ganzen gut.
Hier sind aber ein paar Fehler die ich gefunden habe:
Sil|ben|tren|nung|sal|go|rith|mus anstatt Sil|ben|tren|nungs|al|go|rith|mus
Rechtsch|rei|bung anstatt Recht|schrei|bung
An|schauungskraft anstatt An|schau|ungs|kraft
Be|treuungsgeld anstatt Be|treu|ungs|geld
Bef|reiungsschlag anstatt Be|frei|ungs|schlag
Er|ge|bnis anstatt Er|geb|nis
Rö|schen anstatt Rös|chen
Rö|schen|hof wiederum wird richtig getrennt, kommt aber auch vom Eigennamen Rösch.
Falls es aber von Rose kommt wäre es aber Rös|chen|hof

Und weil das noch nicht verwirrend genug war, lautet es:
Wach|stube
oder
Wachs|tube
?
Hier habe ich ein online Silbentrenner gefunden:
http://www.softhyphen.com/hyphenate
Den entsprechenden Code (in Python) und die dictionaries gibt es hier:
https://github.com/fortes/softhyphen
Dieser Algorithmus wird auch in OpenOffice verwendet, und wenn ich mich nicht irre
dann ist es der gleiche welcher auch von Thorsten verwendet wird.

zu gu­ter Letzt:
https://www.youtube.com/watch?v=M7R35mhPaaI

Re: Module: Silbentrennung

Verfasst: 04.05.2015 18:59
von Kurzer
Vielen Dank für Euer feedback.

Wie ich sehe kommt der von mir verwendete Algorithmus auch nicht ohne größere Vorsilben-, Ausnahme- und Endungslisten aus.
Vermutlich werde ich die Daten in externe Dateien auslagern, damit man sie bequemer pflegen kann.

Vielleicht mal zur Erklärung: Mir liegt nur der Algorithmus zu meiner Umsetzung vor. Die Qualität der Trennungen hängt aber weitestgehend von der Vollständigkeit der benötigten Vokale und konsonaten-Gruppen in den Variablen sVokale... und sKonsonaten... sowie der verwendeten Vorsilben in sVorsilben ab. Diese Daten liegen mir nicht komplett vor und die gilt es jetzt durch die fehlerhaften Trennungen zu vervollständigen.

Die zusätzlich verwendeten Ausnahme-Daten, die ganze Wortteile beschreiben, sollten dabei so wenig wie möglich Verwendung finden (das sind die Datatzeilen am Ende des Moduls). Das sollte dan nnur das letzte Mittel sein - quasi die Holzhammermethode.

Re: Module: Silbentrennung

Verfasst: 04.05.2015 22:14
von Kurzer
Dadido3 hat geschrieben:
Sil|ben|tren|nung|sal|go|rith|mus anstatt Sil|ben|tren|nungs|al|go|rith|mus
Rechtsch|rei|bung anstatt Recht|schrei|bung
An|schauungskraft anstatt An|schau|ungs|kraft
Be|treuungsgeld anstatt Be|treu|ungs|geld
Bef|reiungsschlag anstatt Be|frei|ungs|schlag
Er|ge|bnis anstatt Er|geb|nis
Rö|schen anstatt Rös|chen
Rö|schen|hof wiederum wird richtig getrennt, kommt aber auch vom Eigennamen Rösch.
Falls es aber von Rose kommt wäre es aber Rös|chen|hof
Danke.
In der neuen Version 1.03 wurde eine Trennung an Doppelkonsonanten und Mehrfachvokalen zugefügt. Außerdem ist die Datenbasis erweitert worden, so dass alle bisherigen Beispiele aus dem Thread korrekt übersetzt werden.

Re: Module: Silbentrennung

Verfasst: 15.04.2019 10:00
von Kurzer
Hallo zusammen,

ich habe nach langer Zeit mal wieder was an dem Modul gemacht.
Ein kleiner fix (eine ungenutzte Variable aus dem code entfernt) sowie die Trennungsleistung verbessert indem ich die Datenbasis erweitert und eine neue Sonderfallfunktion für ganze Wortkombinationen zugefügt habe.

Als kleines Hilfsmittel habe ich im Beispielvode des Moduls nun eine Funktion zugefügt, die (versucht) die Korrektheit des von dem Modul getrennten Wortes direkt auf http://www.duden.de zu prüfen. Da duden.de keine API dafür hat oder ich davon nichts weiß, versuche ich das Ergebnis aus dem HTPRequest heraus zu parsen. Das funktioniert vermutlich nur so lange bis duden.de den Aufbau ihrer Seite verändert - also nichts für die Ewigkeit. :wink:

Der Aufruf dafür lautet:

Code: Alles auswählen

Check("Überschallflugzeug")
Im Debugfester gibt es darauf hin diese drei möglichen Ergebnisse:

Code: Alles auswählen

Über|schall|flug|zeug          Korrekt!
oder 
Über|schall|flug|zeug          ist nicht im Duden vorhanden
oder
Über|schall|flug|zeug          luss lt. Duden heißen: <korrekte Trennweise>

Code: Alles auswählen

;* 1.04 - 14.04.19:
;*        fix Nicht benutzte Variable entfernt und Trennungsgenauigkeit verbessert (Datenbasis erweitert)
;*        add SonderfallGanzesWort() hinzugefügt für nicht algorithmisch trennbare Wortkombinationen
;*            z.B. für Sil|ber|ei|sen statt falsch Sil|be|rei|sen (Silbe & Reisen)
;*        add Im Beispielcode des Modules wurden Funktionen zugefügt, die die Korrektheit der Trennung online
;*            bei www.duden.de überprüfen.
Der aktuelle Code befindet sich im ersten Post dieses Threads.

Gruß Kurzer

Re: Modul: Algorithmische Silbentrennung (deutsch)

Verfasst: 03.06.2019 13:09
von Sicro
Fix für Procedure AskDuden():

Code: Alles auswählen

; Status prüfen und die korrekte Trennungsschreibweise aus der duden.de webseite extrahieren und übergeben
If FindString(sResponse, "Es ist leider ein Fehler aufgetreten") = 0
  If FindString(sResponse, "Von Duden empfohlene Trennung") > 0
    sResponse = GetStringPart(sResponse, ~"Von Duden empfohlene Trennung</dt><dd class=\"tuple__val\">", "</dd>")
  Else	
    sResponse = GetStringPart(sResponse, ~"Worttrennung</dt><dd class=\"tuple__val\">", "</dd>")
  EndIf
  ProcedureReturn sResponse
EndIf

Re: Modul: Algorithmische Silbentrennung (deutsch)

Verfasst: 03.06.2019 22:47
von Kurzer
Vielen Dank für die Anpassung Sicro. :allright:
Ich habe das Modul angepasst und den Code im ersten Posting aktualisiert.

Gruß Kurzer