FuzzyBeamSearch

ビームサーチによる辞書ベースのあいまいテキストマッチングエンジン。

FuzzyBeamSearch は入力文字列を事前にロードされた辞書と照合し、 編集距離ベースのコストでランク付けされた候補を返します。 高速な処理のため、内部ではネイティブ Rust 実装を使用しています。

概要

基本的な使い方は以下の通りです:

  1. ScanMode を指定してインスタンスを作成する。

  2. load で辞書をロードする。

  3. match を呼び出してランク付けされた Candidate の結果を取得する。

使用例

val fbs = FuzzyBeamSearch(ScanMode.Substring)
fbs.load("/path/to/dictionary")

val params = FuzzyBeamSearch.Params().apply { topK = 5 }
val candidates = fbs.match("入力テキスト", params)

for (c in candidates) {
println("${c.text} (cost: ${c.cost})")
}

検索モード

対象テキストがノイズに囲まれている可能性のある OCR 結果に最適です。

チューニングパラメータ

Params を使ってマッチング動作を制御できます:

  • コストパラメータ (Params.subCost, Params.delCost, Params.insCost): 置換・削除・挿入に対するペナルティの相対的な重みを制御します。 値を小さくすると、その編集操作に対してより寛容になります。

  • Params.beamWidth: 値を大きくするとより多くの候補を探索しますが、速度が低下します。

  • Params.topK: 返す結果の最大数。

Constructors

Link copied to clipboard
constructor(mode: FuzzyBeamSearch.ScanMode)

あいまいビームサーチのインスタンスを作成します。

Types

Link copied to clipboard
data class Candidate(val text: String, val cost: Float, val startIndex: Int, val endIndex: Int)

あいまいビームサーチの単一マッチ結果。

Link copied to clipboard
object Companion
Link copied to clipboard
class Params

あいまいビームサーチのマッチング動作を制御するパラメータ。

Link copied to clipboard
sealed class ScanMode

FuzzyBeamSearch で使用するマッチング戦略。

Functions

Link copied to clipboard

ロード済み辞書のサイズを返します。

Link copied to clipboard

辞書がロード済みかどうかを返します。

Link copied to clipboard
fun load(dictinaryPath: String): Boolean

指定されたディレクトリパスから辞書データをロードします。

Link copied to clipboard

あいまいマッチングを実行し、コスト順(最良一致優先)でソートされた候補を返します。