Class: LangExtract::Core::FuzzyAlignmentIndex

Inherits:
Object
  • Object
show all
Defined in:
lib/langextract/core/fuzzy_alignment_index.rb

Overview

Precomputed source-token lookup for fuzzy alignment. Similarity is evaluated once per distinct normalized source text and target token.

Defined Under Namespace

Classes: MatchingIndex

Instance Method Summary collapse

Constructor Details

#initialize(source_tokens) ⇒ FuzzyAlignmentIndex

Returns a new instance of FuzzyAlignmentIndex.



12
13
14
# File 'lib/langextract/core/fuzzy_alignment_index.rb', line 12

def initialize(source_tokens)
  @source_tokens = source_tokens
end

Instance Method Details

#best_match(target_token, from_index) ⇒ Object



26
27
28
29
30
# File 'lib/langextract/core/fuzzy_alignment_index.rb', line 26

def best_match(target_token, from_index)
  matching = matching_positions(target_token)
  position = matching.indices.bsearch_index { |idx| idx >= from_index }
  position && matching.best_indices[position]
end

#matching_positions(target_token) ⇒ Object



20
21
22
23
24
# File 'lib/langextract/core/fuzzy_alignment_index.rb', line 20

def matching_positions(target_token)
  @matching_positions_cache ||= {}
  normalized_target = TokenSimilarity.normalize(target_token)
  @matching_positions_cache[normalized_target] ||= build_matching_index(normalized_target)
end

#normalized_tokensObject



16
17
18
# File 'lib/langextract/core/fuzzy_alignment_index.rb', line 16

def normalized_tokens
  @normalized_tokens ||= source_tokens.map { |token| TokenSimilarity.normalize(token.text) }
end