DISCO - FAQ
1. Warum sind manche Sprachdatenpakete viel
größer als andere, selbst wenn das zugrundeliegende Korpus sogar kleiner ist?
2. Warum sind die Sprachdatenpakete so groß?
3. Kann man die Sprachdatenpakete verkleinern?
4. Für meine Sprache gibt es mehrere Sprachdatenpakete. Welches soll ich nehmen?
5. Wie kommen die semantischen Ähnlichkeiten zustande?
6. Was ist der Unterschied zwischen Ähnlichkeit
erster Ordnung (Option -s) und zweiter Ordnung (Option -s2)?
7. Wie gut ist die Qualität der
DISCO-Ähnlichkeiten im Vergleich mit anderen
Tools wie z.B. WordNet::Similarity, PMI-IR oder LSA?
8. Wie sieht es mit der Geschwindigkeit aus?
9. Kann ich aus meinem Korpus selbst ein
Sprachdatenpaket erzeugen?
1. Warum sind manche Sprachdatenpakete viel
größer als andere, selbst wenn das zugrundeliegende Korpus sogar kleiner ist?
Die Größe eines Sprachdatenpakets hängt von mehreren Faktoren ab. Neben dem
Umfang des zugrundeliegenden Textkorpus und der Anzahl der abfragbaren Wörter
kommt es vor allem auf die durchschnittliche Länge der Wortvektoren erster
(Kollokationen) und zweiter Ordnung (distributionell ähnliche Wörter) an. Bei
manchen Sprachdatenpaketen sind z.B. die 1.000 signifikantesten Kollokationen
zu jedem Wort im Index gespeichert, bei anderen nur die 200
sigifikantesten. Die unterschiedliche Länge der einzelnen Wortvektoren ist der
Hauptgrund für die unterschiedliche Größe der Sprachdatenpakete.
2. Warum sind die Sprachdatenpakete so groß?
Bei z.B. 200.000 abfragbaren Wörtern, wobei zu jedem Wort z.B. 300
Kollokationen und 1.000 distributionell ähnliche Wörter gespeichert werden
müssen, müssen 200.000 * (300 + 1.000) = 260.000.000 (260 Millionen)
Wortpaareinträge mit jeweils einem Signifikanz- bzw. Ähnlichkeitswert
gespeichert werden. Bei solchen Datenmengen kommen sehr schnell einige
Gigabyte zusammen, obwohl wir mit Lucene einen hocheffizienten und auch
komprimierten Index nutzen.
3. Kann man die Sprachdatenpakete verkleinern?
Im Allgemeinen nicht. Eine Komprimierung mit Tools wie gzip verkleinert den Index
nicht, da er bereits komprimiert ist.
Theoretisch könnte man Indexe, die aus
mehreren Dateien der Form _0.cfs, _1.cfs, _2.cfs usw. bestehen, einfach
kürzen indem man die Dateien mit den höchsten Zahlen einfach löscht. Die
Wörter sind nämlich nach ihrer Häufigkeit geordnet in den Dateien
abgespeichert. Die Datei _0.cfs enthält die am häufigsten vorkommenden
Wörter. Löscht man z.B. in einem Index mit 200.000 abfragbaren Wörtern die
obere Hälfte der Dateien, können nur noch die 100.000 häufigsten Wörter
abgefragt werden. Die Abfrage eines Wortes aus den oberen Dateien verursacht
dann allerdings einen Java-Laufzeitfehler (Runtime Exception).
Eine bessere Möglichkeit ergibt sich bei Anwendungsfällen, in denen entweder
nur die Kollokationen (Wortvektoren erster Ordnung) oder nur die
distributionell ähnlichen Wörter (Wortvektoren zweiter Ordnung) benötigt
werden. Dann kann ein Spezial-Index erstellt werden, der nur die eine oder
andere Art von Wortvektoren enthält.
4. Für meine Sprache gibt es mehrere Sprachdatenpakete. Welches soll ich nehmen?
Zunächst mal sollte das dem Sprachdatenpaket zugrundeliegende Korpus in
Sachgebiet und Textsorte möglichst den Texten entsprechen, die Ihre Anwendung
später verarbeiten soll. Wenn Sie es beispielsweise mit dem Sachgebiet EDV zu
tun haben, ist ein Sprachdatenpaket, das auf medizinischen Texten beruht,
ungeeignet. Erstens wäre nämlich das Vokabular sehr unterschiedlich: viele
EDV-Fachwörter kämen im Medizin-Sprachdatenpaket gar nicht vor. Zweitens
sind auch die semantischen Ähnlichkeiten stark korpusabhängig, wie das
folgende Beispiel illustriert. Die unten gezeigten semantisch ähnlichen Wörter
zu Maus wurden aus einem Korpus aus EDV-Zeitschriften generiert:
Maus → Tastatur Mausklick Drag Knopfdruck Doppelklick Handy Infrarot Jumper Funk SMS Modem Fernbedienung Satellit ...
Die folgenden Ähnlichkeiten zu Maus wurden dagegen aus einem Korpus aus Literatur des 19. Jahrhunderts berechnet:
Maus → Katze Ratte Mäuse Eidechse Kröte Mäuslein Schwalbe Spinne Hexe Dohle Katz Wolke Fledermaus ...
Im Zweifelsfall sind allgemeinsprachige Sprachdatenpakete, die meist mit general bezeichnet sind (z.B. de-general-20080727) eine gute Wahl. Für das Englische gibt es das Paket en-BNC-20080721, das auf dem repräsentativen British National Corpus beruht. Auch die Sprachdatenpakete auf Basis der Wikipedia decken viele Sachgebiete ab.
Ein weiteres Auswahlkriterium ist die Paketgröße. Hier gibt es teilweise deutliche Unterschiede. So ist das Paket de-general-20080727 weniger als halb so groß wie das Paket de-wikipedia-20070903. Weiteres hierzu unter Frage 1.
5. Wie kommen die semantischen Ähnlichkeiten zustande?
Die semantischen Ähnlichkeiten werden mit Hilfe statistischer Verfahren
automatisch aus sehr umfangreichen elektronischen Textsammlungen (Korpora)
berechnet. Dabei werden zunächst für jedes Wort diejenigen Wörter bestimmt,
die signifikant häufig zusammen mit ihm vorgekommen sind. Dies ergibt eine
Menge von sogenannten Kollokationen. Z.B. erhält man als Kollokationen
zu Brot die Wörter Wein, Stück, Scheibe, Laib, Lohn, tägliche, Butter,
essen, backen usw. In einem zweiten Schritt werden jetzt die Kollokationsmengen
aller Wörter miteinander verglichen, um diejenigen Wörter zu finden, die in
ähnlichen Kontexten gebraucht werden und somit semantisch ähnlich
sind. Beispielsweise findet man auch bei Toast die Kollokationen
Stück, Scheibe, Butter, essen, so dass sich zwischen den beiden
Kollokationsmengen von Brot und Toast viele Überschneidungen
ergeben. Dies ist bei den Kollokationsmengen von semantisch unähnlichen
Wörtern wie Brot und Auspuff nicht der Fall.
Das in DISCO angewandte Verfahren ist in folgendem Konferenzpapier näher beschrieben:
Peter Kolb. DISCO: A Multilingual Database of Distributionally Similar Words. In Tagungsband der 9. KONVENS, Berlin, 2008.
6. Was ist der Unterschied zwischen Ähnlichkeit
erster Ordnung (Option -s) und zweiter Ordnung (Option -s2)?
Die Ähnlichkeit erster Ordnung zwischen zwei Wörtern w1 und w2 wird durch
Vergleich der Kollokationsmengen der beiden Wörter berechnet (siehe Frage 5). Zur Berechnung der Ähnlichkeit zweiter
Ordnung werden dagegen die Mengen der semantisch ähnlichen Wörter von w1 und
w2 herangezogen. Das folgende Beispiel zeigt die Kollokationsmengen von
Brot und Kuchen, also Wörter, die in den ausgewerteten Texten
häufig zusammen mit Brot bzw. Kuchen vorgekommen sind:
Brot → backen Butter Laib Scheibe schneiden essen knuspriges
Kuchen → backen Butter Stück Sahne essen Kaffee
Damit wird die Ähnlichkeit erster Ordnung berechnet. Es ergibt sich ein großer
Ähnlichkeitswert zwischen Brot und Kuchen, da es viele
Überschneidungen der beiden Kollokationsmengen gibt, nämlich die Wörter
backen, Butter und essen.
Zur Bestimmung der Ähnlichkeit zweiter Ordnung werden die Mengen der
semantisch ähnlichen Wörter verglichen:
Brot → Käse Brötchen Fleisch Weißbrot Kartoffeln Brote Wurst Butter Vollkornbrot Mehl Schwarzbrot Schinken Kaffee
Kuchen → Waffeln Gebäck Brötchen Plätzchen Torten Kaffee Wurst Schokolade Kekse Lebkuchen Brezeln Käse
Auch hier gibt es viele Überschneidungen.
Es hat sich gezeigt (siehe das unter Frage 5
angegebene Konferenzpapier), dass die Ähnlichkeit erster Ordnung
"wählerischer" ist als die Ähnlichkeit zweiter Ordnung. Sie vergibt
normalerweise einen viel kleineren
Ähnlichkeitswert, und in vielen Fällen auch den Ähnlichkeitswert Null, in denen die
Ähnlichkeit zweiter Ordnung einen Wert deutlich über Null vergibt. Der Grund
hierfür ist, dass die Kollokationsmengen viel kleiner sind als die Mengen der
semantisch ähnlichen Wörter.
An dieser Stelle ist die Unterscheidung zwischen semantischer Ähnlichkeit im
engeren Sinn (engl. semantic similarity) und semantischer Verwandtheit
(engl. semantic relatedness) nützlich. Z.B. sind die Wörter Arzt
und Krankenhaus zwar semantisch verwandt, aber nicht
ähnlich. Arzt und Doktor sind sich dagegen sehr ähnlich, es
handelt sich um Synonyme. Untersuchungen haben ergeben, dass zur Modellierung
von semantischer Ähnlichkeit die Ähnlichkeit erster Ordnung besser geeignet
ist, zur Modellierung semantischer Verwandtheit dagegen die Ähnlichkeit
zweiter Ordnung. Dies veranschaulicht auch die folgende Tabelle:
Ähnlichkeit 1. Ordnung | Ähnlichkeit 2. Ordnung | |
Karpfen - Hecht | 0.129 | 0.201 |
Karpfen - Gemüse | 0.016 | 0.314 |
Nach der Ähnlichkeit erster Ordnung sind sich Karpfen und Hecht sehr viel ähnlicher als Karpfen und Gemüse, nach der Ähnlichkeit zweiter Ordnung sind sich beide Wörter sehr ähnlich, wobei sich hier der Fisch und das Gemüse noch ähnlicher sind als die beiden Fische.
Ein weiterer Unterschied zwischen den beiden Ähnlichkeitsmaßen ist, dass die Abfrage der Ähnlichkeit erster Ordnung ca. doppelt so schnell geht wie die Abfrage der Ähnlichkeit zweiter Ordnung.
7. Wie gut ist die Qualität der
DISCO-Ähnlichkeiten im Vergleich mit anderen
Tools wie z.B. WordNet::Similarity, PMI-IR oder LSA?
Zunächst muss zwischen Tools, die auf manuell erstellten Resourcen basieren,
wie WordNet::Similarity,
und korpusbasierten Tools wie PMI-IR oder
LSA unterschieden werden. DISCO gehört
zur zweiten Gruppe. Der Hauptunterschied zwischen beiden Gruppen ist, dass die manuell erstellten
Ähnlichkeitstools zwischen den Lesarten der Wörter (z.B. hat Bank die zwei
Lesarten Geldinstitut und Möbel) unterscheiden, während bei den
korpusbasierten die Lesarten zusammenfallen. Ob dies ein Nachteil ist, hängt
allerdings vom Anwendungsfall ab.
Nachteilig bei der ersten Gruppe ist vor allem ihre mangelnde
Verfügbarkeit. Bisher existiert mit WordNet::Similarity einzig für das Englische
überhaupt ein Tool.
Im unter Frage 5 angegebenen Konferenzpapier wurde die Qualität von DISCO im Vergleich mit WordNet::Similarity, PMI-IR und LSA evaluiert. Es stellte sich heraus, dass für den Anwendungsfall semantische Verwandtheit (siehe Frage 6) DISCO sogar ein besseres Ergebnis als WordNet::Similarity erzielte. Im Anwendungsfall semantische Ähnlichkeit war DISCO deutlich besser als LSA und PMI-IR.
8. Wie sieht es mit der Geschwindigkeit aus?
Auf einem Athlon 64 mit 2,4 GHz und einer SATA-Festplatte berechnet DISCO die
Ähnlichkeiten erster Ordnung für ca. 50 Wortpaare pro Sekunde. Zur Berechnung
der Ähnlichkeit zweiter Ordnung wird die doppelte Zeit benötigt.
Es ist möglich, ein ganzes Sprachdatenpaket ins RAM einzulesen (ausreichend
Hauptspeicher vorausgesetzt). Die Abfrage-Geschwindigkeit wird dadurch
erheblich gesteigert.
9. Kann ich aus meinem Korpus selbst ein
Sprachdatenpaket (Wortraum) erzeugen?
Ja, dies ist mit dem DISCO Builder möglich.