Skip to main content

Querying auf LCP

Die LCP Dokumentation ist hier: https://lcp.linguistik.uzh.ch/manual/dqd.html

DQD steht für Descriptive Query Definition und ist LCPs Sprache für Queries. Die folgende Einführung geht genauer auf die DQD Syntax ein und enthält Beispiele und Szenarien zur Illustration. Diese können im Prinzip für alle Korpora auf LCP verwendet werden, jedoch müssen teilweise die Namen der Attribute und Entities angepasst werden. Die Beispiele hier wurden mit dem öffentlich zugänglichen Text+Berg-Korpus - Schweizer Alpen-Clubs (SAC) getestet und können dort eins-zu-eins übernommen werden.


Grundlegendes

Die Grundlagen finden sich noch genauer dokumentiert im Manual.

Einfache Suche

Einfache Suche nach einer Wortform:

Segment s

Token@s t
form = "Gärten"

result => plain
context
s
entities
t

Hier wird in den Segments s in den Token t in den Wortformen nach dem type "Gärten" gesucht. Statt form kann man auch nach den anderen Annotationen suchen, im Regelfall also auch nach lemma und pos.

Regular Expressions

Des Weiteren kann man in der Suche auch Regular Expressions (Regex) eingeben, umgeben von Forward-Slashes, wie im Folgenden (wobei die Anführungszeichen wegfallen):
/^[Kk]inder/

Hinweis: Ein gutes Tutorial, um Regular Expressions zu lernen, findest du z.B. hier (auf Englisch).

Mehrere verschiedene Matches erlauben:

lemma = /Tödi|Matterhorn|Rigi/

Die Query oben findet alle Lemmas, die eine der Wortfolgen enthalten, also auch «Matterhornbesteigung» oder «Rigireise». Um wirklich nur die Wortfolgen und nichts anderes zu erhalten, suche folgendermassen:

lemma = /^(Tödi|Matterhorn|Rigi)$/ oder lemma = /^Tödi$|^Matterhorn$|^Rigi$/

Mini-Übersicht zu Regex:

ZeichenBeschreibungBeispielmögliche Resultate
.any character/geh../gehen, gehst
^starts with/^Rigi/Rigi, Rigireise, Rigibesteigung
$ends with/heit$/Freiheit, Sicherheit, Gelegenheit
*match 0 or more times/^Ver.*heit$/Verbundenheit, Verlassenheit, Vergangenheit
+match 1 or more times/das+$/das, dass, dasss
?match 0 or 1 times
|either or
{\N}match exactly N times/^ge.{3}en$/gewesen, gewogen, gegeben
()group and capture/(e|s){5}/Tennessee, Eisseespitze, Besessenheit
[]use one of the options/^[Kk]inder/Kinder, kinderlos, Kinderspiel

Die match Operatoren gelten jeweils für das direkt vorangegangene Zeichen, bzw. die Gruppe

Mehrere Keywords und Sequenzen

Um nach mehreren Tokens in demselben Segment (meist bedeutet das im selben Satz) zu suchen, spezifiziert man in der Query einfach mehrere Token-Blöcke wie folgt:

Segment s

Token@s t1
form = /^Schweiz/

Token@s t2
lemma = /^Deutsch/

result => plain
context
s
entities
t1
t2

Die Query oben sucht zwar nach Segments, die sowohl ein Token enthalten das mit Schweiz beginnt als auch ein Token das mit Deutsch beginnt. Dieses Tokens können irgendwo im Segment stehen.

Möchte man nun nach zwei Tokens unmittelbar hintereinander suchen, definiert man eine Sequence.

Article a

Segment@a s

sequence@s seq
Token t1
xpos = /^ADJ/
Token t2
lemma = "Schweiz"

result => plain
context
s
entities
t1
t2

Bei längeren Sequenzen kann in entities auch der Name der definierten Sequenz folgen damit das ganze Resultat angezeigt wird.

Article a

Segment@a s

sequence@s seq
Token t1
xpos = /^ADJ/
Token t2
form = "Schweiz"
Token t3
xpos = /^V/

result => plain
context
s
entities
seq

Darstellungsmöglichkeiten der Resultate

In LCP können die Resultate auf drei verschiedene Arten ausgegeben werden: plain, analysis und collocation. Ausserdem geschieht (anders als z.B. bei CQPWeb) die Definition des Ausgabemodus im selben Schritt wie die Abfrage (query).

Man kann den Resultat-Registerkarten jeweils eigene Namen geben, diese stehen vor dem Pfeil zur Art der Darstellung und müssen (Stand 26.10.2025) kleingeschrieben sein.

Plain

Zeigt matching entities in ihrem Kontext. Generiert zusätzlich eine KWIC-Ansicht (keyword in context).

Für Beispiele siehe oben in Grundlegendes. Möchte man alle Ergebnisse anzeigen lassen (search whole corpus), kann es gerade bei vielen Ergebnissen lange dauern oder sich sogar aufhängen. Wenn man nur Statistiken möchte (analysis oder collocation), plain besser rausnehmen.

Analysis

Mit analysis können verschiedene statistische Eigenschaften der Resultate gerechnet werden.

Der analysis Block besteht aus 2-3 Teilen:

  • attributes: definieren, welche «Dimension» der Token aus der Query man untersuchen möchte.
  • functions: definieren, welche statistische Analyse man machen möchte. Zur Auswahl stehen: frequency, minimum, maximum, average, stddev (Hinweis: Stand 20.1.26 ist ausschliesslich frequency implementiert)
  • filter: ist optional, man kann Resultate einschränken, um z.B. den long tail einer Analyse zu kürzen.
Article a

Segment@a s

sequence@s seq
Token t1
xpos = /^ADJ/
Token t2
lemma = "Schweiz"

result => plain
context
s
entities
t1
t2

myStat1 => analysis
attributes
t1.lemma
t2.lemma
functions
frequency
filter
frequency > 5

Kollokationen

Collocations 1: Kontext von Target Wörtern

Der Query-Block besteht aus drei Teilen:

  • center: das Token, zu welchem die Kollokate berechnet werden sollen
  • window: wie viele Tokens vor und nach dem center angeschaut werden sollen
  • attribute: welche Dimension der Token angezeigt werden soll

Beispiel:

LCP zeigt die Ergebnisse in einer Registerkarte namens myColl1 an. Diese Registerkarte zeigt pro Zeile ein Lemma an, zusammen mit der Anzahl der Co-Occurrences dieses Lemmas innerhalb von 2 Tokens vor und 2 Tokens nach den t2 Übereinstimmungen.

Segment s

sequence@s seq
Token t1
xpos = /^ADJ/
Token t2
lemma = "Schweiz"

result => plain
context
s
entities
t1
t2

myColl1 => collocation
center
t2
window
-2..+2
attribute
lemma

Die Resultate zeigen verschiedene Kollokationsmasse an, man kann also auch nach verschiedenen Massen ordnen.

Collocations 2: Co-Occurrence von Target Wörtern

Es wird ein Set an Wörtern von einem früheren Query Teil als «Space» definiert. Die Kollokationsanlyse untersucht, wie häufig verschiedene Wörter aus dem Set im gleichen Segment vorkommen.

Beispiel:

Im ersten Schritt werden alle Eigennamen gesucht und der Kontext um diese Wörter (fünf Wörter davor und danach) herausgefiltert. Innerhalb von diesem Kontext werden dann nur die konjugierten Verben angeschaut. Schlussendlich erhalten wir eine Übersicht über die Verben (als Lemmas), die am häufigsten im Kontext von Eigennamen auftreten (wobei sich in diesem Fall viele französische Wörter miteingeschlichen haben, die vermutlich irrtümlich als Verben getaggt wurden).

Segment s

Token@s t
xpos = "NE"

set prox
Token@s tx
position(tx) > position(t) - 5
position(tx) < position(t) + 5
tx.xpos = /VMFIN|VAFIN|VVFIN/

eigennamen => plain
context
s
entities
t

verbs_near_ne => collocation
space
prox
attribute
form

Szenarien

Hier folgt eine Sammlung von verschiedenen Szenarien zum Ausprobieren.

Kollokationen zu einem Token finden

Segment s

Token@s t1
form="Heimat"

kollokationen => collocation
center
t1
window
-5..+5
attribute
form

Beschränke die Resultate auf Ergebnisse aus Texten mit einem bestimmten Metadatum

Book b
year <= 1900
year > 1880

Segment@b s

Token@s t1
form="Schweiz"

results => plain
context
s
entities
t1

kollokationen => collocation
center
t1
window
-5..+5
attribute
form

Frequenz eines Tokens über eine Artikel Kategorie

Article a

Segment@a s

sequence@s seq
Token t1
xpos = /^ADJ/
Token t2
lemma = "Schweiz"

kWIC => plain
context
s
entities
t1
t2

adjDist => analysis
attributes
a.category
t1.lemma

functions
frequency