Читать книгу Deep Learning illustriert - Jon Krohn - Страница 30
2.2.2Wortvektoren
ОглавлениеVektordarstellungen von Wörtern sind die informationsdichte Alternative zur 1-aus-n-Kodierung von Wörtern. Während 1-aus-n-Darstellungen nur Informationen über die Wortstellung festhalten, erfassen Wortvektoren (auch als Word Embeddings, Worteinbettungen oder Vector-Space Embeddings bekannt) Informationen sowohl über die Wortbedeutung als auch über die Wortstellung.7 Aufgrund dieser Zusatzinformationen sind Wortvektoren aus verschiedenen Gründen, die Sie im Laufe des Kapitels kennenlernen werden, vorteilhaft. Der wichtigste Vorzug besteht darin, dass Wortvektoren – analog zu den visuellen Features, die von den Deep-Learning-Modellen in Kapitel 1 automatisch erkannt wurden – es Deep-Learning-NLP-Modellen erlauben, automatisch linguistische Features zu lernen.
Beim Erzeugen von Wortvektoren besteht das übergreifende Konzept darin, dass wir jedes Wort innerhalb eines Textkorpus einem bestimmten, bedeutungsvollen Ort innerhalb eines mehrdimensionalen Raums zuweisen wollen, den wir als Vektorraum bezeichnen. Anfangs ist jedes Wort einer zufälligen Stelle in diesem Vektorraum zugeordnet. Indem jedoch die Wörter betrachtet werden, die um ein bestimmtes Wort in der natürlichen Sprache herum verwendet werden, können die Standorte der Wörter im Vektorraum sich nach und nach an Orte verschieben, die die Bedeutung der Wörter repräsentieren.8
Abbildung 2–5 zeigt ein klitzekleines Beispiel dafür, welche Mechanismen hinter der Art und Weise stecken, wie Wortvektoren konstruiert werden. Beginnend mit dem ersten Wort in unserem Textkorpus und wortweise nach rechts bis zum letzten Wort in unserem Korpus fortlaufend, betrachten wir jedes einzelne Wort als Zielwort. In dem speziellen Augenblick, der in Abbildung 2–5 festgehalten wird, ist das momentan untersuchte Zielwort word. Das nächste Zielwort wäre by, gefolgt von the, dann company usw. Wir betrachten jedes Zielwort in Bezug auf die Wörter, die es umgeben – seine Kontextwörter. In unserem Beispiel verwenden wir ein Kontextwort-Fenster von drei Wörtern. Das bedeutet, dass im Falle des Zielwortes word die drei Wörter links davon (a, know und shall) gemeinsam mit den drei Wörtern rechts davon (by, company und keep) die sechs Kontextwörter bilden.9 Wenn wir zum nächsten Zielwort (by) weitergehen, verschiebt sich auch das Fenster der Kontextwörter um eine Position nach rechts: shall und by fallen als Kontextwörter weg, während word und it hinzukommen.
Abb. 2–5Ein winziges Beispiel für den Prozess hinter Techniken wie »word2vec« und »GloVe«, die natürliche Sprache in Wortvektoren umwandeln.
Zwei der beliebtesten Techniken zum Konvertieren von natürlicher Sprache in Wortvektoren sind word2vec10 und GloVe11. Bei beiden Techniken ist es unser Ziel, beim Betrachten eines bestimmten Zielwortes das Zielwort anhand seiner Kontextwörter vorherzusagen.12 Wenn wir diese Vorhersagen Zielwort für Zielwort in einem großen Textkorpus verbessern, weisen wir nach und nach Wörter, die in ähnlichen Kontexten auftauchen, ähnlichen Orten im Vektorraum zu.
In Abbildung 2–6 sehen Sie eine Skizze des Vektorraums. Der Raum kann eine beliebige Anzahl von Dimensionen haben. Wir nennen ihn deshalb einen n-dimensionalen Vektorraum. In der Praxis könnten wir (je nach der Fülle des Textkorpus, der uns zum Arbeiten zur Verfügung steht, und der Komplexität unserer NLP-Anwendung) einen Wortvektorraum mit Dutzenden, Hunderten oder – in extremen Fällen – Tausenden von Dimensionen erschaffen. Wie wir im vorigen Absatz ausgeführt haben, wird jedem Wort aus unserem Korpus (z.B. king) ein Ort im Vektorraum zugewiesen. In einem 100-dimensionalen Raum etwa, würde die Lage des Wortes king durch einen Vektor angegeben werden, den wir vking nennen könnten und der aus 100 Zahlen bestehen müsste, um den Ort des Wortes king in allen verfügbaren Dimensionen zu bestimmen.
Abb. 2–6Das Diagramm der Wortbedeutung, dargestellt durch einen dreidimensionalen Vektorraum.
Das menschliche Gehirn ist nicht besonders gut darin, in mehr als drei Dimensionen räumlich logisch zu denken, weshalb unsere Skizze in Abbildung 2–6 nur drei Dimensionen aufweist. In diesem dreidimensionalen Raum benötigt jedes Wort aus unserem Textkorpus drei numerische Koordinaten, um seine Lage innerhalb des Vektorraums zu definieren: x, y und z. In diesem skizzenhaften Beispiel wird die Bedeutung des Wortes king durch einen Vektor vking repräsentiert, der aus drei Zahlen besteht. Würde vking sich an den Koordinaten x=-0.9, y=1.9 und z=2.2 im Vektorraum befinden, könnten wir die Notation [-0.9, 1.9, 2.2] verwenden, um diesen Ort kurz und knapp zu beschreiben. Diese knappe Notation wird uns in Kürze zugutekommen, wenn wir arithmetische Operationen auf Wortvektoren durchführen.
Je enger zwei Wörter im Vektorraum beieinander stehen13, umso ähnlicher ist auch ihre Bedeutung, was durch die Ähnlichkeit der Kontextwörter bestimmt wird, die ihnen in der natürlichen Sprache nahe sind. Synonyme und häufig auftretende Falschschreibungen eines bestimmten Wortes müssten – da sie dieselbe Bedeutung besitzen – fast identische Kontextwörter und entsprechend fast dieselben Orte im Vektorraum haben. Wörter, die in ähnlichen Kontexten benutzt werden, wie etwa solche, die die Zeit bezeichnen, liegen im Vektorraum meist nahe beieinander. In Abbildung 2–6 konnten Monday, Tuesday und Wednesday durch die orangefarbenen Punkte innerhalb des orangefarbenen Wochentage-Clusters in der oberen rechten Ecke des Würfels dargestellt werden. Die Monatsnamen dagegen könnten in ihrem eigenen violetten Cluster liegen, der den Wochentagen benachbart ist, aber dennoch von ihnen unterschieden werden kann: Beide beziehen sich auf das Datum, sind aber getrennte Subcluster innerhalb eines größeren dates-Bereichs. Als zweites Beispiel würden wir feststellen, dass Programmiersprachen gemeinsam an einer anderen Stelle des Wortvektorraums zu finden sind, aber in einer gewissen Entfernung von den die Zeit bezeichnenden Wörtern – etwa in der linken oberen Ecke. Auch hier bilden sich Subcluster: Objektorientierte Sprachen wie Java, C++ und Python liegen beieinander, ein wenig abgetrennt von funktionalen Programmiersprachen wie Haskell, Clojure und Erlang. Wie Sie in Kapitel 11 sehen werden, wenn Sie selbst Wörter in den Vektorraum einbetten, werden weniger konkret definierten Begriffen, die dennoch eine bestimmte Bedeutung transportieren (z.B. die Verben created, developed und built), ebenfalls Positionen im Wortvektorraum zugewiesen, die es ihnen erlauben, in NLP-Aufgaben nützlich zu sein.