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 />
process_lex_entries/0:<br />
Adds all lexicon entries to the automation and constructs<br />
the failure function afterwards<br />
*********************************************************************************************************************************/<br />
process_lex_entries :-<br />
(--->(Word,_Desc)), % extract lexicon entry<br />
\+ (Word = unknown(_W)), % special entry 'unknown' isn't inserted<br />
add_to_automation(Word), % insert Word into the automation<br />
fail.<br />
process_lex_entries.<br />
/*********************************************************************************************************************************<br />
startstate_completition/0:<br />
adds a transition for all symbols from startstate to startstate for<br />
which no transition is defined yet<br />
*********************************************************************************************************************************/<br />
startstate_completition :-<br />
automation_alphabet(Alphabet),<br />
startstate(Start),<br />
add_start_transitions(Alphabet,Start).<br />
add_start_transitions([],_Start).<br />
add_start_transitions([AlphabetSymbol|RestAlphabet],Start) :-<br />
transition(Start,AlphabetSymbol,State),<br />
((State = fail) -><br />
add_transition(Start,AlphabetSymbol,Start)<br />
;<br />
true % a transition is already there, so do nothing<br />
),<br />
add_start_transitions(RestAlphabet,Start).<br />
/*********************************************************************************************************************************<br />
construct_failure_function/0:<br />
constructs the failure function of the segmentizer.<br />
*********************************************************************************************************************************/<br />
construct_failure_function :-<br />
automation_alphabet(Alphabet),<br />
startstate(Start),<br />
make_queue(Queue),<br />
% initialize the queue<br />
queue_startstates(Alphabet,Start,Queue,NewQueue),<br />
process_queue(NewQueue,Alphabet).<br />
/*********************************************************************************************************************************<br />
queue_startstates(Alphabet:,Start:,Queue1,Queue2):<br />
Adds all states to Queue for which there are transitions to a state not equal<br />
to Start<br />
*********************************************************************************************************************************/<br />
queue_startstates([],_Start,Queue,Queue).<br />
queue_startstates([AlphabetSymbol|RestAlphabet],Start,Queue0,Queue) :-<br />
transition(Start,AlphabetSymbol,NewState), % should never fail<br />
((NewState = Start) -><br />
Queue1 = Queue0<br />
;<br />
( enqueue(NewState,Queue0,Queue1),<br />
assert(f(NewState,Start))<br />
)),<br />
queue_startstates(RestAlphabet,Start,Queue1,Queue).<br />
198