Similarity Engine

In diesem Text soll das von Google beantragte Patent für die Erkennung doppelter Texte möglichst verständlich erklärt werden.
Das Patent selbst im Originaltext kann dort nachgelesen werden: "Similarity Engine".

Prinzip

Das Prinzip, auf der die Similarity Engine basiert, ist an sich nicht sehr kompliziert, abgesehen von sprachlichen Hindernissen, mit denen das Patent ausgeschmückt ist, und natürlich der Umsetzung, die fortgeschrittene Mathematik-Kenntnisse erfordern.

Im ersten Schritt wird ein Dokument in Form von Vektoren dargestellt. Jedem Bestandteil des Kontents bzw. jedem Wort wird ein representativer und eindeutiger Vektor zugewiesen.
Anschließend wird abhängig von der Häufigkeit eines Begriffs dessen Gewichtung berechnet, die beim Vergleich bzw. bei der Überprüfung von großer Bedeutung ist.
Durch Multiplikation des jeweiligen Wort-Vektors mit der Gewichtung wird ein Gesamtvektor für den vollständigen Text errechnet.
Als letztes kommt es zum (Bit-für-Bit) Vergleich zweier Dokumente, die zuvor in sogenannten "result vectors" dargestellt wurden, wonach entschieden wird, wie sehr sich die Texte ähneln, wobei hierbei nicht vernachlässigt wird, dass die Verwendung mancher Wörter schlimmer ist als die anderer Wörter (siehe Schritt zur Festlegung der Gewichtung).

representative Vektoren-Darstellung

Der Kontent wird in seine Bestandteile/Wörter zerlegt. Jedes Wort wird übersetzt in hashing vectors. Beispiel:

  • four: (-4,2,6)
  • score: (8,-9,-4)
(ToDo: Noch fehlt es mir ehrlichgesagt an dem mathematischen Hintergrundwissen, wie man aus einem Wort einen solchen Hashing-Vektor bekommt. Doch im Laufe der Zeit werde ich diese Wissenslücke auffüllen und die Information hier nachreichen.)

Gewichtung jedes Wortes

Angenommen jedes Wort hätte die selbe Gewichtung bei dem Ähnlichkeits-Check, so würden wir wegen häufig genutzten Wörtern wie und oder der, die, das usw. schnell Schwierigkeiten bekommen. Google verwendet interessanter Weise keine sogenannte Stop-Word Liste, sondern unterscheidet die Bedeutung jedes einzelnen Wortes, das vorkommt, für den Vergleich.
Dazu wird die Gewichtung jedes einzelnen Wortes bzw. Hashing-Vektors errechnet indem Google in seiner unvorstellbar großen Datenbank an Wörtern/Vektoren nachfrägt, wie oft diese denn allgemein genutzt werden und wie oft sie im eigentlich zu-prüfenden Dokument vorkommen. Die Rechnung ist recht einfach und sieht folgendermaßen aus:

  • g=a/b [0 < g < 1; a!=0!=b]
  • g: Gewichtung
  • a: Häufigkeit des Wortes im Text, der geprüft wird
  • b: allg. Häufigkeit des Wortes (im gesamten Web/Sprachgebrauch/in Googles DB gespeicherter Wörter/Vektoren)
Demnach ist der Faktor eines oft-genutzten Wortes annähernd oder zumindest nahe 0, da bei großer allgemeiner Häufigkeit b des Wortes in Webdokumenten der Gewichtungsfaktor g fast schon unabhängig von a (Anzahl, wie oft das Wort im eigentlichen Kontent vorkommt) sehr klein wird. Gleichzeitig werden seltene Begriffe wie Fachwörter mehr auffallen und sich somit bei gewissen Mengen an Übereinstimmungen im Vergleich mit anderen Dokumenten deutlich negativer auswirken.
Da es für den nächsten Schritt zur Veranschaulichung dient hier noch kurz das Beispiel:
  • four: 0.3
  • score: 0.4

Gesamtvektor eines Dokuments

Unübersetzt result vector zeichnet wird der mehrdimensionale (Hash) Vektor bezeichnet, der einem Dokument letzten Endes zugewiesen wird. Im Patent ist die Rede von 64 Dimensionen, wobei Google theoretisch auch deutlich mehr Dimensionen verwenden könnte um die Schärfe zu erhöhen.
Die einzelnen Wort-vertretenden Vektoren (hashing vectors) aus dem ersten Schritt werden zunächst mit ihrer individuell errechneten Gewichtung multipliziert.
Daraufhin werden die Vektoren addiert.
Man erhält dadurch einen Gesamtvektor (result vector) aus der Summe der mit ihrer Gewichtung multiplizierten Vektoren (Wort-Vertretungen; hashing vectors aus Schritt eins).

  • Rechenbeispiel "four score"
  • +(-4*0.3, 2*0.3, 6*0.3)
  • +(8*0.4, -9*0.4, -4*0.4)
  • =(2.0, 3.0, 0.2)

Vergleich

Nun kommt es endlich zum Vergleich, wobei die Similarity Enginge den Hash Vektor (result vector) des zu-prüfenden Dokuments mit dem Vergleichsvektor Bit-für-Bit vergleicht.
Verwendet Google also beispielsweise einen 64 dimensionalen Vektor, so würde der Test als Ergebnis zwischen 0 und 64 "Ähnlichkeiten" feststellen, wobei 0 für "unique" bzw. 64 für "sehr ähnlich" stehen würde. Erfreulich wäre gewesen, wenn im Patent ein konkreter Schwellenwert genannt würde; jedoch wird nur als Beispiel genannt: >50

Wörter-Bundle

Nachdem in der Erklärung der Einfachkeit halber davon ausgegangen wird, dass im ersten Schritt jedes Wort in einen Vektor umgewandelt wird, erfährt man in den letzten Passagen des Patenttextes, dass es aus Googles Sicht auch sinnvoll ist, beispielsweise zehn Wörter zu einem Vektor zusammenzufassen. Dabei wird von einer Kontext-Distanz, z.B. Umfang von zehn Wörtern, gesprochen.
Ein weiterer Aspekt, der angesprochen wird, der aber hier unter Umständen nebensächlich erscheinen könnte, ist, dass man dadurch erschließen kann, welche Wörter in einem bestimmten Kontext als Synonyme gebraucht werden. Dazu folgende hoffentlich verständliche Übersetzung:
Wenn beispielsweise das Wort "cart" regelmäßig im Dokument mit dem Wort "shop" innerhalb der Kontext-Distanz erscheint, so wäre der Wert von "cart" relativ hoch im Vektor. Zwei unterschiedliche Wörter mit großer Ähnlichkeit, gemäß der Similarity Enginge, sind wahrscheinlich in dem Text als Synonyme verwendet worden.

Fazit

Das war erstmal das Wesentliche, was im Patent über die Similarity Engine zu erfahren ist. Fehler schließe ich keineswegs aus, sondern hoffe auf Hinweise Eurerseits diesbezüglich. In der Hoffnung, Euch dadurch nicht verwirrt und keine Missverständnisse verbreitet zu haben, wäre es nun schön, wenn der ein oder andere nützliche Schlüsse oder Erkenntnisse daraus ziehen könnte und diese auch preisgibt.

  • Auch wenn das nicht unbedingt die Neuheit des Tages ist: Auf Grund der Vektorendarstellung lässt sich bestätigen, dass es sinnlos wäre, den Filter in die Irre führen zu wollen indem man die Reihenfolge der Wörter und somit den Text geringfügig verändert.
  • Vielmehr spielt die Häufigkeit bzw. die Anzahl der Nutzung eines Wortes im Kontent doch eine gewisse Rolle.
  • Dein Fazit: seo-fazit[ät]cashers.de

mehr dazu...

An der Stelle verweise ich auf den Thread zu diesem Thema im SEO Einsteiger Forum und auf pro-seo.