Frage

erhält die x am ähnlichsten Texte aus einer Menge von Texten zu einem Text.

vielleicht ändern Sie die Seite text ist besser.

Sie sollten nicht den Text zu jedem Text vergleichen, weil es zu langsam.

War es hilfreich?

Lösung

Ich weiß nicht, was Sie von ähnlichen bedeuten, aber vielleicht sollten Sie Ihre Texte in ein Suchsystem wie laden Lucene und stellt Ihren ‚einen Text‘, um es als eine Abfrage. Lucene hat pre-Index, der die Texte so schnell die meisten ähnliche finden (durch seine Lichter) in Abfrage-Zeit, als Sie gefragt.

Andere Tipps

Die Fähigkeit zur Identifizierung von ähnlichen Dokumenten / Seiten, ob Webseiten oder allgemeinere Formen von Text oder sogar von Codes, hat viele praktische Anwendungen. Diese Themen werden auch in wissenschaftlichen Arbeiten vertreten und auch in weniger spezialisierten Foren. Trotz dieser relativen Reichtum der Dokumentation, kann es schwierig sein, die Informationen und Techniken relevant zu einem bestimmten Fall zu finden.

Durch das spezifische Problem bei der Hand zu beschreiben und die damit verbundenen Anforderungen, kann es möglich sein, das Sie mehr Beratung. In der Zwischenzeit bietet die folgenden einige allgemeine Ideen.

Viele verschiedene Funktionen verwendet werden können, zu messen, in irgendeiner Art und Weise , die Ähnlichkeit der Seiten. Die Auswahl eines (oder möglicherweise mehr) diese Funktionen hängt von verschiedenen Faktoren ab, einschließlich der Höhe der Zeit und / oder Raum kann man das Problem und auch auf das Niveau der Toleranz für Lärm erwünscht zuzuzuteilen.

Einige der einfacheren Metriken sind:

  • Länge der längsten gemeinsamen Folge von Worten
  • Anzahl gemeinsamer Wörter
  • Anzahl von gemeinsamen Wortfolgen von mehr als n Wörter
  • Anzahl gemeinsamer Wörter für die Top-n häufigsten Wörter in jedem Dokument.
  • Länge des Dokuments

besser Einige der Metriken über Arbeit, wenn normalisiert (zB zu vermeiden lange Seiten begünstigt, die durch ihre schiere Größe haben mehr Chancen, ähnliche Wörter mit anderen Seiten)

komplizierter und / oder rechenintensive Messungen sind:

  • Edit Abstand (die in der Tat ist ein allgemeiner Begriff, da es viele Möglichkeiten, um die Editier-Distanz zu messen. Im Allgemeinen ist die Idee, zu messen, wie viele [Bearbeiten] Operationen es dauern würde, einen Text in die andere zu konvertieren.)
  • Algorithmen abgeleitet von der Ratcliff / Obershelp Algorithmus (aber das Zählen Worte anstatt Buchstaben)
  • Lineare Algebra-basierte Messungen
  • Statistische Methoden wie Bayes fitlers

In der Regel können wir Messungen / Algorithmen unterscheiden, wo die meisten der Berechnung für jedes Dokument, das von einem zusätzlichen Durchgang an dem Vergleich oder die Kombination diese Messungen (mit relativ wenig zusätzlichen Berechnung) mit dem Ziel, gefolgt einmal durchgeführt werden, in Bezug auf die Algorithmen gegen die erfordern, mit den Dokumenten beschäftigen Vergleich paarweise werden.

Vor der Auswahl einer (oder auch mehrere solche Maßnahmen, zusammen mit einigen Gewichtungskoeffizienten), ist es wichtig, weitere Faktoren zu berücksichtigen, über die Ähnlichkeitsmessung per-se. zum Beispiel kann es zu ...

von Vorteil sein,
  • normalisiert den Text in irgendeiner Art und Weise (im Fall von Web-Seiten, insbesondere ähnlichen Seiteninhalten oder ähnliche Absätze sind weniger ähnlich aussehen, weil alle „Anstand“ in Verbindung mit der Seite: Kopf- und Fußzeilen, Anzeige Platten, verschiedene Markup etc.)
  • ausnutzen Markup (zB: gibt mehr Gewicht auf Ähnlichkeiten im Titel oder in Tabellen, als Ähnlichkeiten im Klartext gefunden
  • .
  • identifizieren und Domain-bezogenen (oder auch allgemein bekannt) Ausdrücke beseitigen. Zum Beispiel zwei völlig verschiedene Dokumente erscheinen ähnlich ist sie gemeinsam zwei „Kesselblech“ Paragraphen Bezug zu einem gewissen rechtlichen Hinweis oder eine allgemeine Zwecke Beschreibung, nicht wirklich mit dem Wesen der jeweiligen cocument Inhalt zugeordnet ist.

tokenize Texte, entfernen Stoppwörter und arrangiert in einem Begriff Vektor. Berechnen Sie TF-IDF. Ordnen Sie alle Vektoren in einer Matrix und berechnen Abstände zwischen ihnen ähnliche Dokumente zu finden, zum Beispiel unter Verwendung Jaccard Index.

Alles hängt davon ab, was Sie unter „ähnlich“. Wenn Sie meinen, „über das gleiche Thema“, auf der Suche nach passenden N-Gramm in der Regel Werke ziemlich gut. Zum Beispiel machen nur eine Karte von trigrams dem Text, den sie enthält, und setzen alle Trigramme von allen Ihren Texten in dieser Karte. Dann, wenn Sie erhalten Ihre Texte angepasst werden, alle seine Trigramme in der Karte suchen und die häufigsten Texte auswählen, die zurück (vielleicht mit einer gewissen Normalisierung nach Länge) kommen.

In Kürze erhalten Sie eine Funktion definieren, die „Differenz“ zwischen zwei Seiten zu messen. Ich kann eine Vielzahl solcher Funktionen vorstellen, von denen Sie für Ihre Domain wählen:

  • Differenz von Keyword-Sets - Sie können das Dokument der häufigsten Wörter im Wörterbuch beschneiden, und dann mit einer Liste von Keywords pro Dokument am Ende. Der Unterschied funciton würde dann berechnet man die Differenz als Differenz der Sätze von Keywords pro Dokument.

  • Differenz von Text - Berechnen jeder Abstand basierend auf der Anzahl der Änderungen es eine doc in eine andere mit einem Text diffing Algorithmus (siehe Text Difference Algorithmus .

Wenn Sie eine Differenzfunktion haben, berechnen einfach die Differenz der aktuellen doc mit jedem anderen doc, dann die andere doc zurück, die am nächsten ist.

Wenn Sie viel dies tun müssen, und Sie haben eine Menge von Dokumenten, dann wird das Problem ein bisschen schwieriger.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top