Aspekte der morphologischen Analyse des Deutschen - Universität ...
Aspekte der morphologischen Analyse des Deutschen - Universität ...
Aspekte der morphologischen Analyse des Deutschen - Universität ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Anhang C: Programmcode<br />
/*********************************************************************************************************************************<br />
heuristic_tests(Startpos,EndPos,Word):<br />
Currently it prevents the insertion of segments with one ore two characters<br />
and tests for the phonetic wellformedness of the candidate segment.<br />
*********************************************************************************************************************************/<br />
heuristic_tests(Startpos,EndPos,Word) :-<br />
length_test(Startpos,EndPos),<br />
phonetic_wellformedness(Startpos,EndPos,Word).<br />
length_test(Startpos,EndPos) :-<br />
% test whether the length of the candidate segment is greater than 2<br />
EndPos - Startpos > 3.<br />
phonetic_wellformedness(Startpos,EndPos,Word) :-<br />
Length is EndPos - Startpos,<br />
substring(Word,Unknown,Startpos,Length),<br />
% check candidate segment against the list of syllables<br />
syllable_check(Unknown).<br />
**********************************************************************************************************************************<br />
insert_unknown_segments(Positions:,End:,UnknownCat:,Word:)<br />
Inserts finally the unknown-type segments by doing a closure on each<br />
Positions is a list of start positions<br />
*********************************************************************************************************************************/<br />
insert_unknown_segments([],_EndPos,_UnknownCat,_Word).<br />
insert_unknown_segments([Begin|RestPos],EndPos,UnknownCat,Word) :-<br />
shift_unknown(Begin,EndPos,UnknownCat,Word),<br />
insert_unknown_segments(RestPos,EndPos,UnknownCat,Word).<br />
shift_unknown(Begin,EndPos,UnknownCat,Word) :-<br />
Length is EndPos - Begin,<br />
substring(Word,Unknown,Begin,Length),<br />
closure(Begin,EndPos,UnknownCat,[term(unknown(Unknown))],[],[EndPos],true).<br />
shift_unknown(_Begin,_EndPos,_UnknownCat,_Word).<br />
/*********************************************************************************************************************************<br />
find_incomplete_edges(Begin,UnknownCat,Edgelist)<br />
<br />
*********************************************************************************************************************************/<br />
find_incomplete_edges(Begin,Unknown_cat,Edgelist) :-<br />
findall( End,<br />
(edge(_,End,_,_,[Unknown_cat|_],_,_), End < Begin),<br />
Edgelist0),<br />
remove_duplicates(Edgelist0,Edgelist).<br />
208