方向に偏ったペナルティを持つアグレプ


16

私は使用していますtre-agrep (マンページ)の実装agrep (マンページ)を近似パターンマッチングを実行します。このユーティリティは、レーベンシュタイン距離に基づいて一致を検索し、ユーザーは置換、挿入、または削除の編集に適用されるペナルティを構成できます。

ただし、クエリの長​​さ全体に差をつけて重みを適用します。つまり、クエリの先頭(左端)での削除の重みを右側よりも低くします。manこのユーティリティのページには、そのようなレベルの制御が可能であることが示されていません。

ミスマッチペナルティをより細かく制御して近似一致が可能な他のコマンドラインツールはありますか?


5
私の知る限り、agrepは唯一のものです。UNIXの世界ではあまり知られていない(これはあまりにも悪い)ことを考えると、このことを知っていて驚いています。理論的には、ソースコードでこれらの重みを調整できますが、それが実際的かどうかはわかりません。ツールの作成者、またはツールの元になっている元の論文に問い合わせてみましたか?気をつけて、彼らはおそらく今では古いオナラです:)
オテウス

3
@Otheus古いオナラはまだコードを書くことができます;-)
クサラナンダ

PythonまたはAwkの式として定義された挿入/削除/置換のコストで、レーベンシュタインマッチングユーティリティを記述することは難しくありません。退屈な部分は、実際には、可能なすべてのコマンドラインオプションです。OPが典型的なコマンドラインを表示し、どのオプションがagrep実際に必要かを教えてくれるなら、おそらく何かを立てることができるでしょう。二つの弦のレーベンシュタイン距離を計算するのは本当に簡単です。GNU awk呼び出しをラップしたシェルスクリプトをお勧めします。
公称動物

回答:


1

いいえ。そのようなカスタマイズは、Linuxツールの範囲外であり、独自のコードを記述する範囲に含まれます。一般的な高レベル言語(Java、JavaScript、Python、Perl)を使用すると、Cよりも少し多くのメモリが使用され、スクリプト言語では少し遅くなりますが、ユースケースでは無視できる可能性があります。したがって、必要な正確な詳細をスタックオーバーフローで再確認し、誰かが1つのライナーを提供する場合があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.