Skip to main content

Kollokationen

Die Berechnung und Analyse von Kollokationen: Bei dieser Methode werden statistisch signifikante Co-Vorkommen von zwei Wörtern berechnet. Für ein im Korpus vorkommendes Wort können alle Wortformen identifiziert werden, die innerhalb eines vordefinierten Kontextfensters (z. B. fünf Wörter im unmittelbar linken und rechten Kontext) mit diesem Wort auftreten. Mithilfe unterschiedlicher statistischer Tests kann berechnet werden, ob ein Co-Vorkommen signifikant und damit statistisch auffällig ist. Abbildung 12.9 zeigt die ersten elf Kollokationen für das Wort Freiheit im DWDS, berechnet mithilfe des sog. logDice, einem statistischen Mass zur Berechnung von Wort-Co-Vorkommen.

(Studienbuch Linguistik: 652)

Kollokationen

Assoziationsbeziehungen

Kollokationen sind nicht einfach häufig zusammen vorkommende Wörter, sondern Wörter, die statistisch signifikant häufig zusammen vorkommen. Was bedeutet das? Man misst sog. _Assoziationsbeziehungen zwischen Wörtern.

Was sind Assoziationen im statistischen Sinn?

Assoziationen ist Co-Vorkommen von Objekten, die häufiger zusammen vorkommen, als wir es bei einer gleichmässigen Verteilung der Objekte erwarten würden.

Beispiel Tiroler-Cake (Kuchen mit Schoggistückchen): Wenn dieser Kuchen "gerecht" ist, dann erwarten wir, dass die Schoggistückchen regelmässig im Kuchen verteilt sind, so dass bei jedem Stück ungefähr gleich viele Schoggistückchen drin sind. Oft ist das aber nicht der Fall! Drama!!!

So ist es auch bei Wörtern in Texten: Es ist offensichtlich, dass die Wörter nicht gleichmässig verteilt verteilt sind:

  • Einerseits kommen Wörter unterschiedlich häufig vor: der ist sehr viel häufiger als Schoggistückchen.
  • Andererseits sind die Wörter aber nicht gleichmässig im Text verteilt, sondern es gibt Wörter, die häufiger zusammen vorkommen, als wir es bei einer gleichmässigen Verteilung erwarten würden. Die Gründe dafür sind:
    • Grammatik: Bestimmte Artikel tendieren extrem start dazu, (fast) unmittelbar vor Nomen zu erscheinen. Verben tendieren im Deutschen in Aussagesätzen dazu, eher im vorderen Teil eines Satzes, als zweites Satzglied, aufzutreten. Etc.
    • Semantik: Wenn wir von Kuchen sprechen, ist oft der Kaffee recht nah.
    • Pragmatik: In Begrüssungssituationen benutzen wir bestimmte Floskeln, also bestimmte Wortkombinationen (mit Variationsmöglichkeiten)

Dieses Phänomen soll mit Assoziation gemessen werden. Aber grundsätzlich handelt es sich dabei um ein universelles Konzept – in der Sprache:

Assoziationen zwischen

  • sprachlichem Objekt und anderen sprachlichen Objekten (z.B. Kollokationen)
  • sprachlichem Objekt und aussersprachlichen Objekten (z.B. Zeit, Autorschaft etc.)

Assoziation ist nicht Kausalität!

Beispiel Störche: Es gibt eine klare Assoziation zwischen Vorkommen von Störchen und Kindergeburtsrate. Also, Beweis: Der Storch bringt die Babys! Das ist ein Fehlschluss, bei dem Assoziation mit Kausalität verwechselt wird. (Im Beispiel gibt es eine dritte einflussreiche Variable, nämlich "ländliches Gebiet": Auf dem Land gibt es mehr Störche und mehr Kinder.)

Wie wird Assoziation gemessen?

Grundprinzip

Es soll überprüft werden, ob heute Abend eine Kollokation ist, also eine Verbindung von zwei Wörtern mit einer statistisch signifikanten Assoziation. Es muss in einem (möglichst grossen) Korpus geprüft werden:

  • wie oft kommt heute alleine vor?
    • Beispiel: heute ist häufig
  • wie oft kommt Abend alleine vor?
    • Beispiel: Abend ist häufig
  • wie oft kommt heute Abend vor?
    • Möglichkeit 1: in vielen oder fast in allen Fällen kommt heute zusammen mit Abend vor, ➔ die Verbindung (Assoziation) ist signifikant
    • Möglichkeit 2: heute kommt nur ein paar Mal zusammen mit Abend vor, jedoch auch noch mit vielen anderen Wörtern, ➔ die Verbindung (Assoziation) ist nicht signifikant

Operationalisierung

Es werden die Häufigkeiten, mit denen die Wörter einzeln und zusammen vorkommen, erhoben. Diese beobachteten Werte werden mit den erwarteten Werten verglichen. Die Erwartung ist, dass Wörter gleichmässig verteilt sind.

Wir unterscheiden zudem zwei Korpora A und B:

  • Korpus A: Alle Sätze, in denen heute vorkommt.
  • Korpus B: Alle anderen Sätze.

Die Werte werden in Kreuztabellen dargestellt.

Beobachtete Werte

Nehmen wir an, wir finden in einem Korpus, das 10000 Sätze umfasst (erfundene Werte):

Korpus A: heute-SätzeKorpus B: RestTotal
Abend204060
nicht Abend98089609940
Alle Sätze1000900010000

Wenn nun die 60 Abend-Treffer angeschaut werden: Was würden wir bei einer gleichmässigen Verteilung dieser _Abend_Treffer auf die Korpora A (heute-Kontexte) und B (nicht-heute-Kontexte) erwarten, wie diese verteilt sein müssten?

🤔🤔🤔🤔🤔🤔🤔🤔🤔🤔🤔🤔

...natürlich im Verhältnis der Korpora A und B zueinander: Das Verhältnis ist 1:9: Es gibt insgesamt 1000 Sätze in Korpus A (heute-Belege) und 9000 in Korpus B. Also müssten die 60 Abend-Treffer ebenfalls im Verhältnis 1:9 auf A und B verteilt sein. Damit können die erwarteten Werte berechnet werden.

Erwartete Werte

Korpus A: heute-SätzeKorpus B: RestTotal
Abend60 : 10000 * 1000 = 660 : 10000 * 9000 = 5460
nicht Abend1000 - 6 = 9949000 - 54 = 89469940
Alle Sätze1000900010000

Induktive Statistik

Nun wird der Abstand zwischen den beobachteten und erwarteten Werten verglichen. Ist der Abstand genug gross, so dass man sicher sein kann, dass er signifikant ist?

Was bedeutete das genau? Man möchte sicher sein, dass der beobachtete Unterschied (zwischen beobachteten und erwarteten Werten) wirklich stabil ist. Das bedeutet: Wenn wir verschiedene Messungen in unterschiedlichen (aber ähnlichen) Korpora machen würden, kämen wir immer wieder auf einen ähnlichen Unterschied? Oder handelt es sich um ein Zufallsergebnis und bei einer weiteren Messung gäbe es den Unterschied vielleicht gar nicht mehr?

Der einfachste statistische Test, um die Signifikanz zu messen, ist der Chi-Quadrat-Test:

FormelChiSquare

  • O = observed (beobachtete) frequency
  • E = expected (erwartete) frequency

Basis sind die vier zentralen Felder der Kreuztabellen oben:

Beobachtet (observed):

2040
9808960

Erwartet (expected):

654
9948946

Nun wird berechnet:

  • Für jede Zelle in der Kreuztabelle oben wird gerechnet: erwarteter Wert (E) vom beobachteten Wert (O) subrahiert, Ergebnis quadriert und durch den erwarteten Wert E dividiert.
  • Die vier so berechneten Werte werden aufsummiert (∑).
  • Das ergibt 𝛘2 (Chi Quadrat).

Im Beispiel oben:

(20-6)^2/6 + (40-54)^2/54 + (980-994)^2/994 + (8960-8946)^2/8946 = 36.51538863

Dieser Wert ist an und für sich schon aussagekräftig, sobald man ihn mit anderen Chi-Quadrat-Werten vergleicht: Man könnte nun also für alle Wortkombinationen mit einem Basiswort in einem Korpus diesen Chi-Quadrat-Wert berechnen und die Ergebnisse danach sortieren. Das ist oben in Tabelle 12.9 gemacht worden, allerdings mit einem anderen Assoziationsmass, nämlich Log-Dice.

Man kann nun aber auch einen Hypothesentest machen.

Nullhypothesentest

Bei diesem Test werden zwei Hypothesen getestet:

  • H0: Assoziation ist nicht signifikant
  • H1: Assoziation ist signifikant

Fragestellung: wie gross ist die Wahrscheinlichkeit, dass ich H0 verwerfen und (vorläufig) H1 annehmen kann? – z.B. p < 0.05 = H0 kann mit 95%iger Sicherheit verworfen werden.

Dafür wird eine Tabelle der kritischen Werte konsultiert (z.B. hier):

dfP = 0,05P = 0,01P = 0,001
13,846,6410,83
25,999,2113,82
37,8211,3516,27
49,4913,2818,47
511,0715,0920,52
612,5916,8122,46

df ist der sog. Freiheitsgrad (degree of freedom), der in Abhängigkeit zur Grösse der Kreuztabelle steht (solche Tabellen können auch nehr als vier Felder enthalten). Der Freiheitsgrad berechnet sich wie folgt: (Reihenzahl - 1) * (Spaltenzahl - 1). Dabei werden aber nur die Wertefelder gezählt. Bei einer 4*4-Felder-Tafel wie in der Tabelle oben beträgt df also 1: (2 - 1) * (2 - 1) = 1.

Für unsere Berechnung halten wir uns also an die erste Zeile aus der Tabelle der kritischen Werte. Die Tabelle sagt nun, wie hoch 𝛘2 sein muss, damit wir die Nullhypothese ablehnen können. Die erste Spalte enthält den Mindestwert, den 𝛘2 erreichen muss, damit die Wahrscheinlichkeit (P) für H0 nur 5% beträgt. Oder anders: Wenn 𝛘2 grösser als 3,84 ist, dann sind die Frequenzunterschiede mit 95%iger Sicherheit signifikant (also nicht zufällig).

Die Berechnungen oben haben einen 𝛘2-Wert von 36.5 ergeben. Das bedeutet, dass die Frequenzunterschiede selbst bei einem Signifikanzniveau von P = 0,001 signfikant sind. Es kann also mit 99,9% Wahrscheinlichkeit davon ausgegangen werden, dass es sich nicht um zufällige Schwankungen handelt (die Wahrscheinlichkeit für H0 beträgt also nur 0,1%).

Natürlich muss man das nicht von Hand rechnen. Ein Tabellenkalkulationsprogramm wie z.B. Excel oder Calc beherrscht dies ebenso. Diese Excel-Vorlage zeigt, wie der Signifikanzwert in einer Tabellenkalkulation berechnet werden kann.

Kollokationen berechnen

Das an der UZH entwickelte Command-Line Tool kollibri ermöglicht die Kollokationsberechnung. Nötig dazu ist lediglich ein Korpus im vrt-Format (beispielsweise prozessiert durch Promethia). Für eine detaillierte Dokumentation, sowie Installations- und Verwendungshinweise in Python und in der Commmand Line sehen Sie sich kollibri hier an.

Um kollibri in Python zu nutzen, installieren Sie zunächst die Library wie folgt über Pip. Sollte der pip-Install nicht funktionieren, dann finden Sie auf der Webseite alternative Installationsmöglichkeiten:

Mac

pip3 install kollibri

Windows

pip install kollibri

Kopieren Sie dann den folgenden Code in ein neues File, spezifizieren Sie das Korpus im vrt-Format und geben Sie das Suchwort (query) sowie das Mass (metric) und das Window (span) an.

from kollibri import kollibri

kollibri(
"path/to/file.vrt",
query="^Reg(ex|ular expression)$", # optional
left=5,
right=5,
span=None,
number=20,
metric='lr',
target=0,
output=[0],
stopwords=None,
case_sensitive=False,
preserve=False,
csv=False
)

Hier noch einige Informationen zum Handling bzw. den verschiedenen einstellbaren Argumenten von kollibri:

usage: kollibri [-h] [-l LEFT] [-r RIGHT] [-s SPAN] [-m {ll,sll,lmi,mi,mi3,ld,t,z}] [-sw STOPWORDS] [-t TARGET] [-n NUMBER] [-o OUTPUT] [-c] [-p] [-csv [CSV]] input [query]

Extract collocations from VERT formatted corpora

positional arguments:
input Input file path
query Optional regex to search for (i.e. to appear in all collocation results)

optional arguments:
-h, --help show this help message and exit
-l LEFT, --left LEFT Window to the left in tokens
-r RIGHT, --right RIGHT
Window to the right in tokens
-s SPAN, --span SPAN XML span to use as window (e.g. s or p)
-m {lr,sll,lmi,mi,mi3,ld,t,z}, --metric {lr,sll,lmi,mi,mi3,ld,t,z}
Collocation metric
-sw STOPWORDS, --stopwords STOPWORDS
Path to file containing stopwords (one per line)
-t TARGET, --target TARGET
Index of VERT column to be searched as node
-n NUMBER, --number NUMBER
Number of top results to return (-1 will return all)
-o OUTPUT, --output OUTPUT
Comma-sep index/indices of VERT column to be calculated as collocations
-c, --case-sensitive Do case sensitive search
-p, --preserve Preserve original sequential order of tokens in bigram
-csv [CSV], --csv [CSV]
Output comma-separated values

💡 Wichtig: Die Ergebnisse werden nur ins Terminal ausgegeben und nicht automatisch in einem separaten File gespeichert. Wenn Sie csv=True wählen, dann können Sie das Resultat einfach in ein csv-File kopieren und dann damit arbeiten.