レーベンシュタイン距離: テキストの類似性を測定するための究極のガイド
レーベンシュタイン距離は、編集距離とも呼ばれ、2 つの文字列間の類似性を評価するための重要な指標です。ある文字列を別の文字列に変換するために必要な操作の最小数をカウントします。これらの操作には次のものが含まれます:
- 挿入: 文字を追加します。
- 削除: キャラクターを削除します。
- 置換: ある文字を別の文字に置き換えます。
この概念は、スペル修正、あいまい検索、DNA 比較など、多くの現代アプリケーションの中心となっています。
数学的概念
長さ (n) と (m) の 2 つの文字列 (A) と (B) 間のレーベンシュタイン距離は、動的アプローチを使用して計算できます。次元 ((n 1) 倍 (m 1)) の行列 (D) を定義します。ここで、各 (D[i][j]) は、(A) の最初の (i) 文字を次の文字に変換するための最小コストを表します。 (j) (B) の最初の文字。
漸化式は次のとおりです。
Pythonでの実装
これは、レーベンシュタイン距離を計算するための簡単な Python 実装です。
def levenshtein_distance(a, b): n, m = len(a), len(b) dp = [[0] * (m + 1) for _ in range(n + 1)] for i in range(n + 1): for j in range(m + 1): if i == 0: dp[i][j] = j elif j == 0: dp[i][j] = i elif a[i - 1] == b[j - 1]: dp[i][j] = dp[i - 1][j - 1] else: dp[i][j] = 1 + min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]) return dp[n][m] # Exemple d'utilisation print(levenshtein_distance("kitten", "sitting")) # Sortie : 3
実用的なアプリケーション
1. スペル修正
スペルチェッカーは、タイプミスの場合にレーベンシュタインを使用して近い単語を提案します。たとえば、「helo」と入力すると、「hello」または「hero」が提案される可能性があります。
2. あいまい検索
検索エンジンでは、レーベンシュタイン距離を使用すると、ユーザーが入力ミスをした場合でも結果を取得できます。
3. DNA の比較
バイオインフォマティクスでは、この距離は 2 つの DNA 配列間の類似性を測定するのに役立ち、各操作は突然変異の可能性を表します。
4. 認証と不正検出
個人情報盗難検出システムは、テキストの小さな違いを考慮して、ユーザー入力と既存のデータを比較できます。
最適化: メモリを削減したレーベンシュタイン距離
古典的なアルゴリズムは完全な行列を使用するため、メモリを大量に消費する可能性があります。幸いなことに、各計算 ( D[i][j] ) は ( D[i-1][j] )、( D[i][j-1] ) のみに依存するため、メモリの 2 行のみを使用して最適化できます。 、および (D[i-1][j-1])。
def levenshtein_distance(a, b): n, m = len(a), len(b) dp = [[0] * (m + 1) for _ in range(n + 1)] for i in range(n + 1): for j in range(m + 1): if i == 0: dp[i][j] = j elif j == 0: dp[i][j] = i elif a[i - 1] == b[j - 1]: dp[i][j] = dp[i - 1][j - 1] else: dp[i][j] = 1 + min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]) return dp[n][m] # Exemple d'utilisation print(levenshtein_distance("kitten", "sitting")) # Sortie : 3
結論
レーベンシュタイン距離は、強力かつ多用途で、多くの分野で広く使用されているツールです。理解するのは簡単ですが、その複雑な最適化とアプリケーションは、最新のシステムにおけるその価値を実証します。
さらに詳しく調べると、転置を考慮したダメラウ・レーベンシュタイン距離のような変形例に目を向けることもできます。これで、このツールをプロジェクトに統合したり、深い知識で同僚に感銘を与えたりする準備が整いました!
レーベンシュタイン距離について質問やアイデアはありますか?コメントでシェアしてください! ?
以上がレーベンシュタイン距離: テキストの類似性を測定するための究極のガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Stock Market GPT
AIを活用した投資調査により賢明な意思決定を実現

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

Pipinstall-rrequirements.txtを実行して、依存関係パッケージをインストールします。競合を回避し、ファイルパスが正しく、PIPが更新されていることを確認し、必要に応じて-no-depsや-userなどのオプションを使用して、必要に応じてインストール動作を調整することを確認して、最初に仮想環境を作成およびアクティブ化することをお勧めします。

このチュートリアルは、PEFT LORAアダプターをベースモデルと効率的にマージして、完全に独立したモデルを生成する方法を詳しく説明しています。この記事は、トランスフォーマーを直接使用することは間違っていることを指摘しています。Automodelはアダプターをロードし、重みを手動でマージし、PEFTライブラリでMerge_and_unloadメソッドを使用する正しいプロセスを提供します。さらに、このチュートリアルでは、単語セグメントターを扱うことの重要性も強調し、PEFTバージョンの互換性の問題とソリューションについて説明しています。

Pythonは、Pythonのシンプルで強力なテストツールです。インストール後、命名ルールに従ってテストファイルが自動的に発見されます。アサーションテストのためにtest_から始まる関数を書き込み、 @pytest.fixtureを使用して再利用可能なテストデータを作成し、pytest.raisesを使用して例外を確認し、指定されたテストと複数のコマンドラインオプションをサポートし、テスト効率を改善します。

theargparsemoduleisttherecommendedwayto handlecommand-lineargumentsinpython、robustparsing、typevalidation、helpmessages、およびerrorhandling; ousesys.argvforsimplecasesrequiringminimalsetup。

この記事の目的は、PythonとNumpyの浮動小数点数の計算精度が不十分であるという一般的な問題を調査し、その根本原因は標準64ビットの浮動小数点数の表現制限にあることを説明しています。より高い精度を必要とするシナリオを計算するために、この記事では、MPMATH、Sympy、GMPYなどの高精度数学ライブラリの使用方法、機能、および適用可能なシナリオを導入して比較し、読者が複雑な精度のニーズを解決するための適切なツールを選択できるようにします。

PYPDF2、PDFPlumber、およびFPDFは、PDFを処理するPythonのコアライブラリです。 pypdf2を使用して、pdfreaderを介してページを読み取り、extract_text()を呼び出してコンテンツを取得するなど、テキスト抽出、マージ、分割、暗号化を実行します。 PDFPlumberは、レイアウトテキストの抽出とテーブル認識を保持するのに適しており、Extract_Tables()をサポートしてテーブルデータを正確にキャプチャします。 FPDF(推奨されるFPDF2)はPDFを生成するために使用され、ドキュメントが構築され、add_page()、set_font()、およびcell()を介して出力されます。 PDFSをマージすると、PDFWriterのAppend()メソッドは複数のファイルを統合できます

現在の時間を取得することは、DateTimeモジュールを介してPythonで実装できます。 1。DateTime.Now()を使用してローカル現在の時間を取得します。 Depcated Utcnow()、および日常業務は、datetime.now()とフォーマットされた文字列を組み合わせてニーズを満たすことができます。

@ContextManagerFromContextLibandDefineAgeneratoratoraturationは、sexactlyOnceを使用します
