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.

store(edge(Begin,End,Cat,Closed,Open,Positions,_)) :-<br />

edge(Begin,End,Cat0,Closed0,Open0,_,_),<br />

subsumes_chk(Cat0,Cat),<br />

subsumes_chk(Closed0,Closed),<br />

subsumes_chk(Open0,Open),<br />

!, fail.<br />

Anhang C: Programmcode<br />

% special case: completed edges => test for the conditions<br />

store(edge(Begin,End,Cat,Closed,[],Positions,Conditions)) :-<br />

call(Conditions),<br />

assert(edge(Begin,End,Cat,Closed,[],Positions,Conditions)).<br />

store(edge(Begin,End,Cat,Closed,Open,Positions,Conditions)) :-<br />

Open \== [],<br />

assert(edge(Begin,End,Cat,Closed,Open,Positions,Conditions)).<br />

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

Structure generation<br />

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

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

generate_structure(Cat:,Wordlen:,<br />

Structures:,<br />

Collect all structures for the word<br />

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

generate_structures(StartCat,Wordlen,Structures) :-<br />

findall( <strong>des</strong>c(FS,Structure),<br />

generate_structure(0,Wordlen,StartCat,Structure,FS),<br />

Structures).<br />

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

generate_structure(From:,To:,Mother:,Structure:,<br />

FS:):<br />

Generate a single structure in the chosen representation format<br />

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

% Case 1: Terminal symbols<br />

generate_structure(From,To,Mother,Structure,Mother) :-<br />

edge(From,To,Mother,[term(Word/_Lemma)],[],_Positions,_),<br />

make_lextree(Mother,Word,Structure).<br />

% Case 2: Terminal symbols of type unknown<br />

generate_structure(From,To,Mother,Structure,Mother) :-<br />

edge(From,To,Mother,[term(unknown(Unknown))],[],_Positions,_),<br />

name(Unknown,UnknownList),<br />

concat(["unknown(",UnknownList,")"],Charlist),<br />

name(UnknownNode,Charlist),<br />

make_lextree(Mother,UnknownNode,Structure).<br />

% Case 3: Nonterminal symbols<br />

generate_structure(From,To,Mother,Structure,Mother) :-<br />

edge(From,To,Mother,Closed,[],Positions,_),<br />

structure_of_subconstituents(Closed,From,Positions,StructuresList),<br />

make_pstree(Mother,StructuresList,Structure).<br />

structure_of_subconstituents([],_From,_Positions,[]).<br />

structure_of_subconstituents([Cat|RestCats],From,[Pos|RestPos],[Struct|Rest]) :-<br />

generate_structure(From,Pos,Cat,Struct,_),<br />

structure_of_subconstituents(RestCats,Pos,RestPos,Rest).<br />

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

Different structure building primitives<br />

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

205

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!