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