Keyword Research: Semantische Keyword Tools (Beispiel)
In meinem letzten Beitrag habe ich die grundsätzliche Funktionsweise semantischer Keyword Tools beschrieben. Ziel dieser Tools ist es, aus wenigen initialen Begriffen eine große Menge semantisch verwandter Begriffe zu erzeugen, die im Aggregat ein hohes Suchvolumen erzeugen und jeweils möglichst günstige Klickpreise vorweisen können. In diesem Beitrag möchte ich nun versuchen, das recht komplexe Verfahren an einem kleinen Beispiel zu veranschaulichen. Die einzelnen Auswertungen erfolgten unter Verwendung eines kleinen selbstgeschriebenen Perl-Programms.
Für die englischen Begriffe pig, pork, beef und vegetable wurde jeweils eine Suche in Google durchgeführt und die kurze Inhaltsangabe der ersten zwei bzw. drei Treffer wurde als Dokument für die weitere Berechnung herangezogen. Die Ergebnisse werden bei längeren Dokumenten wesentlich besser. Darauf wurde aber aufgrund der Nachvollziehbarkeit und Übersichtlichkeit verzichtet. Die Suche erfolgte für englische Begriffe – ebenso wurden nur englische Ergebnisseiten berücksichtigt – da es für die englische Sprache den Porter Stemmer vorimplementiert gibt, der Begriffe auf ihren Wortstamm zurückführt, um z.B. Pluralendungen zu vernachlässigen.
Allgemeines Vorgehen
Das allgemeine Vorgehen zum Erstellen des repräsentativen Beschreibungsvektors für einen konkreten Suchbegriff sieht folgendermaßen aus (die z.T. etwas technische Beschreibung wird gleich darauf anhand eines Beispiels ausführlich vorgeführt):
- Suchanfrage bei einem Suchmaschinenanbieter nach dem konkreten Begriff x stellen
- Sei R(x) die Menge der (maximal) n Ergebnisseiten d_1, d_2, …, d_n
- Berechne für jede Ergebnisseite d_i aus R(x) einen TFIDF Vektor v_i
- Schränke jeden Vektor v_i auf die m am höchsten bewerteten Begriffe ein
- Berechne den Durchschnitt der normierten Vektoren v_i (euklidische Norm)
- Normiere den gerade berechneten Durchschnitt
Berechnung am Beispiel pig
Anhand der Ergebnisdokumente für den Suchbegriff pig wird ein repräsentativer Beschreibungsvektor für eben diesen Suchbegriff im Folgenden berechnet. Eine Suchanfrage bei Google nach dem Begriff pig lieferte die folgende Ergebnisliste:

Die Kurzbeschreibungen der ersten beiden Treffer dienen als Ergebnisseiten für die anschließenden Berechnungen:
- A pig has a snout for a nose, small eyes, and a small tail, which may be curly, kinked, or straight. It has a thick body and short legs. …
- Its animal representation is the Pig. In Chinese culture, the pig is associated with fertility and virility. To bear children in the year of the pig …
Die Menge R(x) besteht im Beispiel also aus den obigen beiden Dokumenten.
Was ist ein TFIDF Vektor und wie berechnet man diesen?
Ein TFIDF Vektor ordnet jedem einzelnen Begriff eines Dokuments ein Gewicht zu. Die Höhe dieses Wertes gibt an, wie relevant der Begriff bzgl. des Dokuments und der Menge der untersuchten Dokumente ist. Dabei spielen zwei Faktoren eine Rolle. Zum einen die Häufigkeit des Begriffes im gerade untersuchten Dokument (lokale Sicht, entspricht dem tf = term frequency) und in wie vielen der untersuchten Dokumente der Begriff überhaupt (globale Sicht, idf = inverse document frequency) vorkommt. Die genaue Formel lautet:
w_(t,i) = tf_(t,i) * log(D / df_t)
Dabei entspricht tf_(t,i) der Anzahl der Vorkommen des Begriffes t im Dokument d_i. Der Wert df_t gibt an, in wie vielen Dokumenten aus R(x) der Begriff t vorkommt und D ist die Anzahl der Dokumente in R(x). Die globale Sicht stellt sicher, dass Worte, die in allen Dokumenten vorkommen, mit einem sehr kleinen Gewicht gewertet werden. Damit wird sichergestellt, dass sog. Stopwörter wie und, der usw. nicht zu stark in die Bewertung miteinfließen.
Für unser konkretes Beispiel ergibt sich folgende Tabelle:
| term | tf_(t,D_1) | tf_(t,D_2) | df_t | D/df_t | IDF_t | w_(t,D_1) | w_(t,D_2) |
| a | 5 | 0 | 1 | 2 | 0,3010 | 1,5051 | 0,0000 |
| and | 2 | 1 | 2 | 1 | 0,0000 | 0,0000 | 0,0000 |
| animal | 0 | 1 | 1 | 2 | 0,3010 | 0,0000 | 0,3010 |
| associated | 0 | 1 | 1 | 2 | 0,3010 | 0,0000 | 0,3010 |
| be | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| bear | 0 | 1 | 1 | 2 | 0,3010 | 0,0000 | 0,3010 |
| body | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| children | 0 | 1 | 1 | 2 | 0,3010 | 0,0000 | 0,3010 |
| chinese | 0 | 1 | 1 | 2 | 0,3010 | 0,0000 | 0,3010 |
| culture | 0 | 1 | 1 | 2 | 0,3010 | 0,0000 | 0,3010 |
| curly | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| eyes | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| fertility | 0 | 1 | 1 | 2 | 0,3010 | 0,0000 | 0,3010 |
| for | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| has | 2 | 0 | 1 | 2 | 0,3010 | 0,6021 | 0,0000 |
| in | 0 | 2 | 1 | 2 | 0,3010 | 0,0000 | 0,6021 |
| is | 0 | 2 | 1 | 2 | 0,3010 | 0,0000 | 0,6021 |
| it | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| its | 0 | 1 | 1 | 2 | 0,3010 | 0,0000 | 0,3010 |
| kinked | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| legs | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| may | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| nose | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| of | 0 | 1 | 1 | 2 | 0,3010 | 0,0000 | 0,3010 |
| or | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| pig | 1 | 3 | 2 | 1 | 0,0000 | 0,0000 | 0,0000 |
| representation | 0 | 1 | 1 | 2 | 0,3010 | 0,0000 | 0,3010 |
| short | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| small | 2 | 0 | 1 | 2 | 0,3010 | 0,6021 | 0,0000 |
| snout | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| straight | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| tail | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| the | 0 | 4 | 1 | 2 | 0,3010 | 0,0000 | 1,2041 |
| thick | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| to | 0 | 1 | 1 | 2 | 0,3010 | 0,0000 | 0,3010 |
| virility | 0 | 1 | 1 | 2 | 0,3010 | 0,0000 | 0,3010 |
| which | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| with | 0 | 1 | 1 | 2 | 0,3010 | 0,0000 | 0,3010 |
| year | 0 | 1 | 1 | 2 | 0,3010 | 0,0000 | 0,3010 |
Hierbei wurden die einzelnen Worte unverändert übernommen. Ignoriert man aber häufige Suffixe, also Wortendungen, und betrachtet nur noch den Wortstamm (Porter Stemmer) ergibt sich das folgende Bild:
| term | tf_(t,D_1) | tf_(t,D_2) | df_t | D/df_t | IDF_t | w_(t,D_1) | w_(t,D_2) |
| a | 5 | 0 | 1 | 2 | 0,3010 | 1,5051 | 0,0000 |
| and | 2 | 1 | 2 | 1 | 0,0000 | 0,0000 | 0,0000 |
| anim | 0 | 1 | 1 | 2 | 0,3010 | 0,0000 | 0,3010 |
| associ | 0 | 1 | 1 | 2 | 0,3010 | 0,0000 | 0,3010 |
| be | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| bear | 0 | 1 | 1 | 2 | 0,3010 | 0,0000 | 0,3010 |
| bodi | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| children | 0 | 1 | 1 | 2 | 0,3010 | 0,0000 | 0,3010 |
| chines | 0 | 1 | 1 | 2 | 0,3010 | 0,0000 | 0,3010 |
| cultur | 0 | 1 | 1 | 2 | 0,3010 | 0,0000 | 0,3010 |
| curli | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| ey | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| fertil | 0 | 1 | 1 | 2 | 0,3010 | 0,0000 | 0,3010 |
| for | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| ha | 2 | 0 | 1 | 2 | 0,3010 | 0,6021 | 0,0000 |
| in | 0 | 2 | 1 | 2 | 0,3010 | 0,0000 | 0,6021 |
| is | 0 | 2 | 1 | 2 | 0,3010 | 0,0000 | 0,6021 |
| it | 1 | 1 | 2 | 1 | 0,0000 | 0,0000 | 0,0000 |
| kink | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| leg | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| mai | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| nose | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| of | 0 | 1 | 1 | 2 | 0,3010 | 0,0000 | 0,3010 |
| or | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| pig | 1 | 3 | 2 | 1 | 0,0000 | 0,0000 | 0,0000 |
| represent | 0 | 1 | 1 | 2 | 0,3010 | 0,0000 | 0,3010 |
| short | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| small | 2 | 0 | 1 | 2 | 0,3010 | 0,6021 | 0,0000 |
| snout | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| straight | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| tail | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| the | 0 | 4 | 1 | 2 | 0,3010 | 0,0000 | 1,2041 |
| thick | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| to | 0 | 1 | 1 | 2 | 0,3010 | 0,0000 | 0,3010 |
| viril | 0 | 1 | 1 | 2 | 0,3010 | 0,0000 | 0,3010 |
| which | 1 | 0 | 1 | 2 | 0,3010 | 0,3010 | 0,0000 |
| with | 0 | 1 | 1 | 2 | 0,3010 | 0,0000 | 0,3010 |
| year | 0 | 1 | 1 | 2 | 0,3010 | 0,0000 | 0,3010 |
Die beiden letzten Spalten geben nun die Gewichtungen der einzelnen Terme in den beiden Dokumenten wieder.
Was macht man nun mit den TDIDF-Vektoren?
Zunächst werden sie auf die Top m (in unserem Beispiel 10) Elemente reduziert. Die folgende Tabelle zeigt das Ergebnis:
| term | D_1 | D_2 |
| a | 1,5051 | |
| bear | 0,3010 | |
| bodi | 0,3010 | |
| children | 0,3010 | |
| curli | 0,3010 | |
| ey | 0,3010 | |
| fertil | 0,3010 | |
| ha | 0,6021 | |
| in | 0,6021 | |
| is | 0,6021 | |
| of | 0,3010 | |
| or | 0,3010 | |
| represent | 0,3010 | |
| small | 0,6021 | |
| snout | 0,3010 | |
| tail | 0,3010 | |
| the | 1,2041 | |
| viril | 0,3010 | |
| which | 0,3010 | |
| with | 0,3010 |
Für jedes Dokument existiert nun ein eingeschränkter repräsentativer Vektor. Diese Vektoren stellen Richtungen in einem hoch-dimensionalen Raum dar. Dabei steht jeder Begriff für eine einzelne Dimension des Raumes. Um diese Vektoren besser untereinander vergleichen zu können, wird ihre Länge normiert. Anschließend wird aufbauend auf den normierten Vektoren der Durchschnitt berechnet, um für den ursprünglichen Suchbegriff einen repräsentativen Vektor zu gewinnen.
Wie wird ein Vektor normiert? Und was bedeutet das? Wie gerade erwähnt stellen Vektoren Richtungen in einem hoch-dimensionalen Raum dar. Jeder dieser Vektoren hat eine Norm (dies entspricht im geometrischen Sinne der Länge des Vektors). Beim Normieren wird jeder Eintrag des Vektors durch die Norm des Vektors geteilt. Man erhält dadurch einen äquivalenten Vektor mit der Norm 1. Wir verwenden hierbei die Euklidische Norm. Diese entspricht der Länge in der Geometrie.
Wie berechnet man die euklidische Norm eines m-dimensionalen Vektors? Man bildet die Summe der Quadrate der einzelnen Einträge und zieht daraus anschließend die Wurzel. Damit ergeben sich für unsere beiden Beispieldokumente die folgenden Normen:
- D_1: sqrt(1,5051^2 + 0,3010^2 + … + 0,3010^2) = 1,9039
- D_2: sqrt(0,3010^2 + 0,3010^2 + … + 0,3010^2) = 1,6761
In der obigen Tabelle wird also jeder Eintrag in der Spalte D_1 durch 1,9039 und in der Spalte D_2 durch 1,6761 geteilt. Damit erhält man den normierten Vektor für jedes einzelne Dokument. Über diese normierten Vektoren wird nun der Durchschnitt gebildet, d.h. alle Vektoren werden addiert und anschließend jeder Vektoreintrag durch die Anzahl der aufaddierten Vektoren geteilt. Der hierbei entstehende Ergebnisvektor kann nun wieder mehr als m Einträge enthalten. Für den Begriff pig ergibt sich somit folgender Durchschnittsvektor:
| a | 0,3953 |
| bear | 0,0898 |
| bodi | 0,0791 |
| children | 0,0898 |
| curli | 0,0791 |
| ey | 0,0791 |
| fertil | 0,0898 |
| ha | 0,1581 |
| in | 0,1796 |
| is | 0,1796 |
| of | 0,0898 |
| or | 0,0791 |
| represent | 0,0898 |
| small | 0,1581 |
| snout | 0,0791 |
| tail | 0,0791 |
| the | 0,3592 |
| viril | 0,0898 |
| which | 0,0791 |
| with | 0,0898 |
Dieser Vektor wird wiederum normiert. Die Norm ist in diesem Fall 0,7071. Das Ergebnis ist nun der endgültige Repräsentant für den Suchbegriff pig:
| a | 0.5590 |
| bear | 0.1270 |
| bodi | 0.1118 |
| children | 0.1270 |
| curli | 0.1118 |
| ey | 0.1118 |
| fertil | 0.1270 |
| ha | 0.2236 |
| in | 0.2540 |
| is | 0.2540 |
| of | 0.1270 |
| or | 0.1118 |
| represent | 0.1270 |
| small | 0.2236 |
| snout | 0.1118 |
| tail | 0.1118 |
| the | 0.5080 |
| viril | 0.1270 |
| which | 0.1118 |
| with | 0.1270 |
Die restlichen 3 Suchbegriffe
Als Ausgangsbasis für die restlichen 3 Suchbegriffe dienten die folgenden Ergebnisseiten einer Suchanfrage bei Google.



Die einzelnen Ergebnistexte, die Google bei einem Treffer anzeigt, wurden als Dokumente für die entsprechenden Suchbegriffe interpretiert und mittels des Stemmers auf ihren Wortstamm reduziert.
Vollkommen analog kann man dann entsprechende repräsentative Vektoren für die anderen 3 Suchbegriffe berechnen:
| term | beef | pig | pork | veg |
| 100 | 0,0000 | 0,0000 | 0,0000 | 0,1826 |
| a | 0,0000 | 0,5590 | 0,4249 | 0,0000 |
| accord | 0,1601 | 0,0000 | 0,0000 | 0,0000 |
| and | 0,0928 | 0,0000 | 0,0000 | 0,1601 |
| answer | 0,0000 | 0,0000 | 0,1792 | 0,0000 |
| barrel | 0,0000 | 0,0000 | 0,2125 | 0,0000 |
| base | 0,0000 | 0,0000 | 0,0000 | 0,1826 |
| bear | 0,0000 | 0,1270 | 0,0000 | 0,0000 |
| beef | 0,0000 | 0,0000 | 0,1407 | 0,0000 |
| black | 0,1601 | 0,0000 | 0,0000 | 0,0000 |
| board | 0,0000 | 0,0000 | 0,1792 | 0,0000 |
| bodi | 0,0000 | 0,1118 | 0,0000 | 0,0000 |
| botan | 0,0000 | 0,0000 | 0,0000 | 0,1379 |
| bovin | 0,1325 | 0,0000 | 0,0000 | 0,0000 |
| breed | 0,1601 | 0,0000 | 0,0000 | 0,0000 |
| but | 0,0000 | 0,0000 | 0,1062 | 0,0000 |
| cattl | 0,0000 | 0,0000 | 0,0000 | 0,0000 |
| children | 0,0000 | 0,1270 | 0,0000 | 0,0000 |
| commonli | 0,0000 | 0,0000 | 0,1062 | 0,0000 |
| consum | 0,0000 | 0,0000 | 0,1407 | 0,0000 |
| content | 0,0000 | 0,0000 | 0,0000 | 0,1826 |
| contradict | 0,0000 | 0,0000 | 0,0000 | 0,1869 |
| cook | 0,2514 | 0,0000 | 0,0000 | 0,0000 |
| count | 0,0000 | 0,0000 | 0,0000 | 0,1826 |
| cuisin | 0,2649 | 0,0000 | 0,0000 | 0,0000 |
| culinari | 0,1325 | 0,0000 | 0,0000 | 0,0000 |
| curli | 0,0000 | 0,1118 | 0,0000 | 0,0000 |
| doe | 0,0000 | 0,0000 | 0,0000 | 0,1601 |
| especi | 0,1325 | 0,0000 | 0,0000 | 0,0000 |
| european | 0,1325 | 0,0000 | 0,0000 | 0,0000 |
| ey | 0,0000 | 0,1118 | 0,0000 | 0,0000 |
| fertil | 0,0000 | 0,1270 | 0,0000 | 0,0000 |
| for | 0,1325 | 0,0000 | 0,1407 | 0,0000 |
| gener | 0,2514 | 0,0000 | 0,0000 | 0,0000 |
| ha | 0,0000 | 0,2236 | 0,0000 | 0,0000 |
| health | 0,0000 | 0,0000 | 0,1792 | 0,0000 |
| in | 0,0000 | 0,2540 | 0,1176 | 0,0000 |
| includ | 0,0000 | 0,0000 | 0,0000 | 0,3203 |
| industri | 0,2514 | 0,0000 | 0,0000 | 0,0000 |
| inform | 0,2514 | 0,0000 | 0,0000 | 0,0000 |
| is | 0,2649 | 0,2540 | 0,2734 | 0,0000 |
| juic | 0,0000 | 0,0000 | 0,0000 | 0,1826 |
| like | 0,0000 | 0,0000 | 0,1407 | 0,1601 |
| list | 0,0000 | 0,0000 | 0,0000 | 0,1601 |
| liter | 0,0000 | 0,0000 | 0,1062 | 0,0000 |
| meat | 0,2649 | 0,0000 | 0,2814 | 0,0000 |
| member | 0,0000 | 0,0000 | 0,0000 | 0,1826 |
| name | 0,1325 | 0,0000 | 0,1407 | 0,0000 |
| nation | 0,0000 | 0,0000 | 0,1792 | 0,0000 |
| no | 0,0000 | 0,0000 | 0,0000 | 0,1869 |
| nutrit | 0,2514 | 0,0000 | 0,0000 | 0,0000 |
| of | 0,0000 | 0,1270 | 0,0000 | 0,0000 |
| on | 0,0928 | 0,0000 | 0,1407 | 0,1826 |
| or | 0,0000 | 0,1118 | 0,0000 | 0,1826 |
| origin | 0,0000 | 0,0000 | 0,1062 | 0,0000 |
| other | 0,0000 | 0,0000 | 0,1792 | 0,0000 |
| plant | 0,0000 | 0,0000 | 0,0000 | 0,1869 |
| prefectur | 0,1601 | 0,0000 | 0,0000 | 0,0000 |
| princip | 0,1325 | 0,0000 | 0,0000 | 0,0000 |
| promot | 0,0000 | 0,0000 | 0,1792 | 0,0000 |
| provid | 0,0000 | 0,0000 | 0,1792 | 0,0000 |
| rais | 0,1601 | 0,0000 | 0,0000 | 0,0000 |
| recip | 0,0000 | 0,0000 | 0,1792 | 0,0000 |
| refer | 0,1601 | 0,0000 | 0,0000 | 0,1869 |
| represent | 0,0000 | 0,1270 | 0,0000 | 0,0000 |
| sens | 0,0000 | 0,0000 | 0,1062 | 0,1601 |
| sinc | 0,0000 | 0,0000 | 0,0000 | 0,1869 |
| small | 0,0000 | 0,2236 | 0,0000 | 0,0000 |
| snout | 0,0000 | 0,1118 | 0,0000 | 0,0000 |
| some | 0,0000 | 0,0000 | 0,1407 | 0,1601 |
| spice | 0,0000 | 0,0000 | 0,0000 | 0,1601 |
| strict | 0,1601 | 0,0000 | 0,0000 | 0,0000 |
| subgroup | 0,0000 | 0,0000 | 0,0000 | 0,1826 |
| tail | 0,0000 | 0,1118 | 0,0000 | 0,0000 |
| tajima-ushi | 0,1601 | 0,0000 | 0,0000 | 0,0000 |
| term | 0,0000 | 0,0000 | 0,0000 | 0,1869 |
| that | 0,0000 | 0,0000 | 0,0000 | 0,1869 |
| the | 0,0000 | 0,5080 | 0,2814 | 0,0000 |
| their | 0,0000 | 0,0000 | 0,0000 | 0,1826 |
| there | 0,0000 | 0,0000 | 0,0000 | 0,1869 |
| thi | 0,0000 | 0,0000 | 0,0000 | 0,1601 |
| to | 0,3203 | 0,0000 | 0,1792 | 0,1869 |
| tradit | 0,1601 | 0,0000 | 0,0000 | 0,0000 |
| viril | 0,0000 | 0,1270 | 0,0000 | 0,0000 |
| websit | 0,0000 | 0,0000 | 0,1792 | 0,0000 |
| which | 0,0000 | 0,1118 | 0,1062 | 0,1601 |
| with | 0,0000 | 0,1270 | 0,0000 | 0,0000 |
Wie stellt man nun fest, ob sich zwei Begriffe ähnlich sind?
Um festzustellen, wie semantisch ähnlich sich zwei Begriffe sind, nimmt man die beiden entsprechenden repräsentativen Vektoren und bildet das Skalarprodukt der beiden Vektoren. Dazu erweitert man zunächst die beiden Vektoren, so dass sie jeweils noch fehlende Begriffe des anderen Vektors mit dem Gewicht 0 enthalten. Die beiden Vektoren werden den Begriffen nach sortiert (siehe obige Darstellung der repräsentativen Vektoren). Das Skalarprodukt ist die Summe der Produkte zueinandergehöriger Gewichte. Je höher der Wert, desto größer ist die semantische Ähnlichkeit der verglichenen Suchbegriffe.
Untersucht man die vier obigen Begriffe ergeben sich folgende Werte:
- beef, pork: 0,2547
- beef, pig: 0,0673
- beef, veg: 0,1216
- pig, pork: 0,4917
- pig, veg: 0,0383
- pork, veg: 0,1382
Fazit
Wenn man sich obige Werte genauer ansieht, kann man sehr schön erkennen, dass die berechneten Werte durchaus der Realität entsprechen. Die beiden Begriffe pig und pork haben die höchste semantische Ähnlichkeit. Das ist absolut nachvollziehbar, wenn man sich die entsprechenden deutschen Begriffe ansieht: Schwein und Schweinefleisch. Betrachtet man beef und pork sind sich diese auch noch etwas ähnlich. Immerhin handelt es sich bei beiden Begriffen um unterschiedliche Fleischarten. Sowohl beef und vegetable als auch pork und vegetable sind sich noch ein klein wenig ähnlich. Bei allen drei Begriffen handelt es sich um Worte auf dem Bereich der Küche und des Kochens. Die geringste Ähnlichkeit haben in diesem Fall die beiden Begriffe beef und pig. Es handelt sich weder um das gleiche Tier noch um den gleichen Kontext (z.B. Küche).
Zusammenfassend kann man sagen, dass sich schon an diesem doch relativ kleinen Beispiel zeigt, dass das beschriebene Verfahren durchaus in der Lage ist, die semantische Ähnlichkeit zwischen einzelnen Begriffen zu erfassen und als Zahlenwert quantitativ zu repräsentieren.
