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 />

insert_segments_into_chart(Symbollist:,<br />

State:,Pos:,Word:):<br />

Segmentizes the word given in Symbollist into the known segments<br />

(determined by the lexicon) and inserts them via shift/3 into the chart.<br />

*********************************************************************************************************************************/<br />

insert_segments_into_chart([],_State,_Index,_Word).<br />

insert_segments_into_chart([Letter|Restletters],State,I,Word) :-<br />

non_failure_state(State,Letter,NonFailState),<br />

transition(NonFailState,Letter,NewState),<br />

output(NewState,WordList),<br />

(WordList = [] -> % is the output function defined ?<br />

true<br />

;<br />

% yes, so convert the items in output into segments<br />

( word_to_segment_conversion(WordList,I,Segments),<br />

shift_all(Segments,Word) % insert all segments into the chart<br />

)<br />

),<br />

J is I + 1,<br />

insert_segments_into_chart(Restletters,NewState,J,Word).<br />

/*********************************************************************************************************************************<br />

shift_all(Segment:, Word:)<br />

inserts all segments into the chart; Word is the word to be analyzed<br />

*********************************************************************************************************************************/<br />

shift_all([],_Word).<br />

shift_all([Segment|Segments],Word) :-<br />

shift(Segment,Word),<br />

(morphdebug(on) -><br />

( write('Inserted segment:'), write(Segment), nl, nl,<br />

complete_edges, nl,<br />

incomplete_edges, nl,<br />

get0(_)<br />

)<br />

;<br />

true<br />

),<br />

shift_all(Segments,Word).<br />

/*********************************************************************************************************************************<br />

word_segmentation(Atomlist:,Segments:)<br />

Standalone predicate<br />

segmentizes Word into Segments<br />

e.g. 'rechnest' becomes (with suitable lexicon entries): [seg(1,rechn,5),seg(6,st,8)]<br />

*********************************************************************************************************************************/<br />

word_segmentation(Word,Segments) :-<br />

% convert Word into a list of atoms, e.g. 'Hi' becomes ['H',i]<br />

atom_to_atomlist(Word,Symbollist),<br />

startstate(StartState),<br />

word_segmentation(Symbollist,StartState,1,[],ReverseSegments),<br />

% reverse the segment list<br />

reverse(ReverseSegments,Segments).<br />

195

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!