4. 4. Algorithmen und Datenstrukturen in deskriptiven Programmiersprachen



Ähnliche Dokumente
Formale Sprachen und Grammatiken

Grammatiken in Prolog

Parsing-EinfŸhrung Ð 1

Grundlagen der Künstlichen Intelligenz

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme und Grammatikregeln

Was ist ein Compiler?

Grundbegriffe der Informatik

Grundbegriffe der Informatik

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

Binäre Suchbäume (binary search trees, kurz: bst)

Theoretische Informatik I

Äquivalente Grammatiken / attributierte Grammatik

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

Programmiersprachen und Übersetzer

7. Formale Sprachen und Grammatiken

Grundbegriffe der Informatik

Theorie der Informatik

IT-Basics 2. DI Gerhard Fließ

Theoretische Informatik I

Multimedia Technologie II

Formale Sprachen, reguläre und kontextfreie Grammatiken

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

Grundlagen der Informatik II. Teil I: Formale Modelle der Informatik

Informatik I Tutorium WS 07/08

Kapitel 2. Methoden zur Beschreibung von Syntax

10 Erweiterung und Portierung

Hueber Wörterbuch Deutsch als Fremdsprache Basiswissen kompakt

1. Formale Sprachen 1.2 Grammatiken formaler Sprachen

Übergang vom Diplom zum Bachelor

Einführung Computerlinguistik. Konstituentensyntax II

Definition von domänenspezifischen Sprachen mit Xtext: Einführung. 19. November 2014

Alphabet, formale Sprache

Terme stehen für Namen von Objekten des Diskursbereichs (Subjekte, Objekte des natürlichsprachlichen Satzes)

Theoretische Informatik 2 (WS 2006/07) Automatentheorie und Formale Sprachen 19

Wärmebildkamera. Arbeitszeit: 15 Minuten

Programmieren in Haskell Einführung

OLXFil er Anleitung

Benutzeranleitung zur Bilddatenbank

Einführung in die Computerlinguistik

Installation der Demoversion vom M-Doc AutoSigner

Theoretische Grundlagen der Informatik

NUTZUNG DER MODELLBAUFRÄSE. Prof. Dipl.-Ing. M.A. Marco Hemmerling Dipl.-Ing. Guido Brand Mona Makebrandt Tina Töpfer Enver Beriev

Formale Sprachen. Der Unterschied zwischen Grammatiken und Sprachen. Rudolf Freund, Marian Kogler

Webseiten mit fragwürdigen Aufrufen von "spy & track" - Unternehmen

Kapitel 10 Aktive DBMS

Neuer Releasestand Finanzbuchhaltung DAM-EDV E Inhaltsverzeichnis. 1. Neuerungen Schnittstelle Telebanking mit IBAN und BIC...

Stammdatenanlage über den Einrichtungsassistenten

Word 2010 Schnellbausteine

Logische Folgerung. Definition 2.11

Errata-Liste zum Kurs: Einführung in XML (2. Auflage)

Funktionale Programmierung mit Haskell

Zusammenfassung. 1 Wir betrachten die folgende Signatur F = {+,,, 0, 1} sodass. 3 Wir betrachten die Gleichungen E. 4 Dann gilt E 1 + x 1

Übung Theoretische Grundlagen Nachtrag zur Vorlesung Dirk Achenbach

Mai Hauptseminar: Nichtrelationale Datenbanken Historisch-Kulturwissenschaftliche Informationsverarbeitung Universität zu Köln

Sichere Anleitung Zertifikate / Schlüssel für Kunden der Sparkasse Germersheim-Kandel. Sichere . der

Anleitung für die Teilnahme an den Platzvergaben "Studio II, Studio IV und Studio VI" im Studiengang Bachelor Architektur SS15

Flächenvereinigung über DB-Attribut und Wertklassenbildung mit ToPas-Makro

GSD-Radionik iradionics Android-App

Grammatiken. Einführung

Webisco forte. Bedienungsanleitung. Version 3. Seite 1

Quelltextähnlichkeit

Mächtigkeit von WHILE-Programmen

Softwareentwicklungspraktikum Sommersemester Grobentwurf

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

Win-Digipet V 9.2 Premium Edition Wie bastele ich mir steuerbare Kontakte. Wie bastele ich mir steuerbare Kontakte? -Quick-And-Dirty-Lösung-

1 Syntax von Programmiersprachen

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.

Anleitung für Abfragen in der. Herold Online Marketing Datenbank

Installationsanleitung. Ab Version

2.11 Kontextfreie Grammatiken und Parsebäume

Um die Rücklagen ordnungsgemäß zu verbuchen, ist es wichtig, Schritt-für-Schritt vorzugehen:

ANWENDUNG DES WIENER STADTWERKE-LOGOS

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

Objektorientierte Programmierung OOP

Voraussetzung. Anleitung. Gehen Sie auf Start Einstellungen und suchen Sie hier den Eintrag Datenverbindungen oder Verbindungen. Öffnen Sie diesen.

Erstellen und Bearbeiten von Inhalten (Assets)

BILDUNG VON BIETERGEMEINSCHAFTEN ZUR ERFÜLLUNG DER ANFORDERUNGEN VON ARTIKEL 263 DES DPR 207/2010 LEITFADEN

IBIS Professional. z Dokumentation zur Dublettenprüfung

1. Die Signaturen auf den PDF-Dokumenten der Deutschen Rentenversicherung werden als ungültig ausgewiesen oder mit Gültigkeit unbekannt gekennzeichnet

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Zentralabitur 2017 Informatik

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Compiler, Übersetzer. Allgemeine Erklärung / Definition

Das Seminar ist eine Prüfungsleistung für Bachelor und Masterstudierende der Informatik!

S7-Hantierungsbausteine für R355, R6000 und R2700

Deutsch ohne Grenzen: Niveau A1

2) Geben Sie in der Anmeldemaske Ihren Zugangsnamen und Ihr Passwort ein

AutoTexte und AutoKorrektur unter Outlook verwenden

Prolog basiert auf Prädikatenlogik

Zentralabitur 2018 Informatik

myfactory.go! - Verkauf

Übung - Datenmigration in Windows Vista

Die Tabellenvorlage im Katalog für Tabellen speichern... 2 Weiteres zu Schnellbausteinkatalogen EDV + Didaktik - Dr. Viola Vockrodt-Scholz

Kapitel 2: Formale Sprachen Kontextfreie Sprachen. reguläre Grammatiken/Sprachen. kontextfreie Grammatiken/Sprachen

A-CERT ADVANCED pdf-signaturprüfung einrichten 2008

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)

Serienbrieferstellung in Word mit Kunden-Datenimport aus Excel

Vereinsverwaltung DFBnet Verein. Anleitung Familienbeiträge und Gemeinschaften

Transkript:

Kapitel Kapitel 4 Deskriptive Programmierung SS 2008 4. 4. Algorithmen und Datenstrukturen in in deskriptiven Programmiersprachen Deskriptive Programmierung 1

Sprachverarbeitung in in Prolog Prolog Prolog wurde ursprünglich für die Verarbeitung von natürlicher Sprache entwickelt. Colmerauer 1972: Mensch-Machine Machine Dialog in natürlicher Sprache Die meisten Prolog-Systeme bieten ein fertiges Konzept für die Verarbeitung geschriebener Sprache. - Die Sprache wird mit Hilfe kontextfreier Grammatiken spezifiziert. - Die Grammatiken werden automatisch in einen Prolog-Parser Parser übersetzt. Deskriptive Programmierung 2

Grammatikregeln Formale Sprachen können mit Hilfe kontextfreier Grammatiken definiert werden. Definition: Eine kontextfreie Grammatik G ist definiert als ein Quadrupel G = (N, T, P, S), wobei gilt: - N ist eine endliche Menge von Nichtterminalsymbolen. - T ist eine endliche Menge von Terminalsymbolen. - P N (N T) * ist eine endliche Menge von Produktionsregeln. Eine Regel wird üblicherweise durch X γ dargestellt, wobei X ein Nichtterminalsymbol und γ eine (evtl. leere) Symbolfolge ist. - S N ist das (nichtterminale( nichtterminale) Startsymbol. Deskriptive Programmierung 3

Kontextfreie Grammatiken Beispiel Beispiel Startsymbol Programm Klauselfolge Klauselfolge Klauselfolge Programmklausel Klauselfolge Programmklausel Klausel Programmklausel Anfrage Klausel Faktum Klausel Regel Faktum Literal '.' Regel Literal ':-' Alternativen '.' Anfrage ':-' Alternativen '.' Alternativen LiteralCutFolge Alternativen LiteralCutFolge ';' Alternativen LiteralCutFolge LiteralCut LiteralCutFolge LiteralCut ',' LiteralCutFolge LiteralCut Literal LiteralCut '!' Nichtterminalsymbol Terminalsymbol Produktionsregeln Deskriptive Programmierung 4

Grammatikregeln in in (erweitertem) Prolog Prolog DCG-Notation: definite clause grammar (in den meisten Prologsystemen vorhanden) Startsymbol satz --> subjekt, verb, objekt. subjekt --> artikel, substantiv. objekt --> artikel, substantiv. artikel --> [das]. artikel --> [einen]. substantiv --> [kind]. substantiv --> [apfel]. verb --> [isst]. Nichtterminalsymbol Terminalsymbol Produktionsregeln Deskriptive Programmierung 5

Zugehöriges Parserprogramm in in normalem Prolog: Prolog: naive naive Version Version satz(l) :- append(l1, L2, L12), append(l12, L3, L), subjekt(l1), verb(l2), objekt(l3). subjekt(l) :- append(l1, L2, L), artikel(l1), substantiv(l2). objekt(l) :- append(l1, L2, L), artikel(l1), substantiv(l2). artikel([das]). artikel([einen]). substantiv([kind]). substantiv([apfel]). verb([isst]). Deskriptive Programmierung 6

Effizientere Version Version des des Parsers Parsers satz(l,r) :- subjekt(l,l1), verb(l1,l2), objekt(l2,r). subjekt(l,r) :- artikel(l,l1), substantiv(l1,r). objekt(l,r) :- artikel(l,l1), substantiv(l1,r). artikel([das R],R). artikel([einen R],R). substantiv([kind R],R). substantiv([apfel R],R). verb([isst R],R). Deskriptive Programmierung 7

Linksrekursive Grammatikregeln Problematisch sind linksrekursive Grammatikregeln: - literalcutfolge --> literalcut. literalcutfolge --> literalcutfolge, comma, literalcut. dazugehörige intern generierte Analyseregeln: - literalcutfolge(l, R) :- literalcut(l, R). - literalcutfolge(l, R) :- literalcutfolge(l, L1), comma(l1, L2), literalcut(l2, R). Rekursiver Abstieg, ohne Elemente zu verarbeiten. Diese sind nicht nur in Prolog ein Problem, sondern generell für Top-down-Parser. Deskriptive Programmierung 8

Parser-Generierung Synthese (1) (1) Bislang: Parser, der feststellt, ob der Satz zur definierten Sprache gehört. Ziel: Weiterverarbeitung der Sätze -Beispiel: Übersetzung ins Englische (oder in Maschinensprache) "Gleich geht es los" - Konstruktion eines Syntaxbaums "Equal goes it loose". "Das Kind isst einen Apfel" satz( nominalphrase( artikel(das), substantiv(kind)), nominalphrase (subjekt) satz verb nominalphrase (objekt) verb(isst), nominalphrase( artikel(einen), substantiv(apfel))) artikel substantiv isst artikel substantiv das kind einen apfel Deskriptive Programmierung 9

Parser-Generierung Synthese (2) (2) satz(satz(s,v,o)) --> subjekt(s), verb(v), objekt(o). subjekt(nominalphrase(a,s)) --> artikel(a), substantiv(s). objekt(nominalphrase(a,s)) --> artikel(a), substantiv(s). artikel(artikel(das)) --> [das]. artikel(artikel(einen)) --> [einen]. substantiv(substantiv(kind)) --> [kind]. substantiv(substantiv(apfel)) --> [apfel]. verb(verb(isst)) --> [isst].?- satz(sb, [das, kind, isst, einen, apfel, mehr], Rest). SB = satz(nominalphrase(artikel(das), substantiv(kind)), verb(isst), nomialphrase(artikel(einen), substantiv(apfel))) Rest = [mehr[ mehr] Deskriptive Programmierung 10

Parser-Generierung Semantische Analyse Analyse (1) (1) Grammatikalisch falsche Sätze sollen als fehlerhaft erkannt werden, z.b.: "Die Kinder isst einen Apfel." vs. "Die Kinder essen einen Apfel." satz(satz(s,v,o)) --> subjekt(s,num), verb(v,num), objekt(o). subjekt(nominalphrase(a,s),num) --> artikel(a),substantiv(s,num). objekt(nominalphrase(a,s)) --> artikel(a), substantiv(s,_). substantiv(substantiv(kind), singular) --> [kind]. substantiv(substantiv(kinder), plural) --> [kinder]. substantiv(substantiv(apfel), singular) --> [apfel] verb(verb(isst), singular) --> [isst]. verb(verb(essen), plural) --> [essen]. artikel(artikel(das)) --> [das]. artikel(artikel(die)) --> [die]. artikel(artikel(einen)) --> [einen]. Deskriptive Programmierung 11

Parser-Generierung Zusatzbedingungen satz(satz(s,v,o)) --> subjekt(s, Num), verb(v, Num), objekt(o). subjekt(nominalphrase(a,s), Num) --> artikel(a), substantiv(s, Num). objekt(nominalphrase(a,s)) --> artikel(a), substantiv(s,_). artikel(artikel(a)) --> > [A], { wb_artikel(a) ) }.} substantiv(substantiv(n), Num) --> > [N], { wb_substantiv(n, Num) ) }.} verb(verb(v), Num) --> > [V], { wb_verb(v, Num) ) }.} Wörter-Datenbank wb_artikel(das). wb_artikel(die). wb_artikel(einen). wb_substantiv(kind, singular). wb_substantiv(kinder, plural). wb_substantiv(apfel, singular). wb_verb(isst, singular). wb_verb(essen, plural). Aufrufe beliebiger Zusatzbedingungen, d.h. beliebiger Prolog-PrädikatePrädikate Deskriptive Programmierung 12

Deskriptive Programmierung 13