Bestimmen, wie ähnlich eine bestimmte Zeichenfolge einer Sammlung von Zeichenfolgen ist


10

Ich bin mir nicht sicher, ob diese Frage hierher gehört, und ich entschuldige mich, wenn nicht. Ich möchte eine programmatische Methode entwickeln, mit der ich wahrscheinlich feststellen kann, ob eine bestimmte Zeichenfolge in einen Beutel mit Zeichenfolgen "gehört". Wenn ich zum Beispiel eine Tüte mit 10.000 US-Städtenamen und dann die Zeichenfolge "Philadelphia" habe, möchte ich ein quantitatives Maß dafür, wie wahrscheinlich "Philadelphia" ein US-Städtename ist, basierend auf den US-Städtenamen, die ich bereits kenne. Obwohl ich weiß, dass ich in diesem Zusammenhang keine echten Städtenamen von falschen Städtenamen trennen kann, würde ich zumindest erwarten, dass Zeichenfolgen wie "123.75" und "Der schnelle Rotfuchs sprang über die faulen braunen Hunde" ausgeschlossen sind eine Schwelle.

Zu Beginn habe ich mir Levenshtein Distance angesehen und ein wenig darüber nachgedacht, wie dies auf Probleme angewendet wurde, die denen, die ich zu lösen versuche, zumindest etwas ähnlich sind. Eine interessante Anwendung, die ich gefunden habe, war die Erkennung von Plagiaten. In einem Artikel wurde beschrieben, wie der Levenshtein-Abstand mit einem modifizierten Smith-Waterman-Algorithmus verwendet wurde, um Papiere anhand der Wahrscheinlichkeit zu bewerten, dass es sich um eine plagarisierte Version eines bestimmten Basispapiers handelt. Meine Frage ist, ob mich jemand mit anderen etablierten Algorithmen oder Methoden, die mir helfen könnten, in die richtige Richtung weisen könnte. Ich habe das Gefühl, dass dies ein Problem sein könnte, das jemand in der Vergangenheit zu lösen versucht hat, aber mein Google-Fu hat mich bisher gescheitert.


Wenn Sie positive und negative Beispiele zur Verfügung haben, können Sie versuchen, einen Klassifikator zu trainieren. Zu Beginn würde ich versuchen, einige einfache Statistiken zu erstellen, wie sie von Yuval Filmus vorgeschlagen wurden.
Nick

Beachten Sie diese verwandte Frage .
Raphael

Stadtnamen scheinen ein schlechtes Beispiel zu sein; Sie sind überall, besonders in den USA. Hier scheint die Tabellensuche der effektivste Weg zu sein. Ist Ihr Problem allgemeiner?
Raphael

Antworten:


5

nnnn=2

Angesichts der Heuristik können Sie die Wahrscheinlichkeit verwenden , um eine Punktzahl zu erhalten, die (hoffentlich) für Ihre Beispieldaten höher ist als für anderen Text. Um einen angemessenen Schwellenwert zu bestimmen, können Sie eine Kreuzvalidierung durchführen. Wählen Sie eine Reihe von Beispielphrasen aus, die keine Städtenamen sind. Teilen Sie die Städtenamen in zwei Teile, einen großen Teil (sagen wir 80%) und einen kleinen Teil (sagen wir 20%). Trainieren Sie Ihr Modell im großen Teil (dh sammeln Sie Statistiken im großen Teil) und bewerten Sie Ihr Modell dann im kleinen Teil und anhand der Stichprobe fehlerhafter Phrasen. Stellen Sie fest, ob es einen vernünftigen Schwellenwert gibt, der die meisten Städtenamen überschreitet, aber nur eine kleine Anzahl von schlechten Phrasen.


Vielen Dank. Ich hatte angefangen, mich mit n-Gramm zu beschäftigen, wusste aber nicht, ob ich völlig außerhalb der Basis war, also bin ich froh, dass Sie es erwähnt haben. Die Wortlänge klingt auch interessant und etwas, an das ich nicht gedacht hatte.
Andrew

Möglicherweise möchten Sie die Zeichenfrequenz hinzufügen. Insbesondere sollte das alle nummerierten Sachen loswerden. Ein Vorteil besteht darin, dass solche Frequenzen Vektoren von Zahlen sind, die in einer Reihe statistischer Modelle trainiert / erkannt werden können.
Raphael

1
1n+1n
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.