From d53bce8b6380e772590fc9685c77c07501a759eb Mon Sep 17 00:00:00 2001 From: maria wie <61782299+maria-wie@users.noreply.github.com> Date: Tue, 25 Jun 2024 10:22:46 +0200 Subject: [PATCH] Update content/resources/corpus-query-language-im-austrian-media-corpus (#232) revised website links and added English abstract --- .../index.mdx | 1122 +++++++++-------- 1 file changed, 601 insertions(+), 521 deletions(-) diff --git a/content/resources/corpus-query-language-im-austrian-media-corpus/index.mdx b/content/resources/corpus-query-language-im-austrian-media-corpus/index.mdx index 89aafb505..95dc402fe 100644 --- a/content/resources/corpus-query-language-im-austrian-media-corpus/index.mdx +++ b/content/resources/corpus-query-language-im-austrian-media-corpus/index.mdx @@ -1,24 +1,35 @@ --- +title: Corpus Query Language im Austrian Media Corpus +summary: >- + This is a basic tutorial on how to perform queries in the corpus query engine + Sketch Engine. More specifically, it focuses on introducing Sketch Engine’s + “Corpus Query Language” (CQL). + + The tutorial is aimed to provide users of the Austrian Media Corpus (amc) with + an easy entry point to query the amc using the Sketch Engine and CQL. + Therefore the tutorial is deliberately provided in German language. All + examples in the tutorial are directly taken from the amc. +locale: de authors: - pirker-hannes editors: - koenigshofer-elisabeth -license: cc-by-4-0 -locale: de publicationDate: 2023-04-27 -summary: Diese Resource stellt den Austria Media Corpus (amc) und seine Nutzungsmöglichkeiten vor. Im Besonderen wird die Corpus Query Language (CQL) erklärt. +version: 1.0.0 tags: - corpus -title: Corpus Query Language im Austrian Media Corpus +license: cc-by-4-0 toc: true -version: 1.0.0 --- ## Lernziele -- das Austrian Media Corpus (amc) kennenlernen -- einen Einblick in die Funktionalität der Korpussuchmaschine Sketch/NoSketch Engine erhalten -- einfache Suchabfragen im amc durchführen -- mit der Corpus-Query-Language (CQL) komplexere Suchabfragen formulieren +* das Austrian Media Corpus (amc) kennenlernen + +* einen Einblick in die Funktionalität der Korpussuchmaschine Sketch/NoSketch Engine erhalten + +* einfache Suchabfragen im amc durchführen + +* mit der Corpus-Query-Language (CQL) komplexere Suchabfragen formulieren ## Einführung @@ -26,7 +37,7 @@ version: 1.0.0 Das Austrian Media Corpus (amc) ist eines der größten Textkorpora in deutscher Sprache. In ihm sind Texte der österreichischen Printmedienlandschaft der letzten Jahrezehnte versammelt. Der Inhalt des amc kann mit dem Schlagwort "journalistische Prosa" zusammengefasst werden: er umfasst Komplettausgaben von Zeitungen und Zeitschriften, Agenturmeldungen der Austria Presse Agentur (APA) sowie Transkripte von TV-Produktionen (vorwiegend von Nachrichtensendungen). -Das amc kann auf Anfrage genutzt werden, allerdings ausschließlich für Zwecke der wissenschaftlichen Forschung und Lehre und nur für die Untersuchung _sprachwissenschaftlicher_ Fragestellungen. Ermöglicht wird das amc durch eine Kooperation zwischen der Austria Presse Agentur (APA) und der Österreichischen Akademie der Wissenschaften (ÖAW), konkret dem Austrian Centre for DigitalHumanities and Cultural Heritage (ACDH-CH). Die APA sammelt die Textproduktion der Printmedien und stellt diese dem ACDH-CH zur Verfügung. +Das amc kann auf Anfrage genutzt werden, allerdings ausschließlich für Zwecke der wissenschaftlichen Forschung und Lehre und nur für die Untersuchung *sprachwissenschaftlicher* Fragestellungen. Ermöglicht wird das amc durch eine Kooperation zwischen der Austria Presse Agentur (APA) und der Österreichischen Akademie der Wissenschaften (ÖAW), konkret dem Austrian Centre for Digital Humanities and Cultural Heritage (ACDH-CH). Die APA sammelt die Textproduktion der Printmedien und stellt diese dem ACDH-CH zur Verfügung. Das amc wird jährlich am Jahresanfang um die Publikationen des soeben abgelaufenen Jahres aktualisiert, d.h. der aktuelle Datenbestand des amc reicht jeweils bis zum Ende des Vorjahrs. @@ -35,20 +46,19 @@ Das amc wird jährlich am Jahresanfang um die Publikationen des soeben abgelaufe Das ACDH-CH ergänzt die Texte, die von der APA zur Verfügung gestellt wurden, mithilfe linguistischer Annotationsverfahren wie Lemmatisierung, Wortartenzuordnung (Part-of-Speech tagging) oder Named Entitiy Recognition. Anschließend werden die Ergebnisse vom ACDH-CH in der Korpussuchmaschine NoSketch Engine online verfügbar gemacht. Dieses Werkzeug erlaubt die Suche und Auswertung der signifikanten Textmengen im amc und macht das Korpus in Kombination mit den verfügbaren Annotationen erst für die effiziente Bearbeitung quantitativer und qualitativer Forschungsfragen tauglich. -Um das [amc nutzen](https://amc.acdh.oeaw.ac.at/access-conditions/) zu können, ist eine [Registrierung](https://amc.acdh.oeaw.ac.at/registrierung/) auf der Website notwendig. Sie erhalten wenig später Ihre Zugangsdaten und können auf die [Vollversion](https://noske-amc.acdh.oeaw.ac.at/crystal/) zugreifen. + Um das [amc nutzen](https://amc.acdh.oeaw.ac.at/access-conditions/) zu können, ist eine [Registrierung](https://amc.acdh.oeaw.ac.at/registrierung/) auf der Website notwendig. Sie erhalten wenig später Ihre Zugangsdaten und können auf die [Vollversion](https://noske-amc.acdh.oeaw.ac.at/crystal/) zugreifen. -Sollten Sie an einem geförderten Projekt arbeiten, wird von der APA eine Nutzungsgebühr erhoben. In diesem Fall nehmen Sie bitte mit dem amc Kontakt auf. Ansonsten ist der Zugang nach [Registrierung](https://amc.acdh.oeaw.ac.at/registrierung/) und Akzeptieren der [Nutzungsbedingungen](https://amc.acdh.oeaw.ac.at/nutzungsbedingungen/) kostenfrei. + Sollten Sie an einem geförderten Projekt arbeiten, wird von der APA eine Nutzungsgebühr erhoben. In diesem Fall nehmen Sie bitte mit dem amc Kontakt auf. Ansonsten ist der Zugang nach [Registrierung](https://amc.acdh.oeaw.ac.at/registrierung/) und Akzeptieren der [Nutzungsbedingungen](https://amc.acdh.oeaw.ac.at/nutzungsbedingungen/) kostenfrei. -Zu Übungszwecken finden Sie auf der amc-Website Zugang zu einer minimalistischen [Demo-Version](https://demo-amc.acdh.oeaw.ac.at/crystal/#open), für die Sie keinerlei Registrierung benötigen. + Zu Übungszwecken finden Sie auf der amc-Website Zugang zu einer minimalistischen [Demo-Version](https://demo-amc.acdh.oeaw.ac.at/crystal/#open), für die Sie keinerlei Registrierung benötigen. -In der folgenden Lernressource machen Sie sich mit grundlegenden Begrifflichkeiten vertraut und erlernen das Formulieren von Suchanfragen in der **Sketch Engine/NoSketch Engine**. Insbesondere wird Ihnen die in dieser Korpussuchmaschine verwendete Abfragessprache **Corpus Query Language -(CQL)** näher gebracht. +In der folgenden Lernressource machen Sie sich mit grundlegenden Begrifflichkeiten vertraut und erlernen das Formulieren von Suchanfragen in der **Sketch Engine/NoSketch Engine**. Insbesondere wird Ihnen die in dieser Korpussuchmaschine verwendete Abfragessprache **Corpus Query Language (CQL)** näher gebracht. -Die Bereitstellung des amc erfolgt über die webbasierte Korpussuchmaschine **[NoSketch Engine (NoSkE)](https://nlp.fi.muni.cz/trac/noske)**. Dabei handelt es sich um eine _open source_ Version der **[Sketch Engine (SkE)](https://www.sketchengine.eu)**. Der **[Vergleich von Sketch Engine und NoSketch Engine](https://www.sketchengine.eu/nosketch-engine/)** zeigt, wie sich die NoSkE von der kommerziellen SkE durch den Wegfall einiger Funktionalitäten unterscheidet. Von den zahlreichen Dokumentationen und Benutzungshilfen, die online zur Sketch Engine auffindbar sind, sind daher nicht alle für die NoSketch Engine relevant. Für die in dieser Lernunterlage vorgestellten Kernfunktionalitäten bestehen allerdings _keine_ Unterschiede zwischen den beiden Varianten. Die verlinkten Informationen und Anleitungen zur Sketch Engine sind daher gleichermaßen für die NoSketch Engine gültig. + Die Bereitstellung des amc erfolgt über die webbasierte Korpussuchmaschine [**NoSketch Engine (NoSkE)**](https://nlp.fi.muni.cz/trac/noske). Dabei handelt es sich um eine *open source* Version der [**Sketch Engine (SkE)**](https://www.sketchengine.eu). Der [**Vergleich von Sketch Engine und NoSketch Engine**](https://www.sketchengine.eu/nosketch-engine/) zeigt, wie sich die NoSkE von der kommerziellen SkE durch den Wegfall einiger Funktionalitäten unterscheidet. Von den zahlreichen Dokumentationen und Benutzungshilfen, die online zur Sketch Engine auffindbar sind, sind daher nicht alle für die NoSketch Engine relevant. Für die in dieser Lernunterlage vorgestellten Kernfunktionalitäten bestehen allerdings *keine* Unterschiede zwischen den beiden Varianten. Die verlinkten Informationen und Anleitungen zur Sketch Engine sind daher gleichermaßen für die NoSketch Engine gültig. -Im Kontext dieses Manuals werden daher in der Folge die Bezeichnungen SkE und NoSkE synonym verwendet. + Im Kontext dieses Manuals werden daher in der Folge die Bezeichnungen SkE und NoSkE synonym verwendet. ## Grundlagen: Token vs. Strukturen @@ -60,13 +70,13 @@ Bei der Suche mithilfe von SkE/NoSkE gibt es einige Grundbegriffe, mit denen Sie Token sind das Ergebnis des sogenannten Tokenisierungsprozesses – d.h. der Zerlegung des Eingangstexts in linguistisch sinnvolle Einheiten. In der Regel entspricht ein Token einem orthographischen Wort. Die simpelste Tokenisierungsstrategie wäre: alles was zwischen zwei Leerzeichen steht, ist ein Token. -Vereinfacht gefasst: Token sind die einzelnen Wörter, Satzzeichen oder Zahlen im Text. + Vereinfacht gefasst: Token sind die einzelnen Wörter, Satzzeichen oder Zahlen im Text. -Diese vereinfachte Darstellung muss freilich um die Berücksichtigung von Satzzeichen ergänzt werden: Satzzeichen sollen vom vorangehenden Wort abgetrennt werden und bilden separate Token. Die Existenz von Abkürzungen verkompliziert die Tokenisierung etwas: zum Beispiel sind die Punkte in _z.B._ natürlich keine Satzzeichen, dürfen daher nicht abgetrennt werden, denn _z.B._ sollte als ein einziges Token behandelt werden. +Diese vereinfachte Darstellung muss freilich um die Berücksichtigung von Satzzeichen ergänzt werden: Satzzeichen sollen vom vorangehenden Wort abgetrennt werden und bilden separate Token. Die Existenz von Abkürzungen verkompliziert die Tokenisierung etwas: zum Beispiel sind die Punkte in *z.B.* natürlich keine Satzzeichen, dürfen daher nicht abgetrennt werden, denn *z.B.* sollte als ein einziges Token behandelt werden. -Wie bei allen automatisierten Verarbeitungsschritten erfolgt die Tokenisierung bisweilen nicht fehlerfrei. So ist bei der Suche nach Token, die Satz- oder Sonderzeichen enthalten, zu berücksichtigen, dass evtl. die Tokenisierung diese Zeichen missinterpretiert hat und daher der gesuchte Term fälschlicherweise in mehrere Token aufgeteilt wurde. + Wie bei allen automatisierten Verarbeitungsschritten erfolgt die Tokenisierung bisweilen nicht fehlerfrei. So ist bei der Suche nach Token, die Satz- oder Sonderzeichen enthalten, zu berücksichtigen, dass evtl. die Tokenisierung diese Zeichen missinterpretiert hat und daher der gesuchte Term fälschlicherweise in mehrere Token aufgeteilt wurde. ### Token-Attribute @@ -75,27 +85,31 @@ Die Informationen, die jedem Token zugeordnet werden, werden in der SkE (Token-) Einige der Token-Attribute im amc wären -- `word` : das einfachste Attribut. Es beinhaltet, wie der Name andeutet, die orthographische Form des Wortes. -- `lemma` : hier steht die Grundform des Wortes (wie es von einem Lemmatisierungsprogramm ermitteln wurde). -- `lc` : eine lower cased Version des Wortes. Die Suche in CQL ist _case sensitive_, `lc` kann verwendet werden, um case _insensitive_ zu suchen, also Unterschiede in der Großkleinschreibung zu ignorieren. D.h. eine Suche`[word="Ciao"]` findet nur genau "Ciao". Die Suche `[lc="ciao"]` findet +* `word` : das einfachste Attribut. Es beinhaltet, wie der Name andeutet, die orthographische Form des Wortes. + +* `lemma` : hier steht die Grundform des Wortes (wie es von einem Lemmatisierungsprogramm ermitteln wurde). + +* `lc` : eine lower cased Version des Wortes. Die Suche in CQL ist *case sensitive*, `lc` kann verwendet werden, um case *insensitive* zu suchen, also Unterschiede in der Großkleinschreibung zu ignorieren. D.h. eine Suche`[word="Ciao"]` findet nur genau "Ciao". Die Suche `[lc="ciao"]` findet ciao, Ciao, CIAO, CiAo, etc. -- `posTT` : part-of-Speech tags nach dem STTS-Tagset, wie sie vom PoS tagger TreeTagger vergeben wurden. -- `pos` : part-of-Speech tags, wie sie vom PoS tagger RFTagger vergeben wurden: zusätzlich zur Wortart werden auch morphologische Informationen angegeben. + +* `posTT` : part-of-Speech tags nach dem STTS-Tagset, wie sie vom PoS tagger TreeTagger vergeben wurden. + +* `pos` : part-of-Speech tags, wie sie vom PoS tagger RFTagger vergeben wurden: zusätzlich zur Wortart werden auch morphologische Informationen angegeben.
-Einfache Token-Suche nach 'ciao' als Lemma. + Einfache Token-Suche nach 'ciao' als Lemma.
-In den View Options kann man die Attribute, die den Token im Korpus zugeordnet sind, auswählen. + In den View Options kann man die Attribute, die den Token im Korpus zugeordnet sind, auswählen.
-Beispiel-Suchergebnis für das Token 'ciao'. Es wurden die Attribute word, lemma, posTT, und pos ausgewählt. Die Information ist unter dem Token sichtbar. + Beispiel-Suchergebnis für das Token 'ciao'. Es wurden die Attribute word, lemma, posTT, und pos ausgewählt. Die Information ist unter dem Token sichtbar.
-Die Liste aller Attribute eines Korpus lässt sich immer einfach unter dem Info-Zeichen im Overflow-Menü oder — völlig äquivalent — in der _CORPUS INFO_ im Dashboard des jeweiligen Corpus anzeigen. + Die Liste aller Attribute eines Korpus lässt sich immer einfach unter dem Info-Zeichen im Overflow-Menü oder — völlig äquivalent — in der *CORPUS INFO* im Dashboard des jeweiligen Corpus anzeigen. ### Strukturen @@ -141,96 +155,96 @@ Und diese tokenisierten Texte können nun durch Struktur-Elemente, nun ja, struk Typische Strukturen sind Dokumente, Paragraphen (Absätze) und Sätze, die im amc als `` `

` und `` ausgezeichnet werden. Die Strukturen können Zusatzinformationen in Form von Struktur-Attributen enthalten. -Typischerweise finden sich in den Attributen des ``-Elements die Metadaten zum entsprechenden Dokument. Im amc entspricht der Inhalt eines ``-Elements einem Zeitungsartikel. An Metadaten sehen wir im Beispiel Attribute wie _id_, _datum_, _autor_, _docsrc_, _ressort2_, etc. +Typischerweise finden sich in den Attributen des ``-Elements die Metadaten zum entsprechenden Dokument. Im amc entspricht der Inhalt eines ``-Elements einem Zeitungsartikel. An Metadaten sehen wir im Beispiel Attribute wie *id*, *datum*, *autor*, *docsrc*, *ressort2*, etc. -Die oben angeführte Vertikale sowie die Beispiele in diesem Tutorial verwenden der Einfachheit halber nur einen Auszug der tatsächlich im amc verfügbaren Informationen. Auf der amc-site findet sich die _vollständige_ **[Beschreibung aller im amc verwendeten Annotationen](https://amc.acdh.oeaw.ac.at/dokumentation/korpusinhalt-attribute/)**. + Die oben angeführte Vertikale sowie die Beispiele in diesem Tutorial verwenden der Einfachheit halber nur einen Auszug der tatsächlich im amc verfügbaren Informationen. Auf der amc-site findet sich die *vollständige* [**Beschreibung aller im amc verwendeten Annotationen**](https://amc.acdh.oeaw.ac.at/dokumentation/korpusinhalt-attribute/). ### Quiz - - - Welche der Aussagen treffen auf den Begriff "Token" zu? - - - - Einem Token können zusätzliche Informationen in Form von Attributen zugeordnet werden. - - - - Ein Token ist eine linguistisch sinnvolle Einheit. - - - - Abkürzungen enthalten als Token auch Satzzeichen und dürfen nicht von diesen getrennt werden. - - - - Satzzeichen bilden eigene Token. - - - - Ein Token ist ein orthographisches Wort. - - - - Richtig! Meistens sind orthographische Worte auch Token, aber auch Satzzeichen und Abkürzungen werden zu Token. - - - - - - Welche Informationen können aus Token-Attributen nicht erlesen werden? - - - - Angaben zum Autor/ zur Autorin des Textes - - - - Angaben zur Morphologie eines Tokens - - - - Angaben zu synonymer Verwendung des Tokens - - - - Angaben zum Lemma des Tokens - - - - Token-Attribute beschreiben einzelne Token näher, nicht den gesamten Text, in dem die Token vorkommen. - - - - Richtig! - - - - - - Wählen Sie bitte die richtige Antwort aus. - - - - Das amc beinhaltet Zeitungsartikel aus österreichischen Printmedien. - - - - Das amc ist eine Kooperation des ACDH-CH und der APA, die Texte für sprachwissenschaftliche Fragestellungen zur Verfügung stellt. - - - - Das amc ist ein Textcorpus, das aufgrund der linguistischen Annotation mithilfe der NoSketch-Engine und der Corpus Query Language durchsucht werden kann. - - - - Alle genannten Antworten sind richtig. - - + + + Welche der Aussagen treffen auf den Begriff "Token" zu? + + + + Einem Token können zusätzliche Informationen in Form von Attributen zugeordnet werden. + + + + Ein Token ist eine linguistisch sinnvolle Einheit. + + + + Abkürzungen enthalten als Token auch Satzzeichen und dürfen nicht von diesen getrennt werden. + + + + Satzzeichen bilden eigene Token. + + + + Ein Token ist ein orthographisches Wort. + + + + Richtig! Meistens sind orthographische Worte auch Token, aber auch Satzzeichen und Abkürzungen werden zu Token. + + + + + + Welche Informationen können aus Token-Attributen nicht erlesen werden? + + + + Angaben zum Autor/ zur Autorin des Textes + + + + Angaben zur Morphologie eines Tokens + + + + Angaben zu synonymer Verwendung des Tokens + + + + Angaben zum Lemma des Tokens + + + + Token-Attribute beschreiben einzelne Token näher, nicht den gesamten Text, in dem die Token vorkommen. + + + + Richtig! + + + + + + Wählen Sie bitte die richtige Antwort aus. + + + + Das amc beinhaltet Zeitungsartikel aus österreichischen Printmedien. + + + + Das amc ist eine Kooperation des ACDH-CH und der APA, die Texte für sprachwissenschaftliche Fragestellungen zur Verfügung stellt. + + + + Das amc ist ein Textcorpus, das aufgrund der linguistischen Annotation mithilfe der NoSketch-Engine und der Corpus Query Language durchsucht werden kann. + + + + Alle genannten Antworten sind richtig. + + ## Schnelleinstieg: Suche mit "Simple search" @@ -239,22 +253,24 @@ Die einfachste Form der Suche im amc ist die sogenannte **Simple search**. Diese kann in der SkE innerhalb der "Concordance"-Funktion aufgerufen werden: -- entweder durch Auswahl des Concordanece-Symbols im linken Menü und dann weiter unter dem Reiter "basic" -- oder im Dashboard über den Auswahlpunkt "Concordance". Die Funktionalität der **simple search** wird dann auch hier wieder unter dem Reiter "basic" angezeigt. +* entweder durch Auswahl des Concordanece-Symbols im linken Menü und dann weiter unter dem Reiter "basic" + +* oder im Dashboard über den Auswahlpunkt "Concordance". Die Funktionalität der **simple search** wird dann auch hier wieder unter dem Reiter "basic" angezeigt. Gibt man hier eine Wortform ein, so sucht die SkE -- dieses Wort -- und zwar case-insensitiv, d.h. ohne Berücksichtigung von Groß- und Kleinschreibung. Die Eingabe von _SMS_ findet daher z.B. _SMS_, _sms_, _Sms_, etc. -- entspricht die Sucheingabe auch einem Lemma, dann auch alle Flexionsformen dieses Lemmas. (D.h. eine Suche nach _Haus_ findet daher auch alle Flexionsformen des _lemmas Haus_: das wären _Haus, Hauses_, _Hause_, _Häuser_, _Häusern_.) +* dieses Wort -- und zwar case-insensitiv, d.h. ohne Berücksichtigung von Groß- und Kleinschreibung. Die Eingabe von *SMS* findet daher z.B. *SMS*, *sms*, *Sms*, etc. + +* entspricht die Sucheingabe auch einem Lemma, dann auch alle Flexionsformen dieses Lemmas. (D.h. eine Suche nach *Haus* findet daher auch alle Flexionsformen des *lemmas Haus*: das wären *Haus, Hauses*, *Hause*, *Häuser*, *Häusern*.) ### Mehrwort-Suche -Es kann auch eine Abfolge mehrerer Wörter angegeben werden, die SkE sucht dann nach genau dieser Abfolge, z.B. _ein schönes Haus_. +Es kann auch eine Abfolge mehrerer Wörter angegeben werden, die SkE sucht dann nach genau dieser Abfolge, z.B. *ein schönes Haus*. -Da bei der **Simple search** wie erwähnt auch nach den **Wortformen eines Lemmas** gesucht wird, findet eine Suchanfrage _schön Haus_ auch alle Paarungen der Wortformen des Lemmas _schön_ und der Wortformen des Lemmas _Haus_ und das unabhängig von Groß- oder Kleinschreibung. Somit erscheinen im Ergebnis z.B. _schönes Haus_, _schönsten Hauses_, _Schöneren Häusern_ etc. +Da bei der **Simple search** wie erwähnt auch nach den **Wortformen eines Lemmas** gesucht wird, findet eine Suchanfrage *schön Haus* auch alle Paarungen der Wortformen des Lemmas *schön* und der Wortformen des Lemmas *Haus* und das unabhängig von Groß- oder Kleinschreibung. Somit erscheinen im Ergebnis z.B. *schönes Haus*, *schönsten Hauses*, *Schöneren Häusern* etc. -Das Lemma für **definite Artikel** ist übrigens _die_, für **indefinite** ist es _eine_. Das heißt, die Abfrage _die schön Haus_ oder _eine schön Haus_ liefert die entsprechenden Kombinationen in allen Kasus und Numeri. + Das Lemma für **definite Artikel** ist übrigens *die*, für **indefinite** ist es *eine*. Das heißt, die Abfrage *die schön Haus* oder *eine schön Haus* liefert die entsprechenden Kombinationen in allen Kasus und Numeri. ### Wildcards @@ -263,212 +279,227 @@ In der Simple search ist die Verwendung des Wildcards `*` (Jokerzeichen, Asteris #### Beispiele: -- Haus`*`: alle Wörter, die mit der Buchstabenfolge _Haus_ beginnen: _Haus_, _Hauses_, _Hausmaus_, _Haussa_, _Hausbesorgerin_ ... aber auch alle Wortformen von Lemmata, die mit _Haus_ beginnen. Es wird also z.B. auch _Häusern_ gefunden. -- `*`aus : alle Wörter, die mit der Buchstabenfolge _aus_ enden: aus, Maus, Haus, Schildlaus, ... -- Ha`*`s: alle Wörter, die mit Ha beginnen, und mit _s_ enden: _Has_, _Haus_, _Hass_, _Handelsabschluss_, _Hafenmeistergattinnenpendlerbus_, etc. Wegen der beiden speziellen Eigenschaften case-insensitiv und Lemma-Suche wird aber auch z.B. _haltlos_ (case-insensitive) und _haltlose_ gefunden (Ergebnis der impliziten Lemma-Suche, obwohl die gefundene Wortform dann gar nicht auf _s_ endet!) +* Haus`*`: alle Wörter, die mit der Buchstabenfolge *Haus* beginnen: *Haus*, *Hauses*, *Hausmaus*, *Haussa*, *Hausbesorgerin* ... aber auch alle Wortformen von Lemmata, die mit *Haus* beginnen. Es wird also z.B. auch *Häusern* gefunden. + +* `*`aus : alle Wörter, die mit der Buchstabenfolge *aus* enden: aus, Maus, Haus, Schildlaus, ... -Ein weiteres Beispiel für den case-insensitiven Charakter der Simple search: _deutsch*_ findet: _deutsch_, _deutsche_, _deutsches_ ... aber auch: _Deutschlands_, _Deutschmatura_,... +* Ha`*`s: alle Wörter, die mit Ha beginnen, und mit *s* enden: *Has*, *Haus*, *Hass*, *Handelsabschluss*, *Hafenmeistergattinnenpendlerbus*, etc. Wegen der beiden speziellen Eigenschaften case-insensitiv und Lemma-Suche wird aber auch z.B. *haltlos* (case-insensitive) und *haltlose* gefunden (Ergebnis der impliziten Lemma-Suche, obwohl die gefundene Wortform dann gar nicht auf *s* endet!) + +Ein weiteres Beispiel für den case-insensitiven Charakter der Simple search: *deutsch\** findet: *deutsch*, *deutsche*, *deutsches* ... aber auch: *Deutschlands*, *Deutschmatura*,... ## "Vollsuche" mit der Corpus Query Language (CQL) -Wie wir gesehen haben, kann in der Simple search nur nach Token und dabei auch nur nach Wortformen und (implizit) Lemmata gesucht werden, oder exakter ausgedrückt: es kann nach Werten im Attribut _word_ gesucht werden (wobei implizit intern zusätzlich auch noch die Attribute _lc_ und _lemma_ zur Suche mitherangezogen werden). +Wie wir gesehen haben, kann in der Simple search nur nach Token und dabei auch nur nach Wortformen und (implizit) Lemmata gesucht werden, oder exakter ausgedrückt: es kann nach Werten im Attribut *word* gesucht werden (wobei implizit intern zusätzlich auch noch die Attribute *lc* und *lemma* zur Suche mitherangezogen werden). Im Gegensatz hierzu bietet die **CQL** weit mehr Möglichkeiten: -- Suche in beliebigen (Token-)Attributen -- Suche unter Berücksichtigung von Strukturen und deren Attributen -- Suche mit regulären Ausdrücken -- uvm. +* Suche in beliebigen (Token-)Attributen + +* Suche unter Berücksichtigung von Strukturen und deren Attributen -

-Beispielhaftes Abfrageergebnis zur CQL-Abfrage attributives Adjektiv + Haus. Links oben sehen Sie die Suchabfrage und die Anzahl der gefundenen Ergebnisse. Mittig finden Sie die ersten Suchergebnisse. Sie sehen in rot die gefundenen Formen im Text, in grau darunter das jeweilige Lemma. + Beispielhaftes Abfrageergebnis zur CQL-Abfrage attributives Adjektiv + Haus. Links oben sehen Sie die Suchabfrage und die Anzahl der gefundenen Ergebnisse. Mittig finden Sie die ersten Suchergebnisse. Sie sehen in rot die gefundenen Formen im Text, in grau darunter das jeweilige Lemma.
-Leerzeichen außerhalb von Anführungszeichen werden in CQL-Abfragen völlig ignoriert. Es macht also nur einen Unterschied in der _Lesbarkeit_ und nicht im Suchergebnis ob man `[ posTT = "ADJA" ] [ lemma = "Haus" ]` oder `[posTT="ADJA"][lemma="Haus"]` schreibt. + Leerzeichen außerhalb von Anführungszeichen werden in CQL-Abfragen völlig ignoriert. Es macht also nur einen Unterschied in der *Lesbarkeit* und nicht im Suchergebnis ob man `[ posTT = "ADJA" ] [ lemma = "Haus" ]` oder `[posTT="ADJA"][lemma="Haus"]` schreibt. ## Reguläre Ausdrücke -In der CQL können sogenannte **[reguläre Ausdrücke (regular expressions, Regex)](https://www.sketchengine.eu/guide/regular-expressions/)** +In der CQL können sogenannte [**reguläre Ausdrücke (regular expressions, Regex)**](https://www.sketchengine.eu/guide/regular-expressions/) verwendet werden, womit die Ausdrucksmächtigkeit und Flexibilität der Suche ernorm erhöht wird. Die wichtigsten "Bausteine" bei der Zusammenstellung eines regulären Ausdrucks sind: -- "`.`" : Ein Punkt steht als Platzhalter für jedes beliebige Zeichen, z.B. `[word="Ha.s"]` findet "Haus" "Hass" "Hals" ... -- "`*`" : steht für 0, 1 oder beliebig viele Wiederholungen des _vorhergehenden_ Zeichens oder Ausdrucks. z.B. `[word="Hallo*"]` findet "Hall" "Hallo" "Halloo" etc. -- "`+`" : steht für 1 oder beliebig viele Wiederholungen des vorhergehenden Zeichens oder Ausdrucks, z.B. `[word="Hallo+"]` findet "Hallo" "Halloo" etc. ... aber _nicht_ "Hall". D.h., das Zeichen vor `*` ist _optional_, das Zeichen vor `+` hingegen ist _obligat_! -- "`?`" : steht für 0 oder genau 1 Wiederholung des vorhergehenden Zeichens oder Ausdrucks, z.B. `[word="Hallo?"]` findet genau die beiden Formen "Hall" und "Hallo". D.h. das `?` steht für die Optionalität aber nicht für die Wiederholbarkeit des linken Nachbarn von `?`. +* "`.`" : Ein Punkt steht als Platzhalter für jedes beliebige Zeichen, z.B. `[word="Ha.s"]` findet "Haus" "Hass" "Hals" ... + +* "`*`" : steht für 0, 1 oder beliebig viele Wiederholungen des *vorhergehenden* Zeichens oder Ausdrucks. z.B. `[word="Hallo*"]` findet "Hall" "Hallo" "Halloo" etc. + +* "`+`" : steht für 1 oder beliebig viele Wiederholungen des vorhergehenden Zeichens oder Ausdrucks, z.B. `[word="Hallo+"]` findet "Hallo" "Halloo" etc. ... aber *nicht* "Hall". D.h., das Zeichen vor `*` ist *optional*, das Zeichen vor `+` hingegen ist *obligat*! + +* "`?`" : steht für 0 oder genau 1 Wiederholung des vorhergehenden Zeichens oder Ausdrucks, z.B. `[word="Hallo?"]` findet genau die beiden Formen "Hall" und "Hallo". D.h. das `?` steht für die Optionalität aber nicht für die Wiederholbarkeit des linken Nachbarn von `?`. + +**Kombination mit ****`.`****: Üblich ist es, ****`*`****, ****`+`****, ****`?`**** mit ****`.`**** (dem Platzhalter für jedes beliebige Zeichen) zu kombinieren.** -**Kombination mit `.`: Üblich ist es, `*`, `+`, `?` mit `.` (dem Platzhalter für jedes beliebige Zeichen) zu kombinieren.** +* `[word=".?und"]` findet und, Mund, Hund, wund, rund, ... -- `[word=".?und"]` findet und, Mund, Hund, wund, rund, ... -- `[word="Hunde.+"]` findet Hundehütte, Hundekuchen, Hundefriseur, aber natürlich auch Hunderttausend ... (aber nicht Hunde!) -- `[pos="N.Reg.*Pl.*"]` findet alle Nomen im Plural +* `[word="Hunde.+"]` findet Hundehütte, Hundekuchen, Hundefriseur, aber natürlich auch Hunderttausend ... (aber nicht Hunde!) + +* `[pos="N.Reg.*Pl.*"]` findet alle Nomen im Plural -Beachten Sie den Unterschied zur Wirkungsweise des `*` in der Simple search: dort steht ein `*` allein schon als Platzhalter für 0, 1, oder beliebig viele beliebige Zeichen. In einem regulären Ausdruck bezieht sich hingegen ein `*` immer auf den _linken Nachbarn_: die Suchanfrage `Haus*` liefert in der Simple query bekanntlich alle Wörter, die mit "Haus" beginnen, in der CQL jedoch "Hau", "Haus", "Hauss", "Haussss" etc., also "Hau" gefolgt von 0, 1, oder beliebig vielen "s", da sich der `*` in der CQL immer auf das vorhergehende Element – hier eben das "s" – bezieht. Will man ein Suchverhalten wie in der Simple query erreichen, muss die Abfrage in der CQL also wie folgt lauten: `[word="Haus.*"]`. + Beachten Sie den Unterschied zur Wirkungsweise des `*` in der Simple search: dort steht ein `*` allein schon als Platzhalter für 0, 1, oder beliebig viele beliebige Zeichen. In einem regulären Ausdruck bezieht sich hingegen ein `*` immer auf den *linken Nachbarn*: die Suchanfrage `Haus*` liefert in der Simple query bekanntlich alle Wörter, die mit "Haus" beginnen, in der CQL jedoch "Hau", "Haus", "Hauss", "Haussss" etc., also "Hau" gefolgt von 0, 1, oder beliebig vielen "s", da sich der `*` in der CQL immer auf das vorhergehende Element – hier eben das "s" – bezieht. Will man ein Suchverhalten wie in der Simple query erreichen, muss die Abfrage in der CQL also wie folgt lauten: `[word="Haus.*"]`. ### Quiz - - - Mit welcher CQL-Abfrage könnten Sie im amc die Token "Wanze", "ganze", "Lanze", "tanze" finden? - - - - `[lemma="*anze"]` - - - - `[word=".anze"]` - - - - `[word="*anze."]` - - - - `[word=".?anze"]` - - - - `[lemma=".*anze"]` - - - - `[lemma=".anze"]` - - - - `[word="*anze"]` - - - - Sehr gut! - - - - Achtung! Es sollen auch flektierte Formen gefunden werden. Nur das erste Zeichen des Ausdrucks ändert sich. - - - - - - Warum können mit der Suche `[word=".anze"]`die Begriffe "Schanze", "Romanze" oder "Pflanze" nicht gefunden werden? - - - - "." ersetzt nur 1 Zeichen. - - - - `[word=".anze"]` sucht nur nach flektierten Verben - - - - Mit `[word=".anze"]` können nur klein geschriebene Worte in den Texten gefunden werden. - - - - Richtig! - - - - Wenn Sie z.B. die Begriffe "Schanze" und "Pflanze" suchen, müssen Sie den Ausdruck "." für jedes zu findende Zeichen eingeben. - - - - - - Wie kann die CQL-Abfrage nach einem Token aussehen, um Ausdrücke wie "sie sind wie Katz und Maus", "die Katze ist aus dem Sack", oder auch Texte zu "eine Katze wartet im Tierheim", oder auch zum "Nobelpreisträger Bernhard Katz" zu finden? - - - - `[lemma="Katze*"]` - - - - `[word="Katze."]` - - - - Richtig! - - - - Achtung, Sie möchten wissen, in welchen Ausdrücken das Token "Katze", "Katz" oder sogar "Katzee" vorkommt, aber nicht "Katzel", "Katzen", o.ä. - - - - - - Warum ist es möglich mit `[word="Hunde.+"]` die Ausdrücke "Hundertschaft" und "Hundezwinger" zu finden? - - - - "+" findet immer das vorangehende Zeichen, zumindest einmal. - - - - ".+" findet alle Ausdrücke, in denen sich ein beliebiges Zeichen beliebig oft, aber mindestens einmal wiederholt. - - - - "+" findet Wiederholungen, die zumindest so lang sind wie der vorangehene Ausdruck. - - - - "." findet ein beliebiges Zeichen - - - - Richtig! - - - - Stellen Sie sicher,dass sie alle richtigen Antworten ausgewählt haben. - - - - - - Wie kann die CQL-Abfrage lauten, um "Pflanze", "Sprungschanze", "Wanze", "ganze", "Romanze" und "Landpomeranze" zu finden? - - - - `[word=".+anze"]` - - - - `[word=".?anze"]` - - - - `[word=".*anze"]` - - + + + Mit welcher CQL-Abfrage könnten Sie im amc die Token "Wanze", "ganze", "Lanze", "tanze" finden? + + + + `[lemma="*anze"]` + + + + `[word=".anze"]` + + + + `[word="*anze."]` + + + + `[word=".?anze"]` + + + + `[lemma=".*anze"]` + + + + `[lemma=".anze"]` + + + + `[word="*anze"]` + + + + Sehr gut! + + + + Achtung! Es sollen auch flektierte Formen gefunden werden. Nur das erste Zeichen des Ausdrucks ändert sich. + + + + + + Warum können mit der Suche `[word=".anze"]`die Begriffe "Schanze", "Romanze" oder "Pflanze" nicht gefunden werden? + + + + "." ersetzt nur 1 Zeichen. + + + + `[word=".anze"]` sucht nur nach flektierten Verben + + + + Mit `[word=".anze"]` können nur klein geschriebene Worte in den Texten gefunden werden. + + + + Richtig! + + + + Wenn Sie z.B. die Begriffe "Schanze" und "Pflanze" suchen, müssen Sie den Ausdruck "." für jedes zu findende Zeichen eingeben. + + + + + + Wie kann die CQL-Abfrage nach einem Token aussehen, um Ausdrücke wie "sie sind wie Katz und Maus", "die Katze ist aus dem Sack", oder auch Texte zu "eine Katze wartet im Tierheim", oder auch zum "Nobelpreisträger Bernhard Katz" zu finden? + + + + `[lemma="Katze*"]` + + + + `[word="Katze."]` + + + + Richtig! + + + + Achtung, Sie möchten wissen, in welchen Ausdrücken das Token "Katze", "Katz" oder sogar "Katzee" vorkommt, aber nicht "Katzel", "Katzen", o.ä. + + + + + + Warum ist es möglich mit `[word="Hunde.+"]` die Ausdrücke "Hundertschaft" und "Hundezwinger" zu finden? + + + + "+" findet immer das vorangehende Zeichen, zumindest einmal. + + + + ".+" findet alle Ausdrücke, in denen sich ein beliebiges Zeichen beliebig oft, aber mindestens einmal wiederholt. + + + + "+" findet Wiederholungen, die zumindest so lang sind wie der vorangehene Ausdruck. + + + + "." findet ein beliebiges Zeichen + + + + Richtig! + + + + Stellen Sie sicher,dass sie alle richtigen Antworten ausgewählt haben. + + + + + + Wie kann die CQL-Abfrage lauten, um "Pflanze", "Sprungschanze", "Wanze", "ganze", "Romanze" und "Landpomeranze" zu finden? + + + + `[word=".+anze"]` + + + + `[word=".?anze"]` + + + + `[word=".*anze"]` + + ### Wiederholungen -Alternativ zu `*`, `+`, `?` kann man mit dem **ranges Operator** nicht nur festlegen, ob ein Ausdruck 0, 1, oder "öfter" wiederholt werden soll, sondern es kann die _exakte_ Mindest- und Maximalzahl an Wiederholungen spezifiziert werden. +Alternativ zu `*`, `+`, `?` kann man mit dem **ranges Operator** nicht nur festlegen, ob ein Ausdruck 0, 1, oder "öfter" wiederholt werden soll, sondern es kann die *exakte* Mindest- und Maximalzahl an Wiederholungen spezifiziert werden. Die allgemeine Syntax für diesen Operator lautet: `{minimale Anzahl, maximale Anzahl}` @@ -476,306 +507,338 @@ Damit gilt: `x{0,1}` bedeutet minimal 0 und maximal 1 Wiederholungen von `x` (un Beispiele: -- `[word=".{10}"]` genau 10 Wiederholungen von "." – also alle Wörter oder Zahlen mit einer Länge von 10 Zeichen -- `[word=".{10,}"]` mindestens 10 Wiederholungen von "." , keine Angabe der Maximalzahl: also alle Wörter oder Zahlen mit einer _Mindestlänge_ von 10 Zeichen -- `[word=".{10,15}"]` Wörter mit mindestens 10 und maximal 15 Zeichen -- `[posTT="ADJ."]{2,}` Abfolge von mindestens 2 Adjektiven ( "ADJ." findet sowohl ADJA als auch ADJD, d.h. attributive und prädikative/adverbiale Adjektive) -- `[posTT="ADJ."] []{0,2} [lemma="Haus"]` Abfolge von einem ADJ und dem Lemma "Haus", wobei zwischen Adjektiv und dem Nomen Haus bis zu 2 beliebige zusätzliche Token stehen können. +* `[word=".{10}"]` genau 10 Wiederholungen von "." – also alle Wörter oder Zahlen mit einer Länge von 10 Zeichen + +* `[word=".{10,}"]` mindestens 10 Wiederholungen von "." , keine Angabe der Maximalzahl: also alle Wörter oder Zahlen mit einer *Mindestlänge* von 10 Zeichen + +* `[word=".{10,15}"]` Wörter mit mindestens 10 und maximal 15 Zeichen + +* `[posTT="ADJ."]{2,}` Abfolge von mindestens 2 Adjektiven ( "ADJ." findet sowohl ADJA als auch ADJD, d.h. attributive und prädikative/adverbiale Adjektive) + +* `[posTT="ADJ."] []{0,2} [lemma="Haus"]` Abfolge von einem ADJ und dem Lemma "Haus", wobei zwischen Adjektiv und dem Nomen Haus bis zu 2 beliebige zusätzliche Token stehen können. ### Logische Verknüpfungen -Es stehen die logischen Operatoren **& (logisches UND)** und **\| (logisches ODER)** zur Verfügung. +Es stehen die logischen Operatoren **& (logisches UND)** und **| (logisches ODER)** zur Verfügung. -**A | B logisches oder** : es muss zumindest _eine_ der beiden Bedingungen A oder B erfüllt sein. +**A | B logisches oder** : es muss zumindest *eine* der beiden Bedingungen A oder B erfüllt sein. -- `[word="Das|das"]` suche alle "Das" oder "das" -- `[pos="ADJA|ADJD|ADV"]` suche alle Adjektive oder Adverben +* `[word="Das|das"]` suche alle "Das" oder "das" + +* `[pos="ADJA|ADJD|ADV"]` suche alle Adjektive oder Adverben **A & B logisches und**: es muss sowohl Bedingung A als auch Bedingung B erfüllt sein. -- `[word="schön" & posTT="ADV" & pos="ADV.*"]` finde "schön", wenn sowohl der **TreeTagger (posTT)** als auch der **RFTagger (pos)** es als Adverb markiert haben. +* `[word="schön" & posTT="ADV" & pos="ADV.*"]` finde "schön", wenn sowohl der **TreeTagger (posTT)** als auch der **RFTagger (pos)** es als Adverb markiert haben. ### Gruppierung mit `( )` In regulären Ausdrücken können einzelne Komponenten mit `( )` zu Unterausdrücken zusammengefasst werden, die dann wiederum mit den schon bekannten Operatoren `* ? + | &` und `{min,max}` kombiniert werden können. -- `[word="(Das|das)"]` finde alle _Das_ oder _das_ Token -- `[word="(D|d)as"]` finde alle _Das_ oder _das_ Token -- `[lc="(ur|vor){2,}"]` findet alle Wortformen (unabhängig von der Groß-Kleinschreibung) die mit zumindest 2 "ur" oder "vor" beginnen, z.B. _vorvorgestern_ oder _Ururgroßvater_ (aber auch _Vorurteil_!) -- `[lc="(ha|he|hi|ho|hu){3,}"]` findet alle Wortformen (unabhängig von der Groß-Kleinschreibung) die - aus mindestens 3 Wiederholungen von ha, he, hi ... bestehen - also _hahaha_, _hihihihihi_, etc. +* `[word="(Das|das)"]` finde alle *Das* oder *das* Token + +* `[word="(D|d)as"]` finde alle *Das* oder *das* Token + +* `[lc="(ur|vor){2,}"]` findet alle Wortformen (unabhängig von der Groß-Kleinschreibung) die mit zumindest 2 "ur" oder "vor" beginnen, z.B. *vorvorgestern* oder *Ururgroßvater* (aber auch *Vorurteil*!) + +* `[lc="(ha|he|hi|ho|hu){3,}"]` findet alle Wortformen (unabhängig von der Groß-Kleinschreibung) die + aus mindestens 3 Wiederholungen von ha, he, hi ... bestehen - also *hahaha*, *hihihihihi*, etc. Gruppierungen können auch innerhalb anderer Gruppen platziert werden: -- `([lemma="groß.*"] ([lemma="Haus"]|[lemma="Gebäude"])) | ([lemma="klein.*"] [lemma="(Hütte|Kate|Behausung)"])` sucht nach großen Häusern und Gebäuden oder kleinen Hütten und Behausungen (aber findet auch "großindustrielle Häuser" und die "Kleinarler Hütte") -- `[lc="(h(a|e|i|o|u)){3,}"]` Eine alternative Formulierung um alle Wortformen zu finden, die aus mindestens 3 Wiederholungen von ha, he, hi ... bestehen +* `([lemma="groß.*"] ([lemma="Haus"]|[lemma="Gebäude"])) | ([lemma="klein.*"] [lemma="(Hütte|Kate|Behausung)"])` sucht nach großen Häusern und Gebäuden oder kleinen Hütten und Behausungen (aber findet auch "großindustrielle Häuser" und die "Kleinarler Hütte") + +* `[lc="(h(a|e|i|o|u)){3,}"]` Eine alternative Formulierung um alle Wortformen zu finden, die aus mindestens 3 Wiederholungen von ha, he, hi ... bestehen
-Screenshot der Suche im AMC_4.1 des Ausdrucks "klima" mit mindestens zwei Wiederholungen, die als Nomen im Treetagger getaggt wurden. Oben links sehen Sie den Suchausdruck, in der Mitte das Ergebnis. Alle gefundenen Begriffe sind als Nomen getaggt. Auch der Tippfehler "klimafreundlichesMobilitätskonzept", zusammengesetzte Nomen mit Bindestrich oder auch der Name einer Webseite mit Punkt werden gefunden. + Screenshot der Suche im AMC\_4.1 des Ausdrucks "klima" mit mindestens zwei Wiederholungen, die als Nomen im Treetagger getaggt wurden. Oben links sehen Sie den Suchausdruck, in der Mitte das Ergebnis. Alle gefundenen Begriffe sind als Nomen getaggt. Auch der Tippfehler "klimafreundlichesMobilitätskonzept", zusammengesetzte Nomen mit Bindestrich oder auch der Name einer Webseite mit Punkt werden gefunden.
### Zeichenklassen mit `[ ]` -Wir haben bisher den Platzhalter `.` verwendet, der für jedes beliebige Zeichen steht. Mit dem Operator `[ ]` steht eine Möglichkeit bereit, eine _Auswahl_ an Zeichen, also eine Zeichenklasse zu definieren: +Wir haben bisher den Platzhalter `.` verwendet, der für jedes beliebige Zeichen steht. Mit dem Operator `[ ]` steht eine Möglichkeit bereit, eine *Auswahl* an Zeichen, also eine Zeichenklasse zu definieren: -- `[abc]` steht für einen der Buchstaben `a` oder `b` oder `c` - ist also äquivalent zu `(a|b|c)` -- `[word="H[oa]se"]` findet daher Hose und Hase - und ist also äquivalent zu `[word="H(o|a)se"]` -- `[lc="[ptkbdg].+"]` findet alle Wortformen, die mit einem Plosiv beginnen - und ist also äquivalent zu `[lc="(p|t|k|b|d|g).+"]` -- `[lc="(h[aeiou]){3,}"]` Eine weitere alternative Formulierungsmöglichkeit um alle Wortformen zu finden, die aus mindestens 3 Wiederholungen von ha, he, hi ... bestehen +* `[abc]` steht für einen der Buchstaben `a` oder `b` oder `c` - ist also äquivalent zu `(a|b|c)` + +* `[word="H[oa]se"]` findet daher Hose und Hase - und ist also äquivalent zu `[word="H(o|a)se"]` + +* `[lc="[ptkbdg].+"]` findet alle Wortformen, die mit einem Plosiv beginnen - und ist also äquivalent zu `[lc="(p|t|k|b|d|g).+"]` + +* `[lc="(h[aeiou]){3,}"]` Eine weitere alternative Formulierungsmöglichkeit um alle Wortformen zu finden, die aus mindestens 3 Wiederholungen von ha, he, hi ... bestehen Die bisherigen Beispiele lassen sich wie gezeigt auch mit der Verwendung von Gruppierung `( )` zusammen mit `|` formulieren. Die Zeichenklassendefinitionen bieten aber noch Möglichkeiten, die darüber hinausgehen: -_Bereiche_ mit `-` definieren: +*Bereiche* mit `-` definieren: + +* `[a-z]` und `[0-9]` stehen für den *Buchstabenbereich von a bis z* bzw. den *Zahlenbereich von 0 bis 9* + +* `[word="[0-9]+"]` findet alle Zahlen -- `[a-z]` und `[0-9]` stehen für den _Buchstabenbereich von a bis z_ bzw. den _Zahlenbereich von 0 bis 9_ -- `[word="[0-9]+"]` findet alle Zahlen -- `[word="[0-9]+([,.][0-9]+)+"]` findet alle Zahlen - die auch `.` oder `,` enthalten können. Also z.B. _0815_ aber auch _19.500.123,00_ -- `` findet alle Artikel von 1990-1995. +* `[word="[0-9]+([,.][0-9]+)+"]` findet alle Zahlen - die auch `.` oder `,` enthalten können. Also z.B. *0815* aber auch *19.500.123,00* -_Negation_ mit `[^ ...]` definieren: +* `` findet alle Artikel von 1990-1995. -- `[^abc]` ein "^" unmittelbar am Anfang der Zeichenklassendefinition bedeutet, dass die Zeichenklasse aus allen Zeichen _außer_ den danach angeführten besteht! -- [lc = `"[^ptkbdg].+"`] verwendet z.B. eine Zeichenklasse "_nicht_ p,t,k,b,d,g" ,und findet daher alle Wortformen, die _nicht_ mit einem Plosiv beginnen. +*Negation* mit `[^ ...]` definieren: + +* `[^abc]` ein "^" unmittelbar am Anfang der Zeichenklassendefinition bedeutet, dass die Zeichenklasse aus allen Zeichen *außer* den danach angeführten besteht! + +* \[lc = `"[^ptkbdg].+"`] verwendet z.B. eine Zeichenklasse "*nicht* p,t,k,b,d,g" ,und findet daher alle Wortformen, die *nicht* mit einem Plosiv beginnen. ### Quiz - - - Wie nennt man den Operator, mit dem eine Minimal und/ oder Maximalanzahl an Wiederholungen eines Ausdrucks festgelegt werden kann? Welche Zeichen werden genutzt? - - - - strange Operator, `{ }` - - - - length Operator, `[ ]` - - - - ranges Operator, `{ }` - - - - distance Operator, `[ ]` - - - - Genau, der ranges Operator ist gesucht. In den Klammern stehen die Minimal-, und Maximalwerte. - - - - Überlegen Sie noch einmal! - - - - - - Die folgende Suche `[word="klima.{2,}" & posTT!="NN"]` liefert als Ergebnisse "klimatechnische", "klimatisierte", "klimabegünstigt", "klimabedingt", und "klimatisch". "Klimaschutz", "Klimagerät", "Klimawandelleugner" werden aber nicht gefunden. Warum? - - - - Die Worte "Klimaschutz", "Klimagerät", "Klimawandelleugner" überschreiten die Maximalanzahl an Wiederholungen nach dem Ausdruck "klima." - - - - Aufgrund des logischen UND müssen zwei Kriterien erfüllt sein: der Ausdruck "klima." muss vorkommen, UND es darf durch TreeTagger nicht als Nomen markiert worden sein. - - - - Aufgrund des logischen ODER können nur Treffer gefunden werden, die entweder das Wort "klima" beinhalten ODER aber Nomen sind. Bei zwei ausschließenden Kriterien wird immer nur das erste Kriterium unbedingt erfüllt. - - - - Ganz genau! Beide Kriterien müssen vom Suchergebnis erfüllt werden. - - - - Überlegen Sie nochmal! - - - - - - Mit `[]` wird eine Auswahl an Zeichen definiert, sodass ein Suchergebnis oft der Verwendung von | gleich ist (zB `[word="h(o|a)se"]` und `[word="h[oa]se"]` liefern dasselbe Ergebnis). Warum muss eine gemeinsame Suche nach "Schlund" oder "Wund" dennoch `[word="(schl|w)und"]` lauten? - - - - Ohne das logische ODER würde nach der gesamten Zeichenfolge gesucht werden. - - - - Im Anlaut eines Wortes muss immer mit logischem ODER gesucht werden. - - + + + Wie nennt man den Operator, mit dem eine Minimal und/ oder Maximalanzahl an Wiederholungen eines Ausdrucks festgelegt werden kann? Welche Zeichen werden genutzt? + + + + strange Operator, `{ }` + + + + length Operator, `[ ]` + + + + ranges Operator, `{ }` + + + + distance Operator, `[ ]` + + + + Genau, der ranges Operator ist gesucht. In den Klammern stehen die Minimal-, und Maximalwerte. + + + + Überlegen Sie noch einmal! + + + + + + Die folgende Suche `[word="klima.{2,}" & posTT!="NN"]` liefert als Ergebnisse "klimatechnische", "klimatisierte", "klimabegünstigt", "klimabedingt", und "klimatisch". "Klimaschutz", "Klimagerät", "Klimawandelleugner" werden aber nicht gefunden. Warum? + + + + Die Worte "Klimaschutz", "Klimagerät", "Klimawandelleugner" überschreiten die Maximalanzahl an Wiederholungen nach dem Ausdruck "klima." + + + + Aufgrund des logischen UND müssen zwei Kriterien erfüllt sein: der Ausdruck "klima." muss vorkommen, UND es darf durch TreeTagger nicht als Nomen markiert worden sein. + + + + Aufgrund des logischen ODER können nur Treffer gefunden werden, die entweder das Wort "klima" beinhalten ODER aber Nomen sind. Bei zwei ausschließenden Kriterien wird immer nur das erste Kriterium unbedingt erfüllt. + + + + Ganz genau! Beide Kriterien müssen vom Suchergebnis erfüllt werden. + + + + Überlegen Sie nochmal! + + + + + + Mit `[]` wird eine Auswahl an Zeichen definiert, sodass ein Suchergebnis oft der Verwendung von | gleich ist (zB `[word="h(o|a)se"]` und `[word="h[oa]se"]` liefern dasselbe Ergebnis). Warum muss eine gemeinsame Suche nach "Schlund" oder "Wund" dennoch `[word="(schl|w)und"]` lauten? + + + + Ohne das logische ODER würde nach der gesamten Zeichenfolge gesucht werden. + + + + Im Anlaut eines Wortes muss immer mit logischem ODER gesucht werden. + + ## Regex auch auf Token-Ebene Die Operatoren für reguläre Ausdrücke können nicht nur auf den Inhalt von Token-Attributen -- also auf der Buchstabenebene -- angewendet werden, sondern auch auf ganze Token oder Abfolgen von Token: -- `[word="ein"] [pos="ADJ.*"]* [word="Haus"]` findet "ein" und "Haus" mit _beliebig vielen optionalen_ Adjektiven dazwischen: _ein Haus_, _ein schönes Haus_, _ein schönes großes Haus_, ... -- `[lemma="schön"] []{0,4} [word="Haus"]` findet "schön" gefolgt von Haus – in einem Abstand von maximal 4 Token. (Zur Erinnerung: das leere `[]` passt auf _jedes beliebige_ Token.) -- `([lemma="schön"]|[lemma="groß"]) [lemma="Haus"]` findet "schön" _oder_ "groß" + "Haus". (und ist äquivalent zur Anfrage `[lemma="schön|groß"] [lemma="Haus"]`) +* `[word="ein"] [pos="ADJ.*"]* [word="Haus"]` findet "ein" und "Haus" mit *beliebig vielen optionalen* Adjektiven dazwischen: *ein Haus*, *ein schönes Haus*, *ein schönes großes Haus*, ... + +* `[lemma="schön"] []{0,4} [word="Haus"]` findet "schön" gefolgt von Haus – in einem Abstand von maximal 4 Token. (Zur Erinnerung: das leere `[]` passt auf *jedes beliebige* Token.) + +* `([lemma="schön"]|[lemma="groß"]) [lemma="Haus"]` findet "schön" *oder* "groß" + "Haus". (und ist äquivalent zur Anfrage `[lemma="schön|groß"] [lemma="Haus"]`) ### Gleichzeitiges Suchen im linken und rechten Kontext: meet und union -Bisher konnten wir nur entweder im linken **_oder_** im rechten Kontext suchen. Mit `meet` kann in beiden Kontexten gleichzeitig gesucht werden: +Bisher konnten wir nur entweder im linken ***oder*** im rechten Kontext suchen. Mit `meet` kann in beiden Kontexten gleichzeitig gesucht werden: -- `(meet [TokenA] [TokenB] -linker_context rechter_context)` +* `(meet [TokenA] [TokenB] -linker_context rechter_context)` -sucht nach `[TokenA]` in deren linker _oder_ rechter Nachbarschaft ein `[TokenB]` zu finden ist. Was als "Nachbarschaft" gilt, wird dabei über die Zahlen in **\-linker_context** und **rechter_context** bestimmt. +sucht nach `[TokenA]` in deren linker *oder* rechter Nachbarschaft ein `[TokenB]` zu finden ist. Was als "Nachbarschaft" gilt, wird dabei über die Zahlen in **-linker\_context** und **rechter\_context** bestimmt. z.B.: Suche nach dem Lemma "Hund" in dessen linker oder rechter Umgebung im maximalen Abstand von 5 Token die Lemmas "beißen" oder "bissig" stehen. -- `(meet [lemma="Hund"] [lemma="(beißen|bissig)"] -5 5)` +* `(meet [lemma="Hund"] [lemma="(beißen|bissig)"] -5 5)` ### Quiz
-AMC 4.1. Suche in der Konkordanz, schützen und Klima im Kontext. In grün und gelb das Wort Klima in verschiedener Bedeutung. + AMC 4.1. Suche in der Konkordanz, schützen und Klima im Kontext. In grün und gelb das Wort Klima in verschiedener Bedeutung.
- - - Sehen Sie sich das Sucheregbnis im Bild oben an. Wie könnte die Suchanfrage gelautet haben? - - - - `(meet [lemma="schützen"] [lemma="Klima|Kanzler"] -2 2)` - - - - `(meet [lemma="schützen"] [lemma="Klima"] -5 5)` - - - - `(meet [lemma="schützen"] [lemma="Klima"])` - - - - `([lemma="schützen"] [lemma="Klima|Kanzler"] -2 2)` - - - - Sehr gut! - - - - Überprüfen Sie , ob der Suchausdruck vollständig ist! - - - - - - Welche der Aussagen ist falsch? - - - - Mit meet kann im linken und rechten Kontext eines Ausdrucks gesucht werden. - - - - Die Nachbarschaft, in der gesucht wird, kann für den linken und rechten Kontext separat festgelegt werden. - - - - Durch das Nutzen von RegEx können auch Suchen auf der Bedeutungsebene im AMC durchgeführt werden. - - - - Richtig, bei RegEx sind keine semantischen Tags hinterlegt. - - - - Doch, das ist korrekt. - - + + + Sehen Sie sich das Sucheregbnis im Bild oben an. Wie könnte die Suchanfrage gelautet haben? + + + + `(meet [lemma="schützen"] [lemma="Klima|Kanzler"] -2 2)` + + + + `(meet [lemma="schützen"] [lemma="Klima"] -5 5)` + + + + `(meet [lemma="schützen"] [lemma="Klima"])` + + + + `([lemma="schützen"] [lemma="Klima|Kanzler"] -2 2)` + + + + Sehr gut! + + + + Überprüfen Sie , ob der Suchausdruck vollständig ist! + + + + + + Welche der Aussagen ist falsch? + + + + Mit meet kann im linken und rechten Kontext eines Ausdrucks gesucht werden. + + + + Die Nachbarschaft, in der gesucht wird, kann für den linken und rechten Kontext separat festgelegt werden. + + + + Durch das Nutzen von RegEx können auch Suchen auf der Bedeutungsebene im AMC durchgeführt werden. + + + + Richtig, bei RegEx sind keine semantischen Tags hinterlegt. + + + + Doch, das ist korrekt. + + ## Suche auf Strukturebene in CQL -Sowohl bei der **Simple search** als auch bei den bisherigen Beispielen zur **CQL** blieben Informationen auf der **Strukturebene** (Dokumente, Absätze, Sätze) unberücksichtigt. Hier wird nun gezeigt, wie _auf_ und _mit_ **Strukturinformationen** gesucht werden kann. Wie oben gezeigt, werden +Sowohl bei der **Simple search** als auch bei den bisherigen Beispielen zur **CQL** blieben Informationen auf der **Strukturebene** (Dokumente, Absätze, Sätze) unberücksichtigt. Hier wird nun gezeigt, wie *auf* und *mit* **Strukturinformationen** gesucht werden kann. Wie oben gezeigt, werden Struktur-Informationen in den Input-Daten für die SkE mithilfe von XML-Elementen kodiert. In HTML und XML gelten die folgenden Notationskonventionen: -- `` Beginn-tag einer Struktur namens "S" -- `` End-tag einer Struktur namens "S" -- `` Die gesamte Stuktur "S" von Beginn bis Ende. +* `` Beginn-tag einer Struktur namens "S" + +* `` End-tag einer Struktur namens "S" + +* `` Die gesamte Stuktur "S" von Beginn bis Ende. Mit dieser Kodierungskonvention arbeiten wir auch in der Suchabfragesprache CQL. In amc steht die Struktur "doc" (Dokument) für einen Zeitungsartikel, d.h. -- `` Findet alle (Zeitungs)Artikel -- `` Findet alle Artikelanfangsmarker -- ` []` Findet das _erste_ Token jedes Artikels -- `[] ` Findet das _letzte_ Token jedes Artikels +* `` Findet alle (Zeitungs)Artikel + +* `` Findet alle Artikelanfangsmarker + +* ` []` Findet das *erste* Token jedes Artikels + +* `[] ` Findet das *letzte* Token jedes Artikels Strukturen können bekanntlich ihre eigenen Attribute aufweisen, und nach diesen kann wie folgt gesucht werden: -- `` Artikel mit der id "xyz" -- `` Artikel aus der Zeitung "Der Standard" aus dem Jahr 2017 (beachten Sie, dass ein **logisches &** verwendet werden muss: Sie suchen nach Artikeln die zwei Bedingungen erfüllen müssen: sie müssen aus dem "STANDARD" stammen UND das Veröffentlichungsjahr +* `` Artikel mit der id "xyz" + +* `` Artikel aus der Zeitung "Der Standard" aus dem Jahr 2017 (beachten Sie, dass ein **logisches &** verwendet werden muss: Sie suchen nach Artikeln die zwei Bedingungen erfüllen müssen: sie müssen aus dem "STANDARD" stammen UND das Veröffentlichungsjahr 2017 haben) Für die Spezifikation der Werte der Strukturattribute können reguläre Ausdrücke genauso verwendet werden, wie es oben bereits für den Inhalt von Token-Attributen demonstriert wurde: -- `` : alle Artikel aus den 1990ern -- `` oder -- `` oder -- `` : alle Artikel aus 1998 oder 1999 +* `` : alle Artikel aus den 1990ern + +* `` oder + +* `` oder + +* `` : alle Artikel aus 1998 oder 1999 ### within/ containing Mit **containing** und **within** können Bedingungen auf Strukturen und auf Token miteinander kombiniert werden: -**containing**: wird verwendet um Einschränkungen auf _Strukturen_ auszudrücken: es wird nach Strukturen gesucht, die bestimmte "Dinge" enthalten. z.B. alle Sätze, die das Wort "Haus" beinhalten: +**containing**: wird verwendet um Einschränkungen auf *Strukturen* auszudrücken: es wird nach Strukturen gesucht, die bestimmte "Dinge" enthalten. z.B. alle Sätze, die das Wort "Haus" beinhalten: + +* ` containing [word="Haus"]` + +**within**: wird verwendet um Einschränkungen auf *Token* auszudrücken: es wird nach Token gesucht, die sich in bestimmten Strukturen befinden. z.B. alle Fundstellen für "Haus", aber nur, wenn sie in einem Artikel des "STANDARD" stehen, der 2010 oder später erschienen ist. -- ` containing [word="Haus"]` +* `[word="Haus"] within ="2010"/>` -**within**: wird verwendet um Einschränkungen auf _Token_ auszudrücken: es wird nach Token gesucht, die sich in bestimmten Strukturen befinden. z.B. alle Fundstellen für "Haus", aber nur, wenn sie in einem Artikel des "STANDARD" stehen, der 2010 oder später erschienen ist. +* Auch die Verwendung von Negation (`not`) ist im Zusammenhang von `within` und `containing` möglich: z.B. suche nach "Ball" -- aber *nicht* im Sportressort (das wäre ein Versuch, eher Beispiele mit der Bedeutung Tanzball zu finden) -- `[word="Haus"] within ="2010"/>` -- Auch die Verwendung von Negation (`not`) ist im Zusammenhang von `within` und `containing` möglich: z.B. suche nach "Ball" -- aber _nicht_ im Sportressort (das wäre ein Versuch, eher Beispiele mit der Bedeutung Tanzball zu finden) -- `[word="Ball"] not within ` +* `[word="Ball"] not within ` -