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

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!