Die von Extraktionsskripten verwendete Abfragesprache

Eine Abfrage legt fest, welche Wörter oder Wortkombinationen ein Dokument enthalten muss. Die von Extraktionsskripten verwendete Abfragesprache basiert auf XML.

Eine einfache Abfrage könnte etwas so aussehen:

  • <Request> — Dies ist das Stammelement einer Abfrage.
  • <Query> — Dies ist eine grundlegende Abfrage. Eine grundlegende Abfrage enthält eine Abfragestruktur, die bestimmte Bedingungen angibt, die von der Kombination aus Wörtern erfüllt werden müssen, nach denen Sie suchen. Eine grundlegende Abfrage kann eine Kombination aus Wortformen einer Abfrage höherer Ebene sein. Dies ist ein erforderliches Element.
  • <Contain> — Gibt an, welche Wörter oder Wortkombinationen ein Dokument enthalten muss. Eine Abfrage kann aus nur einem <Contain> Element bestehen. Dies ist ein erforderliches Element. Dieses Element kann eine beliebige Anzahl der folgenden Elemente in beliebiger Reihenfolge enthalten:
    • <Required> — Gibt eine Wortform oder Unterabfrage an, die eine Wortkombination enthalten muss. Dies ist ein optionales Element.
    • <Optional> — Gibt eine Wortform oder eine Unterabfrage an, die eine Wortkombination enthalten kann. Dies ist ein optionales Element.
    • <Except> — Gibt eine Wortform oder eine Unterabfrage an, die eine Wortkombination nicht enthalten darf. Dies ist ein optionales Element.

Jedes der oben genannten Elemente muss die folgenden Elemente enthalten:

  • <Query> — Gibt an, ob eine Zeichenfolge von Wortformen in der Wortkombination enthalten sein oder von dieser ausgeschlossen werden soll.
  • <Form> — Gibt an, ob eine Wortform in einer Wortkombinationen enthalten sein oder von dieser ausgeschlossen werden soll.

Hinweis. Das Element <Contain> muss mindestens ein <Required> oder <Optional> Element enthalten.  

Attribute des Tags <Contain>

Zusätzliche Beschränkungen für eine Kombination von Wortformen kann in den Attributen des Tags <Contain> angegeben werden.

MinCount-Attribut für die Mindestanzahl von Elementen in einer Kombination von Wortformen

Die Mindestanzahl von Elementen in einer Kombination von Wortformen kann in einem MinCount-Attribut angegeben werden. Jedes Element ist entweder eine Wortform oder eine Zeichenfolge von Wortformen, die von der Unterabfrage zurückgegeben wird. Der Standardwert des Attributs lautet 1. Der Wert dieses Parameters darf nicht größer sein als die Gesamtanzahl von <Required> und <Optional> Elementen in der gegebenen Kombination von Wortformen.

Dieser Parameter ist nützlich, wenn eine Kombination aus Wortformen ein oder mehr <Optional> Elemente enthält.

Hier ist ein Beispiel für eine Abfrage, die nach "entweder erster oder zweiter Parameter" sucht:

In dem oben genannten Beispiel hat MinCount den Standardwert 1.

Die folgende Abfrage erfordert das Auftreten von drei der vier Wörtern, die in der Abfrage angegeben werden, von welchen zwei Wörter erforderlich sind:

Die Abfrage oben findet die folgenden Wortgruppen: "vier fette Frösche", "vier hektische Frösche" und "vier fette, hektische Frösche."

KeepOrder-Attribut für eine feste Reihenfolge von Elementen in einer Kombination von Wortformen

Um anzugeben, dass die Reihenfolge der Elemente in einer Kombination von Wortformen festgelegt ist, können Sie ein KeepOrder-Attribut des Typs Bool verwenden. Der Standardwert des Attributs lautet false.

Hier ist ein Beispiel für eine Abfrage, die angibt, dass die Reihenfolge der Elemente fest ist:

Die Kombination „erstes Drittel, zweites Drittel“ stimmt nicht mit der Abfrage überein, obwohl die Abfrage eine Wortfolge enthält, die in der erforderlichen Reihenfolge angeordnet ist.

KeepOrder gilt auch für alle <Except> Elemente. Wörter, die den Elementen <Except> in einer Abfrage entsprechen, dürfen nicht zwischen den Wörtern stehen, die sie in der Abfrage trennen. Sie können jedoch auch an anderen Stellen außerhalb der Abfragezeichenfolgen fester Reihenfolge auftreten.

Wenn wir beispielsweise die obige Abfrage ändern, indem wir das Wort "zweite" in ein <Except> Element platzieren, anstatt <Required>, entspricht ein Dokument mit der Kombination der Wortformen "erster dritter zweite" der Abfrage (aber das Wort "zweite" wird nicht im Ergebnis enthalten sein). Wenn wir die obige Abfrage durch Entfernen des KeepOrder-Attributs weiter modifizieren, wird ein Dokument, das die Kombination der Wortformen "erste dritte Sekunde" enthält, nicht in das Ergebnis einbezogen, da die Wortform "zweite" an keiner Stelle im Text eines Dokuments vorkommen darf .

Die Attribute MinDistance und MaxDistance für die Angabe von Abständen

Die Attribute MinDistance und MaxDistance geben den Mindest- und Höchstabstand zwischen den Elementen in einer Abfrage fest. Diese Attribute haben keine Standardwerte. Wird eines der zwei Attribute nicht angegeben, gelten keine Abstandsbeschränkungen.

Ein Abstand zwischen Elementen ist die Differenz der Koordinaten der beiden entsprechenden Wörter. Der Abstand zwischen zwei benachbarten Wörtern ist gleich 1 und der Mindestwert eines der beiden Attribute ist 1. MaxDistance muss größer als oder gleich MinDistance sein.

Der Abstand zwischen zwei Zeichenfolgen wird wie folgt berechnet. Wenn sich die Koordinaten der Zeichenfolgen nicht überlappen, wird der Abstand als Differenz zwischen der linken Koordinate der rechten Zeichenfolge und der rechten Koordinate der linken Zeichenfolge berechnet. Überlappen sich die Koordinaten der Zeichenketten, wird der Abstand mit 0 angenommen.

Beispielsweise beträgt in der Phrase "Der schnelle braune Fuchs ist über einen faulen Hund gesprungen" der Abstand zwischen den Zeichenfolgen "schneller Fuchs" und "fauler Hund" 3 und der Abstand zwischen den Zeichenfolgen "schneller Fuchs" und "brauner fauler Hund" 0.

Für die Elemente <Except> wird der Abstand zwischen Elementen wie folgt berechnet:

  • Wenn KeepOrder="true," darf das Element nicht innerhalb des angegebenen Abstands der benachbarten Elemente in der Zeichenfolge auftauchen (d. h. diese Elemente, zwischen denen sie in der Abfrage auftaucht). Gleichzeitig muss der Abstand zwischen den Nachbarn des Elements <Except> innerhalb des angegebenen Bereichs liegen.
  • Wenn KeepOrder="false,", darf das Element nicht innerhalb des angegebenen Abstands zu einem Element in der Zeichenfolge auftreten..

Beispiel 1:

Diese Abfrage findet Wortgruppen wie "Natriumkarbonat-Decahydrat" und "Natriumsulfat-Decahydrat."

Beispiel 2:

Diese Abfrage findet nur “Natriumsulfat-Decahydrat”, weil das Wort "Tetraborat" in den <Except></Except> Tags eingebettet ist und der maximale Abstand zwischen "Tetraborat" und "Natrium" zwei Wörter beträgt.

<Form> Element für das Abrufen einer Wortform

Eine Abfrage für eine Wortform wird mithilfe eines<Form> Elements festgelegt. Dieses Element kann die folgenden Elemente enthalten:

  • <Attributes> — Ein optionales Element, das eine Abfrage für die Attribute einer Wortform enthält.
  • <Text> — Ein optionales Element, das den Unicode-Text einer Wortform enthält.
    Wenn kein Wort aus dem Text angegeben wird, stimmt jedes Wort mit der Abfrage überein, die mit der Attributabfrage übereinstimmt, die in diesem Fall erforderlich ist.
  • Zusätzliche Suchbedingungen für eine Wortform kann in den Attributen des Tags <Form> festgelegt werden.

Das Attribut SearchType für das Festlegen der Suche nach dem Typ von Wortform

Der Typ von Wortformsuche kann im Attribut SearchType des Tags <Form>festgelegt werden. Dieses Attribut kann die folgenden Werte haben:

  • AllFormsSearch – Das Programm sucht nach allen Formen des Wortes.
  • ExactSearch – Das Programm sucht nur nach der angegebenen Form des Wortes.
  • PrefixSearch – Das Programm sucht nach allen Formen, die der festgelegten Form vorangestellt sind.
  • FuzzySearch – Das Programm wird eine unscharfe Suche nach dem angegebenen Wort durchführen. FuzzySearch könnte dann nützlich sein, wenn Sie berechtigte Gründe haben, anzunehmen, dass Ihre Texte OCR-Fehler enthalten könnten und ExactSearch nicht funktionieren wird. FuzzySearch kann nur für Wörter verwendet werden, die mindestens drei Zeichen enthalten. Für Wörter, die zwischen 3 und 5 Zeichen lang sind, erlaubt FuzzySearch 1 OCR-Fehler. Für Wörter mit mehr als 5 Zeichen erlaubt FuzzySearch bis zu 2 OCR-Fehler.
  • FuzzyPrefixSearch – Das Programm wird eine unscharfe Suche für alle Formen durchführen, denen die festgelegte Form vorangestellt ist.

Das Attribut SearchType ist optional und standardmäßig festgelegt auf AllFormsSearch.

CaseSensitive-Attribut für Suche mit Berücksichtigung von Groß-/Kleinschreibung

Für eine Suche mit Berücksichtigung von Groß-/Kleinschreibung kann das Attribut CaseSensitive des Tags <Form> verwendet werden. Dieses Attribut ist optional und standardmäßig auf false festgelegt.

Hier ist eine Abfrage, die die Verwendung von Attributen veranschaulicht für den

<Form>

Tag:

Diese Abfrage sucht nach der Abkürzung WHO in exakt dieser Form, wodurch eine große Anzahl redundanter Ergebnisse mit "who", "whom" oder "whose" vermieden wird.

<Attributes> Element für das Abrufen von Wortformattributen

Eine Abfrage nach Wortformattributen ist ein logischer Ausdruck, der mit den Operatoren AND, OR und NOT erstellt wird. NOT ist ein unärer Operator, während AND und OR n-stufig sind. Die Operanden dieses logischen Ausdrucks sind Werte vom Typ Bool. Dieser logische Ausdruck ist in der Form eines Baumes geschrieben. Das Ergebnis der Abfrage sind die Wortformen im Text eines Dokuments, die diesen logischen Ausdruck erfüllen.

Verwenden Sie zum Abrufen von Wortformattributen ein <Attributes>-Element . Dieses Element kann die folgenden Elemente enthalten:

  • <Attribute> — Dieses Element enthält den Text der erforderlichen Wortattribute. Es ist ein Blatt des Baumes mit logischen Ausdrücken.
  • <Or> ­— Der Operator OR ist ein Knoten in dem Baum.
  • <And> — Der Operator AND ist ein Knoten in dem Baum.
  • <Not> — Der Operator NOT ist ein Knoten im Baum.

Das Element <Not> ist auf die gleiche Weise aufgebaut wie das Element <Attributes> und kann eines der oben genannten Elemente enthalten.

Die Elemente <Or> und <And> müssen mindestens zwei der oben genannten Elemente enthalten.  

Der <Attribute> enthält ein optionales SearchType-Attribut, mit dem die Art von Attributsuche festgelegt wird. Dieses Attribut kann die folgenden Werte haben:

  • ExactSearch — Das Programm sucht nach dem Attribut in genau derselben Form wie in der Abfrage angegeben.
  • PrefixSearch — Das Programm sucht nach Attributen, denen der festgelegte Text vorangestellt ist.

Die Suche nach Attributen erfolgt immer unabhängig von der Groß- und Kleinschreibung. Das Attribut SearchType ist standardmäßig auf ExactSearch festgelegt.

Angenommen, wir haben ein Dokument, in dem wir bereits identifiziert haben:

  • NER-Objekte (durch Aufruf der Funktion ExtractNerObjects)
  • Wortformen aus einem Benutzerwörterbuch mit dem Namen "Wörterbuch” (durch Aufruf der Funktion ExtractWordsFromUserDictionary)
  • alle Objekte, die einen regulären Ausdruck erfüllen, den wir als Parameter übergeben haben (durch Aufruf der Funktion ExtractRegularExpression)

Nehmen wir außerdem an, dass die resultierende Auflistung dieser Objekte den Namen "regExp" trägt.

Hinweis. Der Name der Sammlung kann in XML-Abfragen verwendet werden, die für das indizierte Dokument ausgeführt werden. Auf die resultierende Sammlung selbst kann über ihren Namen zugegriffen werden.

Dann sieht eine Formularattributabfrage ungefähr so ​​aus:

Diese Abfrage sucht nach einer Wortgruppe mit zwei Wörtern, wobei das erste Wort mit dem angegebenen regulären Ausdruck übereinstimmen muss und das zweite Wort ein zulässiger Name einer Organisation ist.

Die Ziffern nach den Attributnamen dienen dazu, die erforderlichen Wörter in erkannten Mehrwortobjekten herauszufiltern, die mit den jeweiligen Attributen indexiert wurden. Beispielsweise kann ein regulärer Ausdruck mit dem Namen "Datum" ein Datum im Format "31. Mai 2019" finden. Dann entspricht Datum 1 dem Wort "Mai", Datum 2 entspricht "31" und Datum 3 entspricht "2019".

<FormSet> Element für das Abrufen einer Reihe von Wortformen

Eine Abfrage für mehrere Wortformen wird mithilfe eines <FormSet> Elements festgelegt.

Bei diesem Abfragetyp werden mehrere Form-Abfragen mit OR kombiniert. Es entspricht einer <Query> Abfrage, bei der alle Unterabfragen optionale Wortform-Abfragen sind.

Für eine <FormSet> Abfrage können Sie jedoch eine Attributabfrage festlegen, die allen Formularen gemeinsam ist. Dies ermöglicht eine effizientere Suche, wenn mit ExactSearch alle Wortformen gefunden werden, für jede Form eine Attributabfrage vorhanden ist und alle diese Attributabfragen ein gemeinsames Fragment aufweisen.

Ein <FormSet> Element enthält die folgenden Elemente:

  • <Attributes> — Dies ist ein optionales Element, das eine Abfrage für Formattribute enthält. Diese Abfrage wird mit Formattributabfragen mithilfe von AND kombiniert.
  • <Form> — Dies ist ein erforderliches Element, das eine Abfrage für eine Wortform enthält. Ein <FormSet> Element muss mindestens ein <Form> Element enthalten.

Beispiel für die Abfrage einer XML-Adressextraktion

Das Ergebnis der Abfrage einer Adressextraktion ist eine Textzeichenfolge, die das erste Wort des Landes, das erste Wort der Straße, das erste Wort der Stadt, das erste Wort des Staates und das erste Wort der Postleitzahl enthält (in dieser Reihenfolge und unter der Voraussetzung, dass sie nicht mehr als 5 Wörter voneinander entfernt sind).

Die Folge von aufeinanderfolgenden Wörtern, aus denen ein Bestandteil (z. B. ein Straßenname) besteht, wird im Index zusätzlich ab 1 beginnend durchnummeriert.

var xmlQuery = "<Request> \
<Query> \
    <Contain MaxDistance=\"5\" KeepOrder=\"true\"> \
         <Optional> \
              <Form><Attributes><Attribute>NerCountry1</Attribute></Attributes></Form> \
         </Optional> \
         <Optional> \
              <Form><Attributes><Attribute>NerStreet1</Attribute></Attributes></Form> \
         </Optional> \
         <Optional> \
              <Form><Attributes><Attribute>NerCity1</Attribute></Attributes></Form> \
         </Optional> \
         <Optional> \
              <Form><Attributes><Attribute>NerState1</Attribute></Attributes></Form> \
         </Optional> \
         <Required> \
              <Form><Attributes><Attribute>NerZipCode1</Attribute></Attributes></Form> \
         </Required> \
    </Contain> \
</Query> \
</Request>";

Das Ergebnis der Abfrage einer Adressextraktion wird in einem sich wiederholenden xmlQueryResult-Feld aufgezeichnet:
this.RunQueryAndSaveToField( xmlQuery, "query", "xmlQueryResult" );

12.04.2024 18:16:01

Please leave your feedback about this article

Usage of Cookies. In order to optimize the website functionality and improve your online experience ABBYY uses cookies. You agree to the usage of cookies when you continue using this site. Further details can be found in our Privacy Notice.