文字列を比較し、最も一致するものを割り当てるこんにちは、
少し難しい(かもしれない)
行の値を文字列のサンプル リストと一致させようとしており、サンプル リスト内のどの項目が行の値と最も一致するかを知りたいと考えています。
リストの例は次のとおりです
Sample_strings = { "Port3_Currents_587"、"Port1_Volt_8_Off"、"PortC_Volt_12"、"PortX_Curre_589_On"、"Curren_Port_1280_On"、"Currents_5sd_On_Port1"、"Port_Currents_587_On" };
サンプル文字列に最も一致する文字を含む行を見つけて、リストから最も一致する文字列を 2 番目の列に割り当てるにはどうすればよいでしょうか。
助言がありますか?
私が達成したい最終結果は次のとおりです。

ありがとう、
自動化とスクリプトRe: 文字列を比較し、最も一致するものを割り当てる質問と投稿からは、最も一致する文字を探しているのか、それとも文字列として最も近い一致を探しているのか(2 つの異なるもの、2 つの異なる解決策)が明らかではありません。
文字列を一致させるには、これらのいずれかが、 最短編集スクリプトと最も近いものを選択に役立つ可能性があります (スクリプト インデックスでは、これに関するヘルプ ページへのリンクを取得できません)。
編集:
JMP ヘルプからのリンク文字列、行、またはシーケンス間の違いを識別する (jmp.com)
Re: 文字列を比較し、最も一致するものを割り当てる@jthiリストから最も近い文字列を探しています。Shortest Edit スクリプトのインデックスは知っていますが、ランダムにソートされたサンプルリストから最も近い文字列を割り当てる方法を考えています。
Re: 文字列を比較し、最も一致するものを割り当てる文字列の中で最適な一致を判断するためにどのような基準を使用できますか? SES の「共通」ですか? 例を共有していただけますか?
Re: 文字列を比較し、最も一致するものを割り当てるこれは、何を「最も一致」とみなすかによって異なると思います。いくつか例を挙げます。
- PortX_Currents_5879_On はPortX_Curre_589_OnとPort_Currents_587_Onのどちらに近いですか?
- Port3_Currents_5879_On Port3_Currents_587とPort_Currents_587_Onのどちらが近いですか?
なぜ?
Re: 文字列を比較し、最も一致するものを割り当てる- ポートX_Currents_5879_On どちらが近いか ポートX_Curre_589_On または ポート_電流_587_オン?
- ポート3_電流_5879_オン どちらが近いか ポート3_Currents_587 または ポート_電流_587_オン?
両方のケースが非常によく一致するため、各文字列について両方のケースを検討し、ユーザーがどちらを選択するかを決定することをお勧めします。
Re: 文字列を比較し、最も一致するものを割り当てるおそらく、アルゴリズムはこれらを同等とは見なさないでしょう。推測するなら、編集回数が少ないため、2 番目のオプションの方が近いと考える人が多いでしょう。最短編集距離 ()を使用した簡単なチェックでは、挿入、削除、および編集された文字数をチェックするだけです。Choose Closest () は、 9999 回の編集などを許可できるため、もう少し強引な方法かもしれません。
私のかなり素早い解決策は、あなたが提供した最も一致する文字列と一致しません(最初に共通するシーケンスがどれくらい長いかを確認したいだけです)

編集距離に関するリンクはほとんどありません
JMP18 をお持ちの場合は、文字列距離の比較に Python を使用することもできます (ただし、JMP のメソッドで十分すぎるほどです)。Python で非標準ライブラリを使用できるようにすると、さらに多くのオプションが得られます。
Re: 文字列を比較し、最も一致するものを割り当てる見てみましょう。ありがとう、Jarmo。
上記のスニペットで、ShorestEdit/ChooseCloset 列を手動で作成しましたか? そうでない場合は、ロジックを共有していただけますか?
ありがとう、
Re: 文字列を比較し、最も一致するものを割り当てる最も近い一致を手動で計算するのは手間がかかりすぎるため、前述した関数を使用しました。
編集を許可するスクリプト インデックスの例を確認すると、「Choose Closest」の実装は非常に簡単です (最初の引数はテーブル内の値、2 番目はサンプル リストで、必要に応じて最大編集回数を増やします)。

Re: 文字列を比較し、最も一致するものを割り当てるリストをループし、各値に対して最短編集スクリプトを使用して計算を実行し (または独自のアルゴリズムを記述し)、最も一致するものを選択します。