silbentrennung

Post Reply
Message
Author
drfree

silbentrennung

#1 Post by drfree »

Hallo
ich möchte ein silbentrennungs tool schreiben, hat einer schon mal so was gemacht?!
hat einer eine ide oder ein tip?!

mfg

drfree

Descartes

Re: silbentrennung

#2 Post by Descartes »

Was ist an dieser -- zudem recht allgemein gestellten -- Frage denn C spezifisch?

Google schon mal befragt?
<a href="http://www.google.com/search?q=silbentr ... lgorithmus" target="_blank"><!--auto-->http://www.google.com/search?q=silbentr ... <!--auto-->

Auf anhieb habe ich dort ein paar interessante Links gefunden:

SiSiSi - Sichere sinnentsprechende Silbentrennung für die deutsche Sprache
<a href="http://www.ads.tuwien.ac.at/research/SiSiSi/" target="_blank"><!--auto-->http://www.ads.tuwien.ac.at/research/Si ... <!--auto-->

EducETH - Informatik - ETH-Lernaufgabe: Silbentrennung
<a href="http://www.educeth.ch/informatik/lernau ... /info.html" target="_blank"><!--auto-->http://www.educeth.ch/informatik/lernau ... <!--auto-->

und hier mal eine Beispiel-Implementierung:

<blockquote><hr>
Daniel Kirsch wrote:

Mein Algorithmus ist sehr klein und ich kann ihn Dir gerne schicken, allerdings ist er in OpenScript geschrieben. Sollte aber halbwegs leserlich sein:

Die Funktion wird mit
silbentrennung("trennungswort")
aufgerufen und liefert eine Liste aus Positionswerten an denen getrennt werden darf.
Die variable "verbindungen" wird verwendet, um typische Zusammenhängende Laute zu definieren. Dabei wird in kauf genommen, das es viele Ausnahmen gibt, bei denen ein entsprechendes Wort anders getrennt wird.

Zeilen mit "--" sind Kommentare, die Nummerierung in OpenScript beginnt mit 1 anstatt mit 0.
Here we go

<hr></blockquote>
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
to get silbentrennung string welchesWort
local int zeichenAnzahl, i
local logical trennenErlaubt
local string z, z0, z1, v
local stack trennPositionen

zeichenAnzahl = charCount(welchesWort)
if zeichenAnzahl > 2
trennenErlaubt = false
vokale = "a,e,i,o,u,ä,ü,ö"

-- "sch" wie in "A_sche" -- "ch" wie in "Untersu_chen"
-- "ph" wie in "Ste_phan" -- "ck" wie in "Zu_cker"
-- "pf" wie "A_pfel" -- "br" wie in "Unter_brechung"
-- "pl" wie "Finanz_plan" -- "tr" wie in "An_trag"
-- "st" wie in "Auf_stehen" -- "gr" wie in "Hinter_grund"
verbindungen = "sch,ch,ph,ck,pf,br,pl,tr,st,gr"
trennungen = "-,/,\<!--no-->,*,#,;,.,+,=,),(,&,!,?,<,>,:, ,_,~"

step i from 2 to (zeichenAnzahl-1)
z0 = char i-1 of welchesWort
if trennenErlaubt = false and istIn(z0,vokale)
trennenErlaubt = true
end if
if trennenErlaubt
z = char i of welchesWort
z1 = char i+1 of welchesWort
v = z0 & z
if v = "ch" and i > 2 and char i-2 of welchesWort = "s"
v = "sch"
end if
if istIn(z1,vokale) and istIn(z,vokale) = false and istIn(z,trennungen) = false and istIn(z0,trennungen) = false
if istIn(v,verbindungen)
push (i-charCount(v)+1) onto trennPositionen
else
push i onto trennPositionen
end if
end if
end if
end step
end if
return trennPositionen
end silbentrennung
</font><hr></pre></blockquote>

drfree

Re: silbentrennung

#3 Post by drfree »

besten dank!!

mfg drfree

Post Reply