11.02.2013 Aufrufe

Aspekte der morphologischen Analyse des Deutschen - Universität ...

Aspekte der morphologischen Analyse des Deutschen - Universität ...

Aspekte der morphologischen Analyse des Deutschen - Universität ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!