Digitales Wörterbuch der deutschen Sprache

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

Im Anfang war das Wort.

# 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 . . $.

Vnd goͤnn’ jhn dir noch jtzt.

Gryphius, Andreas: Teutsche Reim-Gedichte. Frankfurt (Main), 1650, S. 21. In: Deutsches Textarchiv <https://www.deutschestextarchiv.de/gryphius_leoarmenius_1650/33>, abgerufen am 15.10.2018.
# 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.

Beispiele für Kodierungen im Index $Context:
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"]//note[@place="foot"]/table/row/cell/hi |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:
  • sentence (Alias: s)
  • paragraph (Alias: p)
  • file

#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 durch date/10. Allgemeiner: date/INTEGER macht zwei Dinge:
    1. Es normalisiert vollständige Datumsangaben auf Jahreszahlen, also z. B. 2010-03-21 auf 2010.
    2. 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 Startzeitpunkt 2012:
      • 2012 bis 2014
      • 2015 bis 2017
      • 2018 bis 2020
  • textClassTextklasse 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.

  1. Suche nach @Tunnels.
  2. Dort nutzen Sie dann den Button „Treffer exportieren“.
  3. 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:

Korpusdokumentation Bezugsquelle
A. v. Humboldts Publizistik (dt., 1790–1859) github.com/avh-bern-berlin/avh-texts
Bundestagskorpus (1949–2017) www.bundestag.de/services/opendata
Berliner Zeitung (1945–1993) shibboleth.bbaw.de/proxied/dstar/bz_pp/extra/download/bz_pp_tcf.2018-11-05.zip¹
Korpus Patiententexte (1834–1957) github.com/deutschestextarchiv/copadocs
Polytechnisches Journal github.com/deutschestextarchiv/dingler
DTA-Erweiterungen (1465–1969) www.deutschestextarchiv.de/download
DTA-Kernkorpus (1598–1913) www.deutschestextarchiv.de/download
Gesetze und Verordnungen (1897–2024) www.gesetze-im-internet.de/
Dortmunder Chat-Korpus www.uni-due.de/germanistik/beisswenger/aktivitaeten.php#chatkorpus
Briefe von Jean Paul (1780–1825) github.com/telota/jean_paul_briefe
Neues Deutschland (1946–1990) shibboleth.bbaw.de/proxied/dstar/nd/extra/download/nd_tcf.2018-11-05.zip¹
Neuer Deutscher Novellenschatz (1884–1887) github.com/deutschestextarchiv/nschatz_deu
Der Neue Pitaval (1842–1890) doi.org/10.5281/zenodo.6682897
Politische Reden (1982–2020) politische-reden.eu/
Soldatenbriefe (1745–1872) github.com/deutschestextarchiv/soldatenbriefe
stimm-los – Wiedergefundene Perlen der Literatur github.com/deutschestextarchiv/stimm-los
Wikibooks-Korpus doi.org/10.5281/zenodo.13951108
Wikipedia-Korpus doi.org/10.5281/zenodo.13951126
Wikivoyage-Korpus doi.org/10.5281/zenodo.13951123

¹ 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
* Dekade bezeichnet einen Zeitraum von 10 Jahren, z. B. 1900: 1900–1909.

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