2010-12-14 15 views
1


Ich arbeite an einem Projekt, bei dem ich genetische Algorithmen verwende, um Wortlisten zu erstellen, die einen Text am besten beschreiben.
Ich verwende derzeit Kosinusähnlichkeit, um es zu tun, aber es hat zwei Fehler: es ist viel zu langsam für den Zweck und wenn zwei Vektoren verglichen werden Nullen, endet es mit einer künstlich hohen Ähnlichkeit und einem Wortvektor, der nicht ist t sehr gut. Irgendwelche Vorschläge für andere Maßnahmen, die schneller sein würden/weniger Notiz von Wörtern nehmen, die nicht da sind? Danke.Schnelle Vektordifferenz/Ähnlichkeitsmessungen

+0

Es ist nicht wirklich klar, was Sie fragen, aber sind Sie vielleicht nach [Levenshtein Entfernung] (http://en.wikipedia.org/wiki/Levenshtein_distance) oder [Hamming Entfernung] (http: // en. wikipedia.org/wiki/Hamming_distanz)? –

Antwort

3

Kosinusähnlichkeit ist ein Skalarprodukt über Produktgrößen, daher ist die Minimierung der Anzahl der Dimensionen entscheidend.

der Herde ein wenig keulen, möchten Sie vielleicht stemming anwenden Wörter mit ähnlicher Bedeutung in einer einzigen Dimension zu kollabieren, und werfen aus hapax legomena (Wörter, die unter Berücksichtigung im Korpus vorkommen nur einmal) von der Dimension Pool, da Ein Algorithmus ist wahrscheinlich nicht in der Lage, viel nützliche Informationen von ihnen abzuleiten.

Ich bin mir nicht sicher, was die Nullvektoren verursachen würde, obwohl. Kannst du ein Beispiel geben?

EDIT: Also, was sind Sie nach ist eine Wortliste zu erstellen, die selektive für ein bestimmtes Dokument oder Cluster? In diesem Fall benötigen Sie einige Möglichkeiten, um Wörter mit geringer Selektivität zu eliminieren.

Sie könnten die gebräuchlichsten Wörter wie stop words behandeln, um Ihren Dimensionssatz weiter einzuschränken und ein wenig mehr Leistung zurück zu bekommen. Auf der Seite des genetischen Algorithmus muss Ihre Fitnessfunktion auch Wortlisten bestrafen, die mit Dokumenten außerhalb des Zielclusters übereinstimmen, und nicht nur diejenigen belohnen, die mit Dokumenten innerhalb des Clusters übereinstimmen, sodass Ihre Wortliste nicht mit Begriffen überfrachtet wird häufiger als selektiv.

Wenn Sie eine bessere semantische Selektivität auch nach dem Einstellen der Fitness-Funktion benötigen, sollten Sie statt einzelner Wörter orthogonal sparse bigrams verwenden. Ich habe keine Ahnung, was es in Bezug auf die Anzahl der Dimensionen tun wird, obwohl, während es wird O (kn) verschiedene Begriffe statt n, viel mehr von ihnen werden hapaxes sein. Dies kann ein Problem verursachen, wenn Sie einzelne Wörter anstelle von OSBs in Ihren Termlisten benötigen.

+0

Ich habe mich ein bisschen geirrt, im Grunde die Unschärfe meines Sets (viele hapaxes und tausende von Wörtern, die einige Male benutzt wurden) bedeuteten, dass die Ähnlichkeiten häufig sehr hoch waren, obwohl sie kein gutes Cluster des Corpus darstellten. – Reu