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.

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!