Vergleichen Sie Zeichenfolgen und ordnen Sie die am besten übereinstimmenden zuHallo,
Ein bisschen herausfordernd (vielleicht)
Ich versuche, Zeilenwerte einer Beispielliste von Zeichenfolgen zuzuordnen und möchte wissen, welche Elemente in der Beispielliste am besten mit dem Zeilenwert übereinstimmen.
Hier ist ein Beispiel für eine Liste
Beispielzeichenfolgen = { "Port3_Currents_587", "Port1_Volt_8_Aus", "PortC_Volt_12", "PortX_Curre_589_Ein", "Curren_Port_1280_Ein", "Currents_5sd_Ein_Port1", "Port_Currents_587_Ein" };
Wie findet man heraus, welche Zeilen die meisten Zeichen aufweisen, die mit einer Beispielzeichenfolge übereinstimmen, und weist die am besten übereinstimmende Zeichenfolge aus der Liste der zweiten Spalte zu?
Irgendwelche Vorschläge?
Hier ist das Endergebnis, das ich erreichen möchte:

Danke,
Automatisierung und SkriptingBetreff: Zeichenfolgen vergleichen und die meisten Übereinstimmungen zuweisen@jthi Ich suche nach der engsten Übereinstimmung als Zeichenfolge aus der Liste. Ich kenne den Shortest Edit-Skriptindex, versuche jedoch herauszufinden, wie ich die engste Übereinstimmungszeichenfolge aus der zufällig sortierten Beispielliste zuweisen kann.
Betreff: Zeichenfolgen vergleichen und die meisten Übereinstimmungen zuweisenNach welchen Kriterien kann ich die beste Übereinstimmung unter den Zeichenfolgen ermitteln? „Gemeinsam“ im SES? Können Sie ein Beispiel nennen?
Betreff: Zeichenfolgen vergleichen und die meisten Übereinstimmungen zuweisenIch denke, das hängt davon ab, was Sie als „am besten passend“ betrachten. Einige Beispiele:
- PortX_Currents_5879_On, was ist näher, PortX_Curre_589_On oder Port_Currents_587_On ?
- Port3_Currents_5879_On, was ist näher, Port3_Currents_587 oder Port_Currents_587_On ?
und warum?
Betreff: Zeichenfolgen vergleichen und die meisten Übereinstimmungen zuweisen- PortX_Currents_5879_Ein das ist näher PortX_Curre_589_On oder Port_Currents_587_On ?
- Port3_Currents_5879_Ein das ist näher Port3_Currents_587 oder Port_Currents_587_On ?
Ich würde sagen, berücksichtigen Sie beide Fälle für jede Zeichenfolge, da sie sehr eng übereinstimmen, und entscheiden Sie dann, welche er auswählt.
Betreff: Zeichenfolgen vergleichen und die meisten Übereinstimmungen zuweisenHöchstwahrscheinlich würde Ihr Algorithmus diese nicht als gleich betrachten. Wenn ich raten müsste, würden viele die zweite Option als näher betrachten, da sie weniger Bearbeitungen erfordert. Für eine einfache Überprüfung mit Shortest Edit Distance() könnten Sie einfach nach Einfügungen, Entfernungen und der Anzahl bearbeiteter Buchstaben suchen. Choose Closest() könnte eine etwas brachialere Methode sein, da Sie einfach 9999 Bearbeitungen oder etwas Ähnliches zulassen könnten.
Meine recht schnellen Lösungen stimmen nicht mit der von Ihnen angegebenen am besten übereinstimmenden Zeichenfolge überein (ich möchte lediglich prüfen, wie lang die gemeinsame Sequenz am Anfang ist).

Einige Links zum Thema Editierdistanz
Wenn Sie JMP18 haben, können Sie auch Python für den String-Distanzvergleich verwenden (aber höchstwahrscheinlich reichen die Methoden von JMP völlig aus). Wenn Sie sich erlauben, nicht standardmäßige Bibliotheken mit Python zu verwenden, erhalten Sie noch mehr Optionen.
Betreff: Zeichenfolgen vergleichen und die meisten Übereinstimmungen zuweisenIch werde mal nachschauen. Danke, Jarmo.
Haben Sie die ShorestEdit/ChooseCloset-Spalten im obigen Snippet manuell erstellt? Wenn nicht, würden Sie uns Ihre Logik mitteilen?
Danke,
Betreff: Zeichenfolgen vergleichen und die meisten Übereinstimmungen zuweisenDer Versuch, die besten Übereinstimmungen manuell zu berechnen, wäre zu aufwändig, daher habe ich die genannten Funktionen verwendet.
„Choose Closest“ lässt sich sehr einfach implementieren, wenn Sie sich das Skriptindexbeispiel ansehen, das Bearbeitungen zulässt (das erste Argument ist Ihr Wert in der Tabelle, das zweite Ihre Beispielliste, und erhöhen Sie die maximale Bearbeitungsanzahl nach Bedarf).

Betreff: Zeichenfolgen vergleichen und die meisten Übereinstimmungen zuweisenGehen Sie Ihre Liste durch, führen Sie die Berechnung mit dem Shortest Edit Script für jeden Wert durch (oder schreiben Sie Ihren eigenen Algorithmus) und wählen Sie den Wert mit der besten Übereinstimmung aus.