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.
Antworten:
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.
quelle