「Jaro-Winklerアルゴリズムを使用して小規模言語モデル(SLM)を構築し、スペルエラーを改善・強化する」

Using the Jaro-Winkler algorithm to build a small language model (SLM) and improve/enhance spelling errors.

スペルミスは多くの人にとってよくある問題です。タイプミス、聞き間違い、あるいは単に単語のスペルを正しく知らないなど、さまざまな要因によって引き起こされることがあります。スペルミスは通常は些細なものですが、時には恥ずかしい思いをしたり、誤解を招くこともあります。

Jaro-Winklerアルゴリズムは、2つの文字列間の類似性を測定する文字列メトリックスであり、Mean Average Precision(MAP)で0.87という満足のいく結果を出すための多くの方法の1つです。単純な編集距離よりも洗練された指標であり、文字の転置や接頭辞と接尾辞の一致も考慮しています。

小規模なVoAGIか大規模な場合でも、言語モデルは、さまざまなデータでトレーニングされた単語のシーケンスの次の単語を予測する統計的な方法として知られており、言語内の単語の確率分布を学習します。

この記事では、Jaro-Winklerアルゴリズムを使用して、小規模な固定定義データセットで簡易言語モデル(SLM)を構築し、システムのスペルチェックを向上させる方法を紹介します。

J-Wの概要

J-Wアルゴリズムは、2つの文字列間の類似性を測定するDamerau-Levenshteinの変形であり、2つの文字が近い位置で置換されることが、お互いに遠い位置で置換されることよりも少なく重要であると考えます。

J-Wでよく使われる操作

1. 置換

  • 入力: sent
  • 期待される出力: send
  • 置換された文字: d
  • 置換された位置: 3

2. 削除

  • 入力: ssend
  • 期待される出力: send
  • 削除された文字: s
  • 削除された位置: 0

3. 挿入

  • 入力: snd
  • 期待される出力: send
  • 挿入された文字: e
  • 挿入された位置: 1

J-Wの構成要素

  1. 共通接頭辞スケーリング: 合意のある文字は、より短い文字列の長さの半分以内である必要があります。
  2. 類似性スコアリング: 共通の文字数、転置の数、および文字列の長さに基づいてスコアを計算します。
  3. 距離マッチャー: 2つの文字列が十分に類似しているかどうかを判断します。
  4. 転置の評価: 1つの文字列の文字が他の文字列の対応する共通文字と順序が逆であるかどうかを評価します。

文字列比較値は主に以下のように表されます:

  • s1とs2 = 関連する文字列
  • len s1とlen s2 = 関連する文字列の長さ
  • Nc = 2つの文字列間の共通の文字数で、共通の距離はs1とs2の最小長さの半分です
  • Nt = 転置の数

簡易言語モデルの例

簡易言語モデルのアルゴリズム実装

  • ステップ1:類似性チェック
  • ステップ2:J-Wアルゴリズムで類似性スコアを計算する
  • ステップ3:以下の比較
    • 類似性スコアと期待される類似性スコア
    • 類似性スコアと閾値
  • ステップ4:欠落した文字の評価

Javaの実装

出力:

結論

これはまだ進行中の作業ですが、Jaro-Winklerアルゴリズムや関連するアルゴリズムを使用してSLMを構築することは、スペルの改善に向けた興味深いアプローチであり、単純な距離編集実装よりも優れています。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more