2017-12-11 6 views
-2

誰かが文字列の間で最もよくマッチする大文字小文字を選ぶ良い方法があれば、私は不思議でした。たとえば、「Hi there」、「Hello」、「Hiya」、「hi」、「Hi」、および「Hey there」というキーを持つテーブルがあるとします。私は "Hi"に最も近いマッチを探したい。それは最初に "Hi"にマッチします。それが見つからなければ、 "hi"、 "Hiya"などとなります。完璧なマッチに優先順位をつけ、次に相違点や長さの差が最も少ないマッチの大文字と小文字を比較します。Lua - 文字列に最適な一致を見つける

私の現在のメソッドは、最初は完璧なマッチをチェックしてから、string.matchを使用してループし、最も近いstring.lenを保存して、扱いにくいようです。

+0

私は、あなたはこれにLevenshtein距離が必要だと思います。 [ここをクリック](https://stackoverflow.com/questions/42681501/how-do-you-make-a-string-dictionary-function-in-lua) – McBarby

答えて

0

完全一致のみを探しているのでなければ、類似度の指標としていくつかの指標を使用し、最も近い一致を探す必要があります。

McBarbyがコメントで示唆したように、文字列1から文字列2に至るのに必要な最小文字数のLevenshtein距離を使うことができます。メトリクスが利用可能で、ニーズに最も適したリサーチだけです。もちろん、独自の指標を定義することもできます。

https://en.wikipedia.org/wiki/String_metricリストを他の文字列メトリックの数:

セーレンセンダイス係数

ブロック距離またはL1距離やシティブロック距離

JARO-ウィンクラー距離

簡易マッチング係数(SMC)

J accard類似性またはジャカード係数やタニモト係数

Tverskyインデックス

オーバーラップ係数

変距離

ヘリンガー距離またはバタチャリヤ距離

情報半径(ジェンセン・シャノン発散)

スキューの相違

混同確率

タウメトリック、カルバック・ライブラー情報量の近似

FellegiとSuntersメトリック(SFS)

最大文法ベースの距離

TFIDF

と一致距離メトリック

関連する問題