Aspekte der morphologischen Analyse des Deutschen - Universität ...
Aspekte der morphologischen Analyse des Deutschen - Universität ...
Aspekte der morphologischen Analyse des Deutschen - Universität ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
C.2 Der Chart-Parser<br />
Anhang C: Programmcode<br />
/*********************************************************************************************************************************<br />
Datei: wordchart.pl<br />
Beschreibung: Inkrementeller Chartparser für ambige Segmentierungen<br />
Als Grundlage dient die Implementation von Dörre/Naumann/Langer<br />
Autor: Thomas Hanneforth<br />
*********************************************************************************************************************************/<br />
:- use_module(library(terms)). % for subsume_chk/2<br />
:- op(1150,xfx,--->). % Operator für lexikalische Einsetzung<br />
:- op(1150,xfx,==>).<br />
:- op(1160,xfx,conditions).<br />
:- op(1170,fx,rule).<br />
/*********************************************************************************************************************************<br />
edge(Start,End,LHS,ClosedRHS,OpenRHS,PartitionPositions,Conditions)<br />
*********************************************************************************************************************************/<br />
:- dynamic edge/7.<br />
/*********************************************************************************************************************************<br />
init_chart/0:<br />
prepares the chart<br />
*********************************************************************************************************************************/<br />
init_chart :-<br />
clear_chart,<br />
startcat(StartCat),<br />
expand(0,StartCat). % expand the start symbol<br />
clear_chart :-<br />
retractall(edge(_,_,_,_,_,_,_)).<br />
/*********************************************************************************************************************************<br />
shift(Seg:,Word:)<br />
Inserts Seg into the chart and generate all edges involving this segment<br />
Word is the word to be analyzed<br />
*********************************************************************************************************************************/<br />
shift(seg(Begin,LexEntry,End),Word) :-<br />
Begin0 is Begin - 1,<br />
% check whether is's necessary to insert "unknown" segments<br />
add_unknown_segments(Begin0,Word),<br />
% find a lexical insertion rule<br />
(LexEntry ---> Cat),<br />
closure(Begin0,End,Cat,[term(LexEntry)],[],[End],true),<br />
fail.<br />
shift(_Seg,_Word).<br />
203