Aspekte der morphologischen Analyse des Deutschen - Universität ...
Aspekte der morphologischen Analyse des Deutschen - Universität ...
Aspekte der morphologischen Analyse des Deutschen - Universität ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Anhang C: Programmcode<br />
/*********************************************************************************************************************************<br />
write_quoted(List:,Filename::<br />
Writes the terms in List into the File "Filename" such that all atoms are quoted<br />
*********************************************************************************************************************************/<br />
write_quoted([],_File) :-<br />
!.<br />
write_quoted([Word/Lemma],File) :-<br />
write(File,''''), write(File,Word), write(File,''''),<br />
write(File,/),<br />
write(File,''''), write(File,Lemma), write(File,''''),<br />
!.<br />
write_quoted([Word/Lemma|Rest],File) :-<br />
write(File,''''), write(File,Word), write(File,''''),<br />
write(File,/),<br />
write(File,''''), write(File,Lemma), write(File,''''),<br />
write(File,','),<br />
write_quoted(Rest,File).<br />
/*********************************************************************************************************************************<br />
add_to_automation(Word/Lemma):<br />
inserts Word into the trie-like transition graph<br />
*********************************************************************************************************************************/<br />
add_to_automation(Word/Lemma) :-<br />
name(Word,CharList), % convert word to character list<br />
char_atom_list(CharList,AtomCharList), % convert char list to atoms<br />
startstate(StartState),<br />
add_to_trie(AtomCharList,Word,Lemma,StartState).<br />
% insert Word into the trie<br />
add_to_trie([],Word,Lemma,State) :-<br />
add_output(State,Word,Lemma). % update output function<br />
add_to_trie([Char|Chars],Word,Lemma,State) :-<br />
newstate(State,Char,NewState,Result),<br />
add_to_trie(Chars,Word,Lemma,NewState).<br />
/*********************************************************************************************************************************<br />
newstate(State:,Char:,NewState:,Result:)<br />
constructs a new transition from State with Char if there isn't alreday one.<br />
*********************************************************************************************************************************/<br />
newstate(State,Char,NewState,old_transition) :-<br />
transition(State,Char,NewState), % there is already a transition<br />
NewState \== fail,<br />
!.<br />
newstate(State,Char,NewState,new_transition) :-<br />
transition(State,Char,fail), % no transition,<br />
gensym(s,NewState), % so construct a new state<br />
add_transition(State,Char,NewState). % and add a new transition<br />
201