Recognizer

Ein Recognizer (engl. to recognize: „erkennen“), auch Erkenner, ist in der Informatik ein bestimmtes abstraktes Maschinenmodell, ein sogenannter Automat. Dieser Automat stellt auf Grundlage einer formalen Grammatik fest, ob ein konkretes Wort Element einer formalen Sprache ist oder nicht. Die Sprache wird dabei durch die zugrundegelegte formale Grammatik definiert bzw. erzeugt. Der Recognizer entscheidet nur, ob ein Eingabetext hinsichtlich der Vorgaben „richtig“ oder „falsch“ ist; das unterscheidet ihn von einem Parser, der zusätzlich die analysierte grammatikalische Struktur beschreiben und ausgeben kann. Ein typisches Beispiel für einen Recognizer in der Automatentheorie ist der Kellerautomat.

Beispiel eines Recognizers

In der Programmiersprache Prolog können sogenannte Definite Clause Grammars (DCG) dazu verwendet werden, um manche kontextfreien Grammatiken zu erstellen und zu verarbeiten. Angewandt auf die maschinelle Sprachverarbeitung zeigt das folgende Beispiel einer DCG eine sehr einfache Grammatik, mit der eine kleine Menge deutscher Sätze analysiert werden kann. Die Grammatikregeln legen fest, dass sich ein Satz aus einer Nominal- (NP) und einer Verbalphrase zusammensetzt, die NP wiederum besteht aus einem Artikel und einem Nomen, wobei beide in Numerus und Genus übereinstimmen müssen. Im Lexikon werden die lexikalischen Einheiten als Terminalsymbole definiert. Die Prolog-Abfrage recognize('Liste von Wörtern') setzt den Recognizer in Gang, der entscheidet, ob eine Folge von Wörtern auf Grundlage der modellierten DCG grammatisch ist oder nicht.

 % Grammatikregeln:
 satz          --> nominalphrase, verbalphrase.
 nominalphrase --> artikel(Numerus, Genus), nomen(Numerus, Genus).
 verbalphrase  --> finites_verb.

 % Lexikon:
 artikel(singular, maskulin) --> [der].
 artikel(singular, feminin)  --> [die].
 nomen(singular, maskulin)   --> [hund].
 nomen(singular, feminin)    --> [katze].
 finites_verb                --> [bellt].

 recognize(Satz) :- satz(Satz, []).

Die Anfrage an den Recognizer ist erfolgreich (der Beispielsatz ist grammatisch):

 ?- recognize([der, hund, bellt]).
 Yes

Die Anfrage an den Recognizer ist nicht erfolgreich (der Beispielsatz ist ungrammatisch):

 ?- recognize([der, katze, bellt]).
 No

Siehe auch

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.