Korpussuche – Suchmaschine und Suchabfragesprache
Die DWDS-Korpussuche bietet ein umfängliches Spektrum an Möglichkeiten für Anfragen an unsere Textsammlungen (Korpora). Entsprechend reichhaltig (und manchmal auch komplex) ist die Abfragesprache, die mittels der Software DDC realisiert wurde.
Hinweis
Alle Suchbeispiele in dieser Dokumentation sind anklickbar und führen
Sie direkt zu Korpusergebnissen.
Für Fragen zur Korpussuche schreiben Sie uns gerne eine
Nachricht.
Schnellübersicht DDC
In dieser Schnellübersicht werden die wichtigsten Konzepte der Abfragesprache für Suchen in den DWDS-Korpora gelistet.
Sucheingabe | Bemerkung | Beispieltreffer |
---|---|---|
Haus | lemmabasierte Suche | Haus, Hauses, Häuser, Häusern, … |
@Haus | exakte Wortform | Haus |
Haus* | Präfixsuche | Haus, Hausmeister, … |
*haus | Suffixsuche | Elternhaus, zuhaus, … |
*haus* | Infixsuche | hausfraulich, Verlagshaus, Schauspiel, … |
/ha[mu]s?t/ | regulärer Ausdruck |
schaut, Hochamt, Goldhamster, … [ ha , gefolgt von m oder u ,
danach optional s , dann t ]
|
/weg/gi | regulärer Ausdruck auf ganzem Tokenfeld mit Ignorieren der Groß-/Kleinschreibung | weg, weG, wEg, wEG, Weg, WeG, WEg, WEG |
weg|case | Termexpansion (hier: alle Groß-/Klein-Schreibvarianten im Korpus) | WEG, Weg, weg |
{Haus,Hof} | Tokens als Menge | Haus, Häuser, Höfen, … |
Haus && Hof | Und-Suche | Sätze, in denen Formen von Haus und Hof vorkommen |
Haus || Hof | Oder-Suche | Sätze, in denen Formen von Haus oder Hof vorkommen |
Haus && !Hof | Negation | Sätze, in denen eine Form von Haus und keine Form von Hof vorkommt |
"ein Haus" | Wortgruppe/Phrase | ein Haus, eines Hauses, … |
"gut \, am besten" | Phrasensuche mit Satzzeichen | gut, am besten; besser, am besten |
"ein #2 Haus" | Phrase mit Abstand (maximal 2) | ein glückliches Haus, eines der schönen Häuser, … |
"ein #>2 Haus" | Phrase mit Abstand (mehr als 2) | Sätze, in denen zwischen einer Form von ein und einer Form von Haus mehr als 2 Tokens stehen |
"ein #=2 Haus" | Phrase mit Abstand (genau 2) | Sätze, in denen zwischen einer Form von ein und einer Form von Haus genau 2 Tokens stehen |
NEAR(gut,Beispiel,3) | Abstandssuche ohne best. Reihenfolge |
bestes Beispiel, [durch einige] Beispiele gut [belegt] |
NEAR(Honig,Milch,fließen,5) | Abstandssuche ohne best. Reihenfolge |
Land, wo Milch und Honig fließt; Honig und Milch nur in Rinnsalen fließen |
NEAR("wenn ich","werde ich",2) | Abstandssuche ohne best. Reihenfolge mit Wortgruppen | Wie würde ich aussehen, wenn ich [...] |
$p=PPOSS | Abfrage nach Wortart | unseren, meiner, deinigen, … |
Haus WITH $.=0 | Satzanfang | Sätze, die mit einer Form von Haus beginnen |
Haus WITH $.=-2 |
Satzende (Hinweis: $.=-2 sucht nach dem vorletzten Token im
Satz, meist ist ein Satzzeichen das letzte Token)
|
Sätze, die mit einer Form von Haus enden |
Grundsätzliches zur Suchmaschine
Der Index der DWDS-Suchinfrastruktur besteht aus mehreren Ebenen. Das Verständnis dessen ist wichtig für die korrekte Formulierung der Abfragen und die Interpretation der Suchergebnisse.
Korpora
Korpora sind Textsammlungen wie beispielsweise das DWDS-Kernkorpus oder das Deutsche Textarchiv. Eine Übersicht über die im DWDS recherchierbaren Korpora finden Sie hier.
Hinweis
Bitte beachten Sie, dass eine korpusübergreifende Suche nicht möglich ist. Sie können allerdings in unseren Metakorpora recherchieren, welche mehrere Korpora aggregieren.
Dokumente
Jedes Korpus vereint eine Anzahl von Dokumenten unterschiedlichen Typs (z. B. Bücher, Zeitungsartikel, Blogeinträge) mit ihren Metadaten. Nach diesen Metadaten kann die Suchanfrage entsprechend gefiltert werden.
Sätze
Der Textteil der Dokumente wurde für die Indexierung in einzelne Sätze zerlegt. Wird in der Suchabfrage nichts anderes spezifiert, werden einzelne Sätze als Treffer zurückgegeben.
Hinweis
Die Zerlegung eines Textes in einzelne Sätze ist ein automatischer Prozess.
Tokens
Jeder Satz wurde für die Indexierung in einzelne Worte sowie Satzzeichen zerlegt (= tokenisiert). Diese Tokens haben verschiedene Eigenschaften (z. B. Wortart und Grundform) und Werte, die entsprechend abgefragt werden können.
Hinweis
Die Tokenisierung ist ein automatischer Prozess.
Beispiele DWDS-Suchinfrastruktur
# | Autor | Titel | Datum | Textklasse | [weitere Felder] |
---|---|---|---|---|---|
0 | Goethe, Johann Wolfgang von | West-östlicher Divan | 1819 | Belletristik::Lyrik | Lizenz: Distributed under the Creative Commons Attribution-NonCommercial 3.0 Unported License. |
1 | Kafka, Franz | Der Proceß | 1925 | Belletristik::Roman | Digitalisierungsvorlage: Kafka, Franz: Der Proceß, Frankfurt a. M.: Fischer 1993 |
2 | Die Zeit | Fahrdienst-Vermittler Uber holt sich Unterstützung für Datenschutz | 2014-11-21 | Zeitung; Internet; Verkehr; Taxi; Telekommunikation; Datenschutz; USA | Zitiertitel: Die Zeit, 21.11.2014 (online) |
3 | Game of Thrones: The Wolf and the Lion | 2011 | Untertitel | URL: https://www.opensubtitles.org/... |
|
4 | John Aysa | Drool | 2015-10-14 | internetbasiert | Datum des Seitenabrufs: 2017-02-15 |
# | Token | Lemma | Part-of-Speech |
---|---|---|---|
0 | Im | im | APPRART |
1 | Anfang | Anfang | NN |
2 | war | sein | VAFIN |
3 | das | d | ART |
4 | Wort | Wort | NN |
5 | . | . | $. |
# | Originaltext | Token in latin1 | normalisierte Schreibung | Lemma | Part-of-Speech |
---|---|---|---|---|---|
0 | Vnd | Vnd | Und | und | KON |
1 | goͤnn’ | gönn' | gönne | gönnen | VVFIN |
2 | jhn | jhn | ihn | er | PPER |
3 | dir | dir | dir | du | PPER |
4 | noch | noch | noch | noch | ADV |
5 | jtzt | jtzt | jetzt | jetzt | ADV |
6 | . | . | . | . | $. |
Abfragesyntax
Sie können Ihre Anfrage mittels einer einfachen Ein-Wort-Abfrage formulieren. Darüberhinaus unterstützt die Suchmaschine im DWDS Boolesche Operatoren, Phrasensuche, Filter auf Tokenebene, Filter nach Metadaten, Sortieroperationen und vieles mehr.
Die formale Beschreibung und Dokumentation der Abfragesyntax für DDC finden Sie hier.
Generell folgen Abfragen diesem Muster:
KLAUSEL [KLAUSEL, ...] [FLAGS] [FILTER]
Klauseln sind einzelne oder mit Booleschen Operatoren verbundene Filter auf Tokenebene.
Boolesche Operatoren
Boolescher Operator | Bemerkung | Beispiel |
---|---|---|
KLAUSEL && KLAUSEL | logische Konjunktion ('UND') | Haus && Hof |
KLAUSEL || KLAUSEL | logische Disjunktion ('ODER') | Haus || Hof |
!KLAUSEL | logische Negation ('NICHT') | Haus && !Hof |
(KLAUSEL) | explizite Gruppierung | Haus && (Hof || Garten) |
Hinweis
Die logische Negation ist nicht auf alle Klauseln anwendbar, meist nur in Verbindung mit nicht-negierten Klauseln oder Filtern. Außerdem gelten für die Abfrage über dwds.de weitere Einschränkungen.
Hinweise zur Abfragesprache
Sonderzeichen und Schlüsselwörter
Einige Zeichen und Wörter haben innerhalb der Abfragesprache eine besondere Bedeutung. Wenn explizit nach diesen gesucht werden soll, müssen diese mithilfe eines vorangestellen Backslashs maskiert werden. Alternativ können Sie auch das ganze Abfragewort in einfache Anführungszeichen setzen, falls es Sonderzeichen enthält.
Hinweis
Bitte beachten Sie, dass Sonderzeichen, die als eigenständige Satzzeichen fungieren, als separates Token gesucht werden müssen.
Zeichen mit besonderer Bedeutung
& | # ^ ~ = $ . ! ? , : ; @ % / \ ( ) { } [ ] < > * ' "
Folgende Schlüsselwörter haben innerhalb der Abfragesprache eine besondere Bedeutung, egal ob in Groß- oder Kleinschreibung. Möchten Sie nach solch einem Wort literal suchen, muss dieses in einfache Anführungszeichen gesetzt werden.
Schlüsselwörter mit besonderer Bedeutung
Schlüsselwort | Bedeutung |
---|---|
WITH WITHOUT WITHOR WOR ORWITH | logische Verknüpfung von Bedingungen auf Tokenebene |
COUNT | COUNT() -Abfrage |
DOC DOCID FILENAME FILEID | Gruppierungskriterium in COUNT() -Abfragen |
NEAR | Abstandssuche ohne bestimmte Reihenfolge |
DATE | Filter nach Datum |
Beispiele
Beispiel | Erklärung |
---|---|
\? | Fragezeichen |
ich @hab\'s | Apostroph als Auslassungszeichen |
'Lehrer*in' | gegenderte Form von Lehrer; siehe dazu auch den Abschnitt Wie kann man gegenderte Formen suchen? |
ich hab ein 'date' | Schlüsselwort als literales Token |
Unicode-Unterstützung
Die Abfragesprache und die Korpora unterstützen vollständig Unicode, entsprechend
werden alle Treffer in UTF-8-Kodierung ausgeliefert. Sie können also direkt mit
UTF-8-Zeichen suchen. Alternativ wird auch die von
JSON
entlehnte Schreibweise \uXXXX
in einfachen und mit Single Quotes
maskierten Filtern unterstützt. In regulären Ausdrücken
können Sie die PCRE-Syntax \x{XXXX}
nutzen.
Reguläre Ausdrücke
/REGEX/[MODIFIER] !/REGEX/[MODIFIER] s/REGEX/REPLACEMENT/[MODIFIER]
Reguläre Ausdrücke sind eine mächtige Möglichkeit, innerhalb von Texten (Zeichenketten) zu suchen. Eine anfängerfreundliche Einführung in die Thematik finden Sie im Blog von Daniel Fett. Eine umfängliche Referenz finden Sie in perlretut. Sie können reguläre Ausdrücke in Tokenfiltern und bei den meisten Metadatenfiltern mittels der Syntax von PCRE (Perl Compatible Regular Expressions) formulieren.
Negierte Suchen sind mittels vorangestelltem !
durchzuführen.
Für Ersetzungsoperationen in Verbindung mit Metadatenfiltern
steht der s/REGEX/REPLACEMENT/
-Operator bereit.
Hinweis
Bitte beachten Sie, dass reguläre Ausdrücke in der Suchmaschine per Default
nicht verankert sind, es werden also (wenn nicht
explizit angegeben) Teilausdrücke gesucht. Sie können den regulären
Ausdruck mit /^(?:...)$/
oder /.../g
auf
das gesamte zu durchsuchende Indexfeld verankern.
Hinweis
Das Begrenzungszeichen eines regulären Ausdrucks ist immer der Slash
/
, für die literale Suche nach diesem Zeichen muss es mit
einem Backslash maskiert werden: /\//
.
Hinweis
Bitte beachten Sie, dass die Suche mit der Fehlermeldung
too many expansions for regex /.../ (MaxRegExpExpansionSize=262144)
quittiert wird, wenn der von Ihnen eingegebene reguläre Ausdruck
auf mehr als 262144 Einträge im Index passt.
Achtung
Die Suche mit regulären Ausdrücken kann zu teuren Berechnungen und
Timeouts führen. Besonders Operatoren wie *
und
+
nutzen Backtracking und sollte daher vermieden werden.
Verzichten Sie daher, wenn möglich, auf Konstrukte wie .*
und .+
. Meist führen auch Anfragen in Mengennotation
{TERM,TERM,...}
oder Präfix-/Suffixnotation
TERM*
, *TERM
zu den gewünschten Ergebnissen.
Optionale Modifier für reguläre Ausdrücke (miteinander kombinierbar)
Sucheingabe | Bemerkung |
---|---|
/REGEX/d | konvertiert den regulären Ausdruck und die zu durchsuchenden Indexwerte vor dem Matching von UTF-8 nach ASCII |
/REGEX/g |
in Suchanfragen: konvertiert den regulären Ausdruck von /REGEX/
nach /^(?:REGEX)$/ , matcht also das komplette Indexfeld
|
/REGEX/g | in Ersetzungen: wendet das Suchmuster mit der Ersetzung auf alle Treffer an (sonst nur auf den ersten) |
/REGEX/i | Groß-/Kleinschreibung ignorieren |
/REGEX/x | erlaubt Kommentare im Suchmuster |
Abfragen mit negierten Bedingungen
Abfragen, die rein negierte Bedingungen auf Token-Ebene beinhalten, werden vom Suchsystem auf der DWDS-Webseite mit einer Fehlermeldung zurückgewiesen, da dieser Typ von Abfragen u. U. recht teuer zu berechnen ist. Sie können allerdings das dstar-System nutzen, um dort unsere Korpora abzufragen. Im Folgenden ein paar Beispiele, in denen Sie Negationen auf Tokenebene einsetzen können:
- Sätze, in denen Haus, aber nicht weiß vorkommt:
Haus && !weiß
- Sätze, in denen die Phrase weißen Haus, aber nicht die Phrase im weißen Haus vorkommt:
"@weißen Haus" && !"im @weißen Haus"
- falsch (Syntaxfehler):
"!im @weißen Haus"
Hinweis
Sie können negierte Bedingungen auch auf Metadatenfilter anwenden.
Filter auf Tokenebene
Ein einzelner Suchterm bezieht sich immer auf ein Token. Folgende Bedingungen können gesetzt werden:
Bedingung | Bemerkung | Beispiel |
---|---|---|
TERM | einfaches Wort (wird expandiert) | Haus |
'TERM' | Suchterm in einfachen Anführungszeichen (vgl. Sonderzeichen, wird expandiert) | 'Haus' |
@TERM | exakter Treffer | @Häuser |
/REGEX/ | regulärer Ausdruck (PCRE-Syntax) | /^Hausw/ |
* | Universalmatch (= beliebiger Wert) | |
TERM|Expander[|Expander,...] | Termexpansion | Haus | gn-syn |
TERM* | Präfixsuche | Haus* |
*TERM | Suffixsuche | *haus |
*TERM* | Infixsuche | *haus* |
{TERM,TERM,...} | Mengensuche (wird expandiert) | {Haus,Hof,Garten} |
@{TERM,TERM,...} | Mengensuche nach exakten Treffern | @{Haus,Hof,Garten} |
Hinweis
Die Mengensuche funktioniert auch mit den Präfix-, Suffix- und Infixoperatoren:
{TERM,TERM,...}*
*{TERM,TERM,...}
*{TERM,TERM,...}*
Alle diese Bedingungen können auch genutzt werden, um gezielt einzelne
Tokenindices mittels $INDEX=BEDINGUNG
abzufragen.
Für die logische Verknüpfung der Bedingungen auf Tokenebene stehen folgende Operatoren bereit:
Operator | Bemerkung | Aliasse |
---|---|---|
BEDINGUNG WITH BEDINGUNG | Konjunktion mehrerer Bedingungen auf Tokenebene | &= |
BEDINGUNG WITHOUT BEDINGUNG | Konjunktion positiver und negativer Bedingungen auf Tokenebene | !WITH , WITH! , != , &!= , &=! |
BEDINGUNG WITHOR BEDINGUNG | Konjunktion unabhängiger Bedingungen auf Tokenebene | WOR , ORWITH , |= |
Abfragbare Indices
Index | Aliasse | Bemerkung | Einschränkung |
---|---|---|---|
$Utf8 | $u |
originales Token in UTF-8 (= Oberflächenform) | nur DTA-Korpus |
$CanonicalToken | $v |
mit DTA::CAB normalisierte, moderne Wortform | nur DTA-Korpus |
$Token |
DTA: $w alle anderen Korpora: $w , $CanonicalToken , $Utf8 , $u , $v
|
DTA-Korpus: originales Token, mit unicruft transliteriert alle anderen Korpora: originales Token (= Oberflächenform) |
|
$Lemma | $l |
Lemma (Grundform) | |
$Pos | $p |
Part-of-Speech (Wortart) | |
$Line | $lb |
Zeilennummer der Textseite auf der das Token steht | nur DTA-Korpus |
$Page | $page |
Seitennummer (Scannummer des Faksimiles) auf der das Token steht | nur DTA-Korpus |
$Rend | $r |
typographische1 Attribute
(@rendition -Werte
ohne führendes # ) des Tokens als | -separierte Liste
|
nur DTA-Korpus |
$Context | $con |
textstrukturelle2 Attribute des Tokens als | -separierte, lexikografisch sortierte Liste
|
nur DTA-Korpus |
$XPath | $xpath |
kanonischer XPath3 zum tiefsten Elementknoten, der das erste Zeichen des Tokens
enthält; die „Präfixe“ /TEI/text/ bzw. /TEI/ sind bereits
abgeschnitten
|
nur DTA-Korpus |
$WordSep | $ws |
Boolesches Attribut: 1 wenn dem Token unmittelbar
Leerraum vorangeht, 0 sonst
|
|
$. |
Position des Tokens im Satz, Zählung beginnend mit $.=0 ,
Zählung vom Satzende rückwärts mit $.=-1 , $.=-2
etc.
|
Beispiele
Anfrage | Bemerkung |
---|---|
$w=@Häuser | literale Form Häuser |
$l=Haus | Lemma (Grundform) Haus |
Haus WITH $p=NN | Haus als (normales) Nomen |
Müller WITHOUT $p=NE | Müller nicht als Eigenname |
Müller WITH $p=N* | Müller als Nomen bzw. Eigenname |
Haus WITH $.=0 | Haus am Satzanfang |
Haus WITH ($.=0 WITHOR $.=-2) | Haus am Satzanfang oder Satzende |
Hinweis
¹ Für die Suche nach typografischen
Attributen mittels $Rend
empfiehlt sich die Benutzung von
regulären Ausdrücken in Verbindung mit
Word-Boundaries wie \b
, um zwischen Phänomenen wie
<hi rendition="#in">
und <hi rendition="#i">
unterscheiden zu können.
Hinweis
² Für die Suche nach
textstrukturellen Attributen mittels $Context
sind folgende
DTABf-Elemente
indiziert: text front body back div head argument hi cit fw lg
stage speaker formula table
. @type
-Attribute von div
-Elementen
werden durch einen Unterstrich plus entsprechendem Wert markiert.
Entsprechendes gilt für Werte des @place
-Attributs in
note
-Elementen: <note place="foot|left|right">
via note_foot
,
note_left
und note_right
, andere note
-Elemente
sind via note_other
abfragbar.
Textstruktur | XPath im TEI-Dokument | Wert im Index $Context |
---|---|---|
Brief als oberste Struktureinheit eines Dokuments | /TEI/text/body/div[@type="letter"] |
|body|div_letter|text| |
typografisch hervorgehobener Text in einer Tabelle innerhalb einer Fußnote innerhalb eines Wörterbucheintrags | /TEI/text/body/div[@type="lexiconEntry"] |
|body|div_lexiconEntry|hi|note_foot|table|text| |
Hinweis
³ Die XPath-Suche ist
(momentan) sehr limitiert und als statisches Textfeld implementiert, welches
den reinen Pfad im Dokumentbaum repräsentiert, z. B. als
body/div/p/note
.
Filter nach Wortarten (Part-of-Speech)
Alle Wörter in den DWDS-Korpora sind anhand des
STTS-Tagsets (Stuttgart-Tübingen-Tagset)
annotiert worden. Sogenannte Part-of-Speech-Tags (PoS) sind syntaktische Kategorien, die etwas genauer
ausdifferenziert sind als die üblicherweise unterschiedenen Wortarten. Die Abfrage erfolgt über
den entsprechenden Index $p=PoS
.
Zusätzlich zu den 54 Tags in der unten stehenden Liste können die
DWDS-Korpora auch PoS-Tags der Form FM.LANG
enthalten,
wobei LANG die ISO 639-1-Bezeichnung
einer erkannten Fremdsprache ist. Solche Tags werden dann vergeben, wenn
die computerlinguistische Vorverarbeitung den entsprechenden Satz einer erkannten
Fremdsprache zugeordnet hat, z. B. FM.en
im Falle von Englisch.
Des Weiteren kann das Tag FM.xy
bei „Sätzen“ vergeben
werden, die größtenteils aus Abkürzungen, Satzzeichen und/oder mathematischen
Formeln bestehen.
Wortart | PoS | Beschreibung | Beispiele |
---|---|---|---|
Adjektiv | ADJA | attributives Adjektiv | [das] große [Haus] |
ADJD | adverbiales oder prädikatives Adjektiv | [er fährt] schnell, [er ist] schnell | |
Adverb | ADV | Adverb | schon, bald, doch |
Präposition | APPR | Präposition; Zirkumposition links | in [der Stadt], ohne [mich] |
APPRART | Präposition mit Artikel | im [Haus], zur [Sache] | |
APPO | Postposition | [ihm] zufolge, [der Sache] wegen | |
APZR | Zirkumposition rechts | [von jetzt] an | |
Determiner | ART | bestimmter oder unbestimmter Artikel | der, die, das, ein, eine |
CARD | Kardinalzahl | zwei [Männer], [im Jahre] 1994 | |
Diverses | FM | fremdsprachliches Material | [Er hat das mit „] A big fish [“ übersetzt] |
ITJ | Interjektion | hm, ach, tja | |
XY | Nichtwort, Sonderzeichen enthaltend | 3:7, H2O, D2XW3 | |
Konjunktion | KOUI | unterordnende Konjunktion mit „zu“ und Infinitiv | um [zu leben], anstatt [zu fragen] |
KOUS | unterordnende Konjunktion mit Satz | weil, daß, damit, wenn, ob | |
KON | nebenordnende Konjunktion | und, oder, aber | |
KOKOM | Vergleichskonjunktion | als, wie | |
Nomen und Namen | NN | normales Nomen | Tisch, Herr, [das] Reisen |
NE | Eigennamen | Hans, Hamburg, HSV | |
TRUNC | Kompositions-Erstglied | An- [und Abreise] | |
Demonstrativpronomen | PDS | substituierendes Demonstrativpronomen | dieser, jener |
PDAT | attribuierendes Demonstrativpronomen | jener [Mensch] | |
Indefinitpronomen | PIS | substituierendes Indefinitpronomen | keiner, viele, man, niemand |
PIAT | attribuierendes Indefinitpronomen ohne Determiner | kein [Mensch], irgendein [Glas] | |
PIDAT | attribuierendes Indefinitpronomen mit Determiner | [ein] wenig [Wasser], [die] beiden [Brüder] | |
Personalpronomen | PPER | irreflexives Personalpronomen | ich, er, ihm, mich, dir |
Possessivpronomen | PPOSS | substituierendes Possessivpronomen | meins, deiner |
PPOSAT | attribuierendes Possessivpronomen | mein [Buch], deine [Mutter] | |
Relativpronomen | PRELS | substituierendes Relativpronomen | [der Hund,] der |
PRELAT | attribuierendes Relativpronomen | [der Mann,] dessen [Hund] | |
Reflexivpronomen | PRF | reflexives Personalpronomen | sich, einander, dich, mir |
Interrogativpronomen | PWS | substituierendes Interrogativpronomen | wer, was |
PWAT | attribuierendes Interrogativpronomen | welche [Farbe], wessen [Hut] | |
PWAV | adverbiales Interrogativ- oder Relativpronomen | warum, wo, wann, woher, wobei | |
Konnektivpronomen | PAV | Pronominaladverb | dafür, dabei, deswegen, trotzdem |
Partikel | PTKZU | „zu“ vor Infinitiv | zu [gehen] |
PTKNEG | Negationspartikel | nicht | |
PTKVZ | abgetrennter Verbzusatz | [er kommt] an, [er fährt] rad | |
PTKANT | Antwortpartikel | ja, nein, danke, bitte | |
PTKA | Partikel bei Adjektiv oder Adverb | am [schönsten], zu [schnell] | |
Vollverb | VVFIN | finites Verb, voll | [du] gehst, [wir] kommen [an] |
VVIMP | Imperativ, voll | komm [!] | |
VVINF | Infinitiv, voll | gehen, ankommen | |
VVIZU | Infinitiv mit „zu“, voll | anzukommen, loszulassen | |
VVPP | Partizip Perfekt, voll | gegangen, angekommen | |
Auxiliarverb | VAFIN | finites Verb, Auxiliar | [du] bist, [wir] werden |
VAIMP | Imperativ, Auxiliar | sei [ruhig!] | |
VAINF | Infinitiv, Auxiliar | werden, sein | |
VAPP | Partizip Perfekt, Auxiliar | gewesen | |
Modalverb | VMFIN | finites Verb, modal | dürfen |
VMINF | Infinitiv, modal | wollen | |
VMPP | Partizip Perfekt, modal | gekonnt, [er hat gehen] können | |
Satzzeichen | $, | Komma | , |
$. | satzbeendende Interpunktion | . ? ! ; : | |
$( | sonstige Satzzeichen, satzintern | " ' » « - [ ] ( ) |
Hinweis
Bitte beachten Sie, dass für die „rechte Seite“ des Ausdrucks $p=…
(also …
) gilt,
dass auch da Sonderzeichen, falls diese ohne spezielle Bedeutung
gemeint sind, entsprechend maskiert werden müssen. Für eine Suche nach satzbeendender Interpunktion
müssen Sie also schreiben: $p=\$.
(oder, dasselbe: $p='$.'
).
Markierung von Suchtreffern
Für eine explizite Markierung bzw. Nummerierung von Suchtreffern können die
einzelnen Tokenbedingungen mittels nachgestelltem =N
(1 ≤ N ≤ 255) markiert werden. Sinnvoll ist das vor allem bei Phrasensuchen
oder unbestimmten Reihenfolgen der gewünschten Suchwörter.
Die markierten Tokens werden in der Trefferansicht mit einem tiefgestellten Index
dargestellt. Beim Export der Suchtreffer können Sie diese Tokens wie folgt identifizieren:
Exportformat | Kennzeichnung |
---|---|
CSV, TSV | nachgestelltes /N |
JSON | Key .hl_ |
Hier ein Beispiel für die Suchabfrage Farbe|ot-asi=1 && Lebensmittel|ot-asi=2
(Farbe bzw. ein Unterbegriff von Farbe und Lebensmittel
bzw. ein Unterbegriff von Lebensmittel ohne bestimmte Reihenfolge):
Trefferansicht |
Ich trank doch keinen Alkohol[2],
nur schwarzen[1]
Kaffee[2].
|
---|---|
CSV-Export |
...,"Hit" ...,"Ich trank doch keinen Alkohol/2, nur schwarzen/1 Kaffee/2." |
Hinweis
Auch in COUNT()
-Abfragen kann diese
Funktion nützlich sein, um z. B. Gruppierungsfunktionen sinnvoll zu nutzen.
Termexpansion
Bevor im Index der Suchmaschine nach den eingegebenen Termen gesucht wird,
werden diese expandiert und anschließend wird nach diesen Expansionen im
Index gesucht. Sie können diese Expansion mit der Syntax
TERM|Expandierer
steuern, mehrere
Expandierer können durch weiteres Anhängen von |Expandierer
angegeben werden (Expansionskette).
Sie können die Termexpansion mit folgendem Tool ausprobieren. Mehrere Eingabeworte bzw. Expander sind durch Leerzeichen zu trennen. (Datengrundlage: DWDS-Kernkorpus)
Folgende Expandierer stehen in den DWDS-Korpora zur Verfügung:
Expandierer | Aliasse | Bemerkung | Beispielabfrage | Beispielausgabe |
---|---|---|---|---|
case | alle Groß-/Klein-Schreibvarianten | Haus |
HAUS, Haus, haus | |
eqlemma | eql |
alle Oberflächenformen mit dem Lemma der angegebenen Form | Hause |
Haus, Hauses, Häuser, ... |
id | null |
Identität | Haus |
Haus |
lemma | lemmatize |
„bestes“ Lemma und ggfls. Identität | Häuser |
Haus, Häuser |
lemmata | lemmas |
alle Lemmata | weißt |
weißen, wissen |
tolower | lc |
Kleinschreibung | Haus |
haus |
toupper | uc |
Großschreibung (alle Buchstaben) | Haus |
HAUS |
gn-syn | GermaNet: Synonyme | siehe Kapitel Thesaurus-Annotationen | ||
gn-syn1 | GermaNet: Synonyme, direkte Unter- und Oberbegriffe | |||
gn-syn2 | GermaNet: Synonyme, direkte und deren Unter- und Oberbegriffe | |||
gn-sub | germanet , gn-asi |
GermaNet: Synonyme und Unterbegriffe | ||
gn-sub1 | gn-asi1 |
GermaNet: Synonyme und direkte Unterbegriffe | ||
gn-sub2 | gn-asi2 |
GermaNet: Synonyme, alle direkten und deren Unterbegriffe | ||
gn-sup | gn-isa |
GermaNet: Synonyme und Oberbegriffe | ||
gn-sup1 | gn-isa1 |
GermaNet: Synonyme und direkte Oberbegriffe | ||
gn-sup2 | gn-isa2 |
GermaNet: Synonyme, alle direkten und deren Oberbegriffe | ||
ot-syn | OpenThesaurus: Synonyme | siehe Kapitel Thesaurus-Annotationen | ||
ot-syn1 | OpenThesaurus: Synonyme, direkte Unter- und Oberbegriffe | |||
ot-syn2 | OpenThesaurus: Synonyme, direkte und deren Unter- und Oberbegriffe | |||
ot-sub | openthesaurus , ot-asi |
OpenThesaurus: Synonyme und Unterbegriffe | ||
ot-sub1 | ot-asi1 |
OpenThesaurus: Synonyme und direkte Unterbegriffe | ||
ot-sub2 | ot-asi2 |
OpenThesaurus: Synonyme, alle direkten und deren Unterbegriffe | ||
ot-sup | ot-isa |
OpenThesaurus: Synonyme und Oberbegriffe | ||
ot-sup1 | ot-isa1 |
OpenThesaurus: Synonyme und direkte Oberbegriffe | ||
ot-sup2 | ot-isa2 |
OpenThesaurus: Synonyme, alle direkten und deren Oberbegriffe |
Default-Expandierer in den DWDS-Korpora
Explizite Angabe der Default-Expansion können Sie durch TERM|-
erreichen. Die Defaults sind für die einzelnen Indexfelder wie folgt definiert:
Index | Default-Expansion |
---|---|
$Token | eqlemma |
$Lemma | lemma |
$Pos | case |
Thesaurus-Annotationen
Die DWDS-Korpora sind durchgängig sowohl mit den beiden Thesaurus-Systemen GermaNet als auch OpenThesaurus annotiert. Sie können die entsprechenden Expandierer nutzen, um Synonyme und Unter- oder Oberbegriffe zu suchen.
Eine Abfrage nach Bank|ot-syn
entspricht beispielsweise einer
Suche nach {Bank, Bankhaus, Finanzinstitut, Finanzinstitution, Geldhaus,
Geldinstitut, Geschäftsbank, Kreditanstalt, Kreditinstitut, Sitzbank, Sparkasse}
.
Die folgende (zur Vereinfachung gekürzte) Abbildung veranschaulicht die verschiedenen Thesaurus-Expandierer am Beispiel des Wortes Bank. Klicken Sie auf einen Button, um die entsprechenden Felder rot hervorzuheben, deren Stichworte gesucht werden, wenn der entsprechende Expandierer genutzt wird.
Phrasen- und Abstandssuche
Mehrere, direkt aufeinander folgende Wörter (bzw. Tokens) können mithilfe
des Konstrukts "BEDINGUNG BEDINGUNG [BEDINGUNG,...]"
gefunden werden.
Hinweis
Bitte beachten Sie, dass Satzzeichen separate Tokens sind, also als eigene Bedingung formuliert werden müssen.
Hinweis
Die Eingabe mehrerer Bedingungen ohne "
oder andere Boolesche Operatoren auf
der DWDS-Webseite ist per Default eine Phrasensuche (und keine Boolesche
UND-Verknüpfung). Das ist ein anderes Verhalten als bei Suchen im
dstar-System (dort: UND-Verknüpfung) und dem
bequemen Nutzungsverhalten angepasst. Wir halten Sie dennoch an, Phrasensuchen mit
"…"
zu formulieren, um über alle Systeme hinweg konsistente Suchergebnisse
zu erzielen.
Abstandssuche mit bestimmter Reihenfolge
Ist die Reihenfolge der Tokenbedingungen im Satz bestimmt, kann der Abstand zwischen einzelnen Bedingungen mit den folgenden Operatoren bestimmt werden:
Operator | Bemerkung | Beispiel |
---|---|---|
"BEDINGUNG #<N BEDINGUNG" | höchstens N Tokens zwischen den Bedingungen, als Kurzform ist auch #N möglich |
"Haus #<3 Hof" |
"BEDINGUNG #>N BEDINGUNG" | mindestens N Tokens zwischen den Bedingungen | "Haus #>3 Hof" |
"BEDINGUNG #=N BEDINGUNG" | genau N Tokens zwischen den Bedingungen | "Haus #=3 Hof" |
Abstandssuche ohne bestimmte Reihenfolge
Ist die Reihenfolge der Tokenbedingungen im Satz
unbestimmt, kann der Abstand zwischen einzelnen
Bedingungen mit dem NEAR()
-Operator bestimmt werden:
Operator | Bemerkung | Beispiel |
---|---|---|
NEAR(BEDINGUNG1,BEDINGUNG2,N) | höchstens N Tokens zwischen beiden Bedingungen | NEAR(Haus,Hof,3) |
NEAR(BEDINGUNG1,BEDINGUNG2,BEDINGUNG3,N) |
jeweils höchstens N Tokens zwischen den 3 Bedingungen genauer: maximal N Tokens zwischen BEDINGUNG1 und BEDINGUNG2 und maximal N Tokens zwischen BEDINGUNG2 und BEDINGUNG3 und maximal N Tokens zwischen BEDINGUNG1 und BEDINGUNG3 |
NEAR(Haus,Hof,Garten,3) |
Hinweis
Sie können den NEAR()
-Operator auch mit Phrasen nutzen, z. B.
NEAR(kommen,"nach Hause",2)
.
Flags
Sie können mittels der Flags #SEP
, #JOIN
und #WITHIN
die Anzahl der Suchtreffer bestimmen:
Flag | Aliasse | Bemerkung |
---|---|---|
#SEP | #NOJOIN , #SEPARATE |
jeder passende Treffer wird ausgegeben (Default auf dwds.de) |
#JOIN | #NOSEPARATE , #NOSEP |
ein Treffer pro Satz wird ausgegeben |
#WITHIN Container | #IN |
Treffer-„Container“, mögliche Werte:
|
#WITHIN file
ist z. B. nützlich, wenn Sie nur einen „Treffer“ pro
Dokument erhalten wollen. Für normale Textabfragen erhalten Sie bei dieser Art Abfragen
einen Ausschnitt, der ggfls. auch mehrere Vorkommen der gesuchten Tokens mit ...
separiert anzeigt. In COUNT()
-Abfragen
wird jedes Dokument nur einfach gezählt.
Filtern und Sortieren
Filtern nach Metadaten
Das Filtern nach Metadaten geschieht mit dem Operator
#HAS[FELD,BEDINGUNG]
.
Mehrere dieser Filter können hintereinander geschrieben werden
und werden dann als logische UND
-Verknüpfung
angewandt.
Folgende Metadatenfelder stehen zur Verfügung:
Metadatenfeld | Bemerkung | Beispiel | Einschränkung |
---|---|---|---|
author |
Autor, meist nach dem Schema Nachname, Vorname im DTA-Korpus nach dem Schema Nachname, Vorname #GND |
Haus #HAS[author,/Goethe/] |
|
basename | eindeutiger Identifizierer eines Dokuments im Korpus | Haus #HAS[basename,'goethe_iphigenie_1787'] |
|
bibl | bibliografischer Kurztitel | Haus #HAS[bibl,/^Goethe/] |
|
collection | Name des Korpus, hilfreich bei Metakorpora wie Gegenwartskorpora mit freiem Zugang | Haus #HAS[collection,'wikipedia'] |
|
date | siehe dazu Filtern und Sortieren nach Datum | ||
flags |
Markierungen wie ocr (= Text entstammt OCR),
translation (= Text ist Übersetzung), sowie
Teilkorpora, zu denen das Dokument gehört, durch :: getrennt |
Haus #HAS[flags,/wikisource/] |
nur DTA-Korpus |
library | Bibliothek, der die Textvorlage entstammt | Haus #HAS[library,'SUB Göttingen'] |
nur DTA-Korpus |
party | Zugehörigkeit zu politischer Partei | Haus #HAS[party,SPD] |
nur im Korpus „Politische Reden“ |
pubPlace | Publikationsort | Haus #HAS[pubPlace,'Leipzig'] |
nur DTA-Korpus |
region | Region (Areal), dem der Beleg zuzuordnen ist | Bulette #HAS[region,*ost] |
nur ZDL-Regionalkorpus |
role | politische Funktion | Haus #HAS[role,Bundespräsident] |
nur im Korpus „Politische Reden“ |
shelfmark | Signatur des originalen Druckes | Haus #HAS[shelfmark,/8 FAB VII, 5162/] |
nur DTA-Korpus |
textClass | Textklassen, durch : bzw. :: getrennt |
Haus #HAS[textClass,/Roman/] |
|
title | Titel | Haus #HAS[title,/Goethe/] |
|
url | URL (falls Online-Quelle) | Haus #HAS[url,/greenpeace\.de/] |
nur in Webkorpora und einigen Zeitungen |
Hinweis
Beachten Sie, dass Groß-/Kleinschreibung bzgl. der Namen der Metadatenfelder signifikant ist.
Ein Filtern nach pubplace
wird z. B. wahrscheinlich einen Fehler werfen.
Bedingungen auf Metadatenfelder können wie folgt gesetzt werden:
Bedingung | Bemerkung |
---|---|
TERM | einfaches Wort |
'TERM' | Suchterm in einfachen Anführungszeichen (vgl. Sonderzeichen) |
/REGEX/ | regulärer Ausdruck (PCRE-Syntax) |
TERM* | Präfixsuche |
*TERM | Suffixsuche |
*TERM* | Infixsuche |
{TERM,TERM,...} | Mengensuche |
Sortieren nach Metadaten
Folgende Sortieroperatoren stehen für die Metadatensuche zur Verfügung:
Operator | Aliasse | Sortierung nach … |
---|---|---|
#LESS_BY[FELD] | #ASC, #ASC_BY |
FELD aufsteigend |
#GREATER_BY[FELD] | #DESC, #DESC_BY |
FELD absteigend |
Negierungen
Negierungen auf Metadatenfiltern können mittels vorangestelltem !
formuliert werden.
Abfrage | Bemerkung |
---|---|
Haus !#HAS[author,/Goethe/] | Haus in Texten mit Autor != Goethe (im DTA-Kernkorpus) |
Haus !#HAS[collection,{bmp_regional,mib_regional}] | Haus, nicht in den Regionalteilen der Zeitungen Mittelbayerische und Berliner Morgenpost (im ZDL-Regionalkorpus) |
Filtern und Sortieren nach Datum
Datumsangaben von Dokumenten sind, je nach Korpus, im Format YYYY-MM-DD, YYYY-MM oder YYYY kodiert. Die Suche nach YYYY entspricht dabei YYYY-01-01.
Operator | Aliasse | Bemerkung |
---|---|---|
#LESS_BY_DATE | #ASC_DATE , #ASC_BY_DATE |
Sortierung nach Datum aufsteigend |
#GREATER_BY_DATE | #DESC_DATE , #DESC_BY_DATE |
Sortierung nach Datum absteigend |
#DATE[DATUM] | #IS_DATE , #HAS_DATE |
Filter nach DATUM |
#LESS_BY_DATE[,DATUM] | s. o. | Filter mit DATUM als Obergrenze, Sortierung nach Datum aufsteigend |
#LESS_BY_DATE[DATUM,] | s. o. | Filter mit DATUM als Untergrenze, Sortierung nach Datum aufsteigend |
#LESS_BY_DATE[DATUM,DATUM] | s. o. | Filter mit Unter- und Obergrenze, Sortierung nach Datum aufsteigend |
#GREATER_BY_DATE[,DATUM] | s. o. | Filter mit DATUM als Obergrenze, Sortierung nach Datum absteigend |
#GREATER_BY_DATE[DATUM,] | s. o. | Filter mit DATUM als Untergrenze, Sortierung nach Datum absteigend |
#GREATER_BY_DATE[DATUM,DATUM] | s. o. | Filter mit Unter- und Obergrenze, Sortierung nach Datum absteigend |
Beispiele
Abfrage | Bemerkung |
---|---|
Haus #LESS_BY_DATE | Treffer für Haus, absteigend nach Datum sortiert |
Haus #DATE[1930] | Treffer für Haus von 1930 |
Haus #LESS_BY_DATE[1930,1950] | Treffer für Haus zwischen 1930 und 1950, aufsteigend nach Datum sortiert |
Sortieren nach Satzkontext
Diese Art von Sortierung ist besonders in der KWIC-Ansicht sinnvoll.
Operator | Aliasse | Sortierung (lexikografisch) nach … | Beispiel |
---|---|---|---|
#LESS_BY_MIDDLE | #MID , #MIDDLE , #ASC_MIDDLE |
Treffermitte aufsteigend | sein #MID |
#GREATER_BY_MIDDLE | #DESC_MIDDLE , #DESC_BY_MIDDLE |
Treffermitte absteigend | sein #GREATER_BY_MIDDLE |
#LESS_BY_LEFT | #LEFT , #ASC_LEFT , #ASC_BY_LEFT |
Kontext links vom Treffer aufsteigend | Haus #LEFT |
#GREATER_BY_LEFT | #DESC_LEFT , #DESC_BY_LEFT |
Kontext links vom Treffer absteigend | Haus #DESC_LEFT |
#LESS_BY_RIGHT | #RIGHT , #ASC_RIGHT |
Kontext rechts vom Treffer aufsteigend | Haus #ASC_RIGHT |
#GREATER_BY_RIGHT | #DESC_RIGHT , #DESC_BY_RIGHT |
Kontext rechts vom Treffer absteigend | Haus #DESC_BY_RIGHT |
Die vorgenannten Operatoren sind auch mittels nachgestellten eckigen Klammern parametrisierbar:
Parameter | Bedeutung | Beispiel | Bemerkung |
---|---|---|---|
[Index] | Sortierung nach Wert in Index | $p=ADJA WITH $.=0 #DESC_RIGHT[l] |
Adjektive am Satzanfang, absteigend nach Lemma des rechten Nachbarn sortiert |
[Index,Unterschranke] | Sortierung nach Wert in Index; nur Werte ab Unterschranke (nach ASCII) | Haus #LEFT[w,'q'] |
Vorkommen einer Form von Haus mit linkem Nachbarn ab „q“ und nach diesem aufsteigend sortiert |
[Index,Unterschranke,Oberschranke] | Sortierung nach Wert in Index; nur Werte zwischen Unterschranke und Oberschranke (nach ASCII) | @Ach #LEFT[w,'A','zz'] |
Vorkommen von Ach mit linkem Nachbarn zwischen „A“ und „zz“, nach diesem aufsteigend sortiert |
Hinweis
Beachten Sie, dass die Schrankenwerte an ASCII orientiert sind, Großbuchstaben also z. B. nach Ziffern und vor Kleinbuchstaben einsortiert sind. Eine entsprechende Tabelle finden Sie in der Wikipedia.
Sortieren und Filtern nach Satzlänge
Operator | Aliasse | Bemerkung | Beispiel |
---|---|---|---|
#LESS_BY_SIZE | #ASC_SIZE , #ASC_BY_SIZE |
Sortierung nach Satzlänge aufsteigend | Haus #LESS_BY_SIZE |
#GREATER_BY_SIZE | #DESC_SIZE , #DESC_BY_SIZE |
Sortierung Satzlänge absteigend | Haus #GREATER_BY_SIZE |
#SIZE[N] | #IS_SIZE , #HAS_SIZE |
Filtern nach Sätzen der Länge N | Haus #SIZE[4] |
Die Operatoren #LESS_BY_SIZE
und #GREATER_BY_SIZE
lassen sich mit
nachgestellten eckigen Klammern parametrisieren:
Parameter | Bedeutung | Beispiel | Bemerkung |
---|---|---|---|
[Unterschranke,] |
Sätze mit einer Mindestlänge | Italien #LESS_BY_SIZE[10,] |
Sätze mit Italien und einer Mindestlänge von 10 Tokens, aufsteigend nach Länge sortiert |
[,Oberschranke] |
Sätze mit einer Höchstlänge | Spanien #GREATER_BY_SIZE[,10] |
Sätze mit Spanien und einer Maximallänge von 10 Tokens, absteigend nach Länge sortiert |
[Unterschranke,Oberschranke] |
Sätze mit einer Mindest- und einer Höchstlänge | Mittelmeer #ASC_SIZE[12,15] |
Sätze mit Mittelmeer und einer Länge zwischen 12 und 15 Tokens, aufsteigend nach Länge sortiert |
Zufälliges Sortieren
Mit dem #RANDOM
-Operator (Alias: #RAND
) werden die
Suchergebnisse zufällig sortiert. Sie können mithilfe von #RANDOM[N]
einen (Integer-)Seed N (Default: 0
) setzen, um die Reproduzierbarkeit von Ergebnissen
zu gewährleisten.
Beschränkte Stichproben
Neben der Verwendung von #RANDOM[N]
können Sie auch
mit dem #PRUNE
-Operator die Treffermenge einschränken und so nur
eine eingeschränkte Stichprobe aus der Gesamttreffermenge erhalten:
#PRUNE[N, FILTER, ...]
.
Beispiele:
Abfrage | Bemerkung |
---|---|
Haus #PRUNE[1,file] | max. 1 Treffer pro Dokument |
Haus #PRUNE[5,date/10] | max. 5 Treffer pro Dekade |
Haus #PRUNE[1,author,textClass~s/:.*$//] | max. 1 Treffer pro Autor und Textklasse |
Hinweis: Der #PRUNE
-Operator wirkt als Sortieroperator, die
Treffer werden also aufsteigend nach Filterkriterium sortiert. Möchten Sie
absteigend sortieren, nutzen Sie stattdessen #PRUNE_DESC
. Möchten
Sie eine zufällig ausgewählte Stichprobe, nutzen Sie ... #RANDOM #PRUNE[...]
(in dieser Reihenfolge!).
Textklassen
Jedes Korpus bringt seine eigene Textklassifikation mit. Auf unserer
Statistikseite erhalten Sie eine Übersicht
über die verwendeten Textklassen. Bitte beachten Sie, dass dort und auch
in den Eingabeformularen für die Korpussuche stets nur eine sog.
Hauptklassifikation angegeben wird. In den Metadaten der einzelnen
Dokumente ist im Feld textClass
die gesamte Angabe zur
Textklasse verzeichnet. Die Hauptklassifikation steht dabei stets
vor einem (bzw. manchmal auch zwei) Doppelpunkt(en). Sie können
nach der Hauptklassifikation mittels
regulärem Ausdruck filtern:
... #HAS[textClass,/^Textklasse:/]
.
Listen- und Frequenzabfragen
Einfache Listen- und Frequenzabfragen
Möchten Sie nur Listen abfragen, ohne die Satzkontexte oder Metadaten dabei auszuwerten, nutzen Sie bitte die bereitstellten lexikalischen Datenbanken via lexdb.
Beispiele für diese Art von Abfragen sind:
- Wörter einer bestimmten Wortart,
- Wörter mit einer bestimmten Endung, einem bestimmten Wortbestandteil,
- die häufigsten N Wörter mit einem bestimmten Kriterium.
COUNT()
-Abfragen
Mittels COUNT()
-Abfragen können Sie Zahlen über die Ergebnisse von
Korpussuchen erhalten. Dabei besteht auch die Möglichkeit, nach diversen Kriterien
zu gruppieren. Eine COUNT()
-Abfrage gestaltet sich nach folgendem Muster:
COUNT ( KLAUSEL [KLAUSEL, ...] [FLAGS] [METADATENFILTER] ) [COUNT_BY] [COUNT_SORT]
Der (runde) Klammerausdruck ist dabei die DDC-Abfrage über Korpora, so
wie oben in diesem Dokument beschrieben. Für eine eventuelle
Gruppierung der Treffer können die einzelnen Tokenbedingungen
explizit mittels nachgestelltem =N
(1 ≤ N ≤ 255) markiert werden.
Sie können in COUNT_BY mittels der Syntax #BY[key[,...]]
optionale Angaben zur Gruppierung machen.
Hinweis
Sie können auch mehrere Gruppierungsfunktionen auf einmal verwenden:
COUNT ( KLAUSEL ... ) #BY[key,key,...]
.
Gruppierung nach Metadaten
Es können alle Metadatenfelder zur Gruppierung benutzt werden. Besonders sinnvoll ist dies in folgenden Fällen:
-
date
– Datum des Dokuments. Es empfiehlt sich (da in einigen Korpora die Datumsangaben auf den Tag genau vermerkt sind), auf ganze Jahresangaben zu filtern:date/1
. Eine Gruppierung nach Dekade¹ erreichen Sie entsprechend durchdate/10
. Allgemeiner:date/INTEGER
macht zwei Dinge:-
Es normalisiert vollständige Datumsangaben auf Jahreszahlen, also
z. B.
2010-03-21
auf2010
. -
Es schneidet, ausgehend vom gewünschten Startzeitpunkt (entweder
qua Korpus-Default oder explizit angegeben via
Datumsfilter) in
INTEGER
breite Jahresscheiben, also z. B.date/3
mit Startzeitpunkt2012
:- 2012 bis 2014
- 2015 bis 2017
- 2018 bis 2020
-
Es normalisiert vollständige Datumsangaben auf Jahreszahlen, also
z. B.
-
textClass
– Textklasse des Dokuments. Es empfiehlt sich (da oft Haupt- und Untertextklasse durch:
oder::
getrennt vermerkt sind), nur nach Haupttextklasse zu gruppieren. Dies erreichen Sie, indem Sie eine Substitutionsoperation auf das entsprechende Feld ausführen:textClass~s/:.*//
(dies schneidet alles nach dem ersten:
ab).
Sucheingabe | Bemerkung |
---|---|
COUNT( * ) #BY[date/1] | Tokenzahlen im Korpus, nach Jahr gruppiert |
COUNT( Haus ) #BY[date/10] | Treffer für Formen von Haus, nach Dekade gruppiert |
COUNT( Haus ) #BY[textClass~s/:.*//] | Treffer für Formen von Haus, nach Haupttextklasse gruppiert |
COUNT( Haus ) #BY[date/10,textClass~s/:.*//] | Treffer für Formen von Haus, nach Dekade und Haupttextklasse gruppiert |
Gruppierung nach Indexfeldern
Es können alle Tokenindices wie
z. B. $p
(Part-of-Speech-Tag), $l
(Lemma) oder
$w
(Oberflächenform) zur Gruppierung benutzt werden.
Achtung
Bitte beachten Sie, dass Abfragen mit #BY
in Verbindung mit der Angabe
von Indexfeldern teuer in der Berechnung sind. Sie müssen im DWDS eingeloggt sein, um
diese Funktion nutzen zu können.
Sucheingabe | Bemerkung | Hinweis |
---|---|---|
COUNT( sommer* ) #BY[$p] | Treffer für Wörter mit dem Präfix sommer, nach Wortart gruppiert | Login erforderlich |
COUNT( sommer* ) #BY[$l] | Treffer für Wörter mit dem Präfix sommer, nach Lemma gruppiert | Login erforderlich |
COUNT( sommer* ) #BY[$p,$l] | Treffer für Wörter mit dem Präfix sommer, nach Wortart und Lemma gruppiert | Login erforderlich |
Gruppierung nach Kontext
Sie können nach den linken oder rechten Nachbarn eines markierten Tokens mittels
Angabe eines Indexfelds und nachgestelltem -N
bzw. +N
gruppieren.
Sucheingabe | Bemerkung | Hinweis |
---|---|---|
COUNT( Wörterbuch ) #BY[$l-1] | Treffer für Formen von Wörterbuch, nach Lemma des linken Nachbarn gruppiert | Login erforderlich |
COUNT( schön ) #BY[$w+1] | Treffer für Formen von schön, nach Oberflächenform des rechten Nachbarn gruppiert | Login erforderlich |
Sortierung der Ergebnisse von COUNT()
-Abfragen
Für die Sortierung der Ergebnisse in COUNT_SORT stehen folgende Operatoren zur Verfügung:
Operator | Sortierung nach |
---|---|
#ASC_COUNT | Frequenz aufsteigend |
#DESC_COUNT | Frequenz absteigend |
#ASC_KEY | Gruppierungskriterium aufsteigend (Default) |
#DESC_KEY | Gruppierungskriterium absteigend |
Weitere Beispiele zu COUNT()
-Abfragen finden Sie in der
Beispielsammlung.
Häufig gestellte Fragen (FAQ)
Wie kann ich nach Kasus filtern?
Kasus sind in unseren Korpora nicht annotiert. Eine Hilfe ist, die Korpusergebnisse nach dem linken Nachbarn zu sortieren, dann kann man zumindest manuell schnell die uninteressanten Treffer aussortieren.
Beispiel: Pluralformen von Tunnel
Mit dem @
-Operator suchen Sie nach exakter Wortform, d. h.
@Tunnels
findet auch nur genau diese Oberflächenform.
-
Suche nach
@Tunnels
. - Dort nutzen Sie dann den Button „Treffer exportieren“.
- Innerhalb dieser Liste können dann „falsche“ Treffer (z. B. Genitivformen) aussortiert werden.
Für Tunneln kann dann genauso verfahren werden, oder Sie suchen zugleich nach beiden Formen mittels
@{Tunnels,Tunneln}
.
Kann ich Korpusabfragen für „Reduplikation“ stellen?
Abfragen mit Reduplikation a la Auge um Auge
oder Tag für Tag
sind leider nicht möglich, da die DDC-Abfragesprache keine Termvariablen bzw.
Back-References unterstützt.
Wie kann ich (vermeintliche) Duplikate in den Treffern vermeiden?
Zwei Fälle sind hier zu unterscheiden:
1. Mehrere Treffer im selben Satz
Die Abfrage "$p=ART $p=NN"
(Artikel gefolgt von Nomen) wird sehr wahrscheinlich für viele Sätze mehrere Treffer erbringen. Die Suche
auf der DWDS-Webseite listet jedes dieser Vorkommen (auch innerhalb eines Satzes) als separaten Treffer;
man kann sie leicht durch die verschiedene typografische Hervorhebung der passenden Tokens erkennen.
Möchten Sie anstelle dieser Darstellung nur jeweils einen Satz pro Treffer, stellen Sie Ihrer Anfrage
den #JOIN
-Operator nach:
"$p=ART $p=NN" #JOIN
.
2. Vermeintlich identische Treffer in verschiedenen Dokumenten
Vor allem in Zeitungstexten ist das Recycling von bereits in anderen Artikeln verwendeten Textpassagen anzutreffen. Beispiele dafür sind Texte, deren Wortlaut von Presseagenturen übernommen wurde; mehrfache Berichterstattung über ein Thema im Verlauf weniger Tage oder das Verwenden von eingebetteten Subtexten (z. B. Bildunterschriften in Mediengalerien). Diese Art Duplikate sind streng genommen keine, zumindest anhand der Metadaten eines Dokuments oder auch über den erweiterten Kontext der Suchabfrage (Anzeige: maximal) kann man oft Unterschiede feststellen. Nichtsdestotrotz sind wir bemüht, unsere Korpora davon – so gut es geht – sauber zu halten und verbessern die Software zur Erkennung dieser Art Duplikate fortlaufend.
Wie kann man gegenderte Formen suchen?
Um gegenderte Formen wie z. B. Freund*in, Freund/in, Freund_in und Freund:in zu finden, müssen folgende Dinge beachtet werden:
-
Sonderzeichen wie
*
,/
und:
müssen (mit einem Backslash) maskiert werden. - Flektierte Formen (wie z. B. Freund:innen zu Freund:in) müssen separat gesucht werden, eine automatische morphologische Analyse findet für diese Formen also nicht statt.
Beispiele (die Links führen zu Suchergebnissen im Korpus WebXL, dafür ist ein Login erforderlich):
Sucheingabe | Bemerkung |
---|---|
Freund\*in | Suche nach Freund*in |
Freund\/in | Suche nach Freund/in |
Freund_in | Suche nach Freund_in |
Spieler\:innen | Suche nach Spieler:innen |
*\*innen | Suche nach Wörtern, die auf *innen enden (= Suffixsuche) |
*{\*in,In} WITHOUT In | Suche nach Wörtern, die auf *in oder In enden (= Suffixsuche, schließt In als Wort explizit aus) |
@{Schülerinnen, SchülerInnen, Schüler\*innen, Schüler\/innen, Schüler_innen, Schüler\:innen} | kombinierte Suche nach 6 möglichen Pluralformen von Schülerin |
Wie suche ich Komposita mit und ohne Bindestrich?
Manchmal möchte man bei der Suche nach Komposita nicht zwischen Schreibung mit und ohne Bindestrich unterscheiden. Dazu ein paar Vorbemerkungen:
- Die Groß-/Kleinschreibung ist für die Suche relevant.
- Bindestrichkomposita werden anders lemmatisiert (= auf eine Grundform abgebildet) als Komposita ohne Bindestrich, das heißt beispielhaft: Macht-Demonstration ist ein anderes Lemma als Machtdemonstration.
Bleiben wir beim Beispiel: Um Komposita mit dem
Letztglied Demonstration mit und ohne Bindestrich
zu suchen, nutzen Sie den Suffixoperator
*…
in Verbindung mit der Mengennotation
{…, …}
. Dazu müssen Sie explizit auf dem
Lemma-Index $l
suchen, da der Suffixoperator auf der Oberflächenform (Index $w
)
filtert und flektierte Formen wie Plural sonst nicht gefunden werden:
$l=*{demonstration,-Demonstration}
Für Frequenzabfragen gilt entsprechend:
COUNT($l=*{demonstration,-Demonstration}) #BY[$l] #DESC_COUNT
Hinweis
Für diese Abfrage müssen Sie im DWDS eingeloggt sein.
Diese Abfrage gruppiert nach dem Lemma (Index $l
) und sortiert
absteigend nach Frequenz. Hier können Sie dann auch den Substitutionsoperator
~s/REGEX/REPLACEMENT/
(PCRE-Syntax)
anwenden und das Lemmafeld „nachbehandeln“, um so Schreibungen mit und ohne Bindestrich
zusammen zu zählen:
COUNT($l=*{demonstration,-Demonstration}) #BY[$l~s/-D(emonstration)/d$1/] #DESC_COUNT
Wie suche ich Sätze ohne Verb (bzw. andere Wortarten)?
Da rein negierte Suchen in den DWDS-Korpora nicht erlaubt sind, muss man sich hier
mit einem Hilfskonstrukt behelfen: Jeder Satz hat ein erstes Token, das mit
$.=0
abfragbar ist. Dazu kann man dann die Bedingung && !$p=V*
(= … und enthält kein Verb, für andere Wortarten siehe die
Liste der abfragbaren Wortarten) setzen, also
$.=0 && !$p=V*
.
Eine solche Art der Suche nur auf Teilsätzen (also z. B. Nebensätzen) ist leider
nicht möglich.
Kann ich komplette Korpora herunterladen?
Das DWDS bietet keine Korpora zum Download an, auch nicht für den sog. internen Gebrauch oder wissenschaftliche Zwecke, bis auf diese Ausnahmen:
¹ Wenn Sie Mitglied einer akademischen Institution sind, die einen föderierten Shibboleth-Zugang ermöglicht, oder wenn Sie über ein CLARIN-Konto verfügen, können Sie eine TCF-Version dieses Korpus herunterladen.
- Bzgl. der Webkorpora im DWDS empfehlen wir das Tutorial: DWDS-Korpusdaten reproduzieren.
- Bitte beachten Sie die Nutzungs- bzw. Lizenzbedingungen der Korpora, die auf den jeweiligen Seiten vermerkt sind.
Das Crawling kompletter Korpora über die Suchmaschine ist nicht erlaubt und dafür ist die Suchmaschine auch nicht gedacht. Kontaktieren Sie uns gerne, wenn Sie ein spezielles Anliegen haben.
Wo finde ich Statistiken (Tokenzahlen, Verteilung über Zeiträume, Textklassen etc.)?
Statistiken zu diversen Kenngrößen finden Sie auf einer separaten Seite.
Was man tun und nicht tun sollte
Verzichten Sie auf teure Abfragen mit Platzhaltern oder Stoppwörtern wie der, die, das, sinnfreie Präfix-/Suffixsuchen oder nichtssagende reguläre Ausdrücke.
Seien Sie geduldig, wenn eine Ergebnisseite mal länger braucht. Erneutes oder gar paralleles Aufrufen erzeugt nur mehr Last und bringt keine schnelleren Ergebnisse.
Hinweise zu geskripteten Abfragen
Das Crawling kompletter Korpora über die Suchmaschine ist nicht erlaubt und dafür ist die Suchmaschine auch nicht gedacht. Kontaktieren Sie uns gerne, wenn Sie ein spezielles Anliegen haben. Das DWDS bietet keine Korpora zum Download an, auch nicht für den sog. internen Gebrauch oder wissenschaftliche Zwecke, bis auf diese Ausnahmen.
Wenn große Ergebnismengen zu erwarten sind oder die Abfragen teuer (= langsam) sind:
- Nutzen Sie das dstar-System auf kaskade.dwds.de – nicht die Korpussuche auf der DWDS-Webseite, nicht die dstar-Wrapper auf www.dwds.de.
- Beachten Sie: Das dstar-System behandelt Abfragen anders als das Korpussuche-Formular auf www.dwds.de (keine implizite Phrasenbildung, keine impliziten Korpusfilter).
- Lesen Sie die Dokumentation zur DDC-Abfragesprache.
-
Wenn Sie „viel Text“ mit Ihrer Abfrage einsammeln möchten:
Nutzen Sie nicht den
#CNTXT n
-Operator (= Ansicht „max“ auf www.dwds.de). Das erhöht die ausgegebene Textmenge um 2n und bringt letzten Endes Duplikate. - Schreiben Sie Ihr Skript so, dass zwischen zwei Abfragen mind. 1 s gewartet wird.
-
Der Parameter
limit
kann bis auf einen Wert von 1000 gesetzt werden, höher aber bitte nicht. - Überlegen Sie sich gut, welches Exportformat sie benötigen (Text, JSON, YAML etc.), damit dieselben Abfragen nicht noch einmal gestellt werden.
- Wichtig: Verzichten Sie auf eine Treffersortierung und Korpusfilter, wenn es einfach nur viel Text sein soll.
-
Wenn Sie eine definierte (= Anzahl ist definiert) zufällige Menge an Text abfragen wollen,
nutzen Sie den
#RANDOM[seed]
-Operator. - Keine parallelen Abfragen.
- Seien Sie geduldig, wenn eine Ergebnisseite mal länger braucht.
- Wenn der Server Timeouts wirft, 10 min warten (das sollte auch in einem Skript bedacht sein).
-
Wenn der Server die Meldung
std::bad_alloc
zurückgibt, warten Sie 10 min. Wenn die Meldung dann immer noch erscheint, ist alle Hoffnung verloren. - Bei größeren Projekten: Geskriptete Abfragen in diesem Ausmaß bitte erst abends (CEST) starten und morgens beenden/pausieren. Wenn Ihr Skript bis dahin nicht fertig ist, setzen Sie es am nächsten Abend an selber Stelle fort.
- Rechnen Sie damit, dass die DWDS-Administratoren ihre IP (auf Zeit) blockieren, falls die Last auf unsere Server zu hoch wird.
Beispielsammlung Korpusabfragen
Sucheingabe | Bemerkung | Hinweis |
---|---|---|
hinter* with !$l=hinter | Abfrage nach hinterlassen, hinterfragen etc., schließt hinter aus | |
aufessen || "essen #9 auf WITH $p=PTKVZ" | Abfrage nach aufessen, isst … auf, aß … auf etc. | |
Stein with $p=NE | Abfrage nach Stein als Eigenname | |
Stein with $p=NN | Abfrage nach Stein als Substantiv | |
modern WITH $p=VV* | modern als Verb | |
"*roter WITHOUT rot Faden" | rot-Verbindungen + Faden, aber nicht rot selbst | |
"$p=ITJ ','" | Phrasensuche nach Interjektionen gefolgt von einem Komma | |
"Liebe ',' Verrat ',' Tod" | literales Komma in Wortgruppe | |
'?' WITH $.=1 | literales Fragezeichen als 2. Token im Satz | |
'?' WITH $.=-1 | Fragesatz | |
'?' WITH $.=-1 WITH $ws=1 | Fragesatz mit Leerzeichen vor dem Fragezeichen | |
"':' {'\"' '„' '»' '«'}" | wörtliche Rede bzw. Zitat nach Doppelpunkt | |
Ku\'damm | Apostroph als Auslassungszeichen | |
\u0152uvre | Suche nach Unicode-Zeichen | |
'Date' | Suche nach Date (muss in ' eingeschlossen werden, da Schlüsselwort) |
|
Garten WITH $Rend=/\bi\b/ |
typografisches Attribut: Kursivdruck (#i )
|
nur DTA-Korpus |
Garten WITH $Rend=/i/ |
typografisches Attribut: Kursivdruck, Initiale, rechtsbündig (#i ,
#in , #right )
|
nur DTA-Korpus |
Garten WITH $Context=/argument/ |
textstrukturelles Attribut: Treffer innerhalb von <argument>
|
nur DTA-Korpus |
Garten WITH $Context=/note_(?:right|left)/ | textstrukturelles Attribut: Treffer innerhalb von Marginalien | nur DTA-Korpus |
Berlin WITH $XPath=*'note/placeName' |
XPath: Berlin als Ortsname innerhalb von <note>
|
nur DTA-Korpus |
Garten #HAS[flags,/\bcore\b/] | Treffer im DTA-Kernkorpus (\b ist RE-Syntax für Wortgrenze) |
|
Garten #HAS[flags,/\bdtae\b/] | Treffer im DTAE-Teilkorpus | |
Garten #HAS[basename,'arnimb_goethe02_1835'] | Treffer gefiltert nach Dokumenten-Identifier | |
Garten #HAS[author,/Arnim/] | Treffer gefiltert nach Autor | |
Garten #HAS[author,/118504185/] | Treffer gefiltert nach GND-Nummer im Autor-Feld | |
Garten #HAS[author,/Goethe/] #HAS[title,/Faust/] | mehrere Filter auf Metadatenfelder | |
Garten #DATE[1800] | Treffer aus Werken von 1800 | |
Garten #LESS_BY_DATE[1800,1850] | Treffer aus Werken zwischen 1800 und 1850 | |
Garten #LESS_BY_DATE[1800,] | Treffer aus Werken ab 1800 | |
Garten #LESS_BY_DATE[,1850] | Treffer aus Werken bis 1850 | |
Garten #HAS[textClass,/Wissenschaft/] | Filter nach Textklasse (Teilstring) | |
Garten #HAS[textClass,'Gebrauchsliteratur::Kochbuch'] | Filter nach Textklasse (Vollangabe) | |
Haus #WITHIN file | Suche nach Haus, nur ein Treffer pro Dokument |
Beispiele für COUNT()
-Abfragen
Sucheingabe | Bemerkung | Hinweis |
---|---|---|
COUNT( Haus ) #BY[date/10] | Vorkommen von Haus nach Dekade* gruppiert | |
COUNT( Haus ) #BY[date/10] #ASC_COUNT | Vorkommen von Haus nach Dekade* gruppiert und Frequenz sortiert | |
COUNT( Haus #WITHIN file ) | Vorkommen von Haus, nur einen Treffer pro Dokument zählen | |
COUNT( Haus ) #BY[textClass~s/:.*//] | Vorkommen von Haus nach Textklasse gruppiert | |
COUNT( Haus ) #BY[textClass~s/:.*//,date/10] | Vorkommen von Haus nach Textklasse und Dekade* gruppiert | |
COUNT( Haus #ASC_DATE[1900,1950] #HAS[textClass,/^Wissenschaft/] ) #BY[date/1] | Vorkommen von Haus zwischen 1900 und 1950 in der Textklasse „Wissenschaft“ nach Jahr gruppiert | |
COUNT( sein ) #BY[$w] | Vorkommen von sein nach Oberflächenform gruppiert | Login erforderlich |
COUNT( @Haus ) #BY[$w -1] #DESC_COUNT | linke Nachbarn von @Haus, absteigend nach Frequenz sortiert | Login erforderlich |
COUNT( Computer|gn-sub ) #BY[date/5] #DESC_KEY | Synonyme und Unterbegriffe für Computer, gruppiert in 5-Jahres-Schritten und danach absteigend sortiert | |
COUNT("$p=NN =1 und $p=NN =2" #SEP) #BY[$l =1, $l =2] #DESC_COUNT | Wortgruppen der Form „NOMEN und NOMEN“ | Login erforderlich |
COUNT("$p=ADJ* =1 Haus") #BY[$l=1] #DESC_COUNT | Wortgruppe „ADJEKTIV Haus“, gruppiert nach der Grundform des Adjektivs, absteigend nach Frequenz sortiert | Login erforderlich |
COUNT("$p=ADJ* =1 Haus =2") #BY[$w =1, $w =2] #DESC_COUNT | Wortgruppe „ADJEKTIV Haus“, gruppiert nach der Wortgruppe selbst, absteigend nach Frequenz sortiert | Login erforderlich |
API
Dokumentation zu den Schnittstellen der Korpussuche finden Sie auf folgender Seite: API (Schnittstellen zum DWDS).
dstar
Alle unsere Korpora sind auch über das dstar-System zugänglich. Dort finden Sie außerdem weitere Schnittstellen und Exportmöglichkeiten.
Lexikalische Datenbanken (LexDB)
Für einige Korpora bieten wir eine Frequenzdatenbank (LexDB) an. Bitte nutzen Sie zunächst immer die entsprechende LexDB, wenn Sie an Frequenzinformationen interessiert sind.
Weiterführende Informationen
- DDC Projekt-Webseite
- DDC Query Language Documentation (in englischer Sprache)
- Dokumentation zu den Verlaufskurven im DWDS
- Blog-Artikel: Suche nach substantivierten Verben in den DWDS-Korpora
- Video-Tutorial: Recherche im DWDS-Korpus „Politische Reden“
-
Lothar Lemnitzer: Nadeln im Heuhaufen oder die Recherche in den Korpora des DWDS,
Artikelserie im Blog des Digitalen Wörterbuchs der Deutschen Sprache (2023):
- Teil 1: Einführung
- Teil 2: Terminologie und interessante Korpora
- Teil 3: Der Abfrageassistent
- Teil 4: Die Einwortsuche
- Teil 5: Die Verbindung der Einwortsuche mit Filtern auf Tokenebene
- Teil 6: Komplexe Abfragen mit mehr als einem Wort als Treffer
- Teil 7: Aggregation und Gruppierung von Korpusdaten
- Teil 8: Das Filtern von Trefferlisten