--!native --!optimize 2 -- Compiled with roblox-ts v3.0.0 local function NGramJaccardScore(n_gram_set_tokenized_term, n_gram_set_tokenized_query) local a_grams = n_gram_set_tokenized_term local b_grams = n_gram_set_tokenized_query -- ▼ ReadonlySet.size ▼ local _size = 0 for _ in a_grams do _size += 1 end -- ▲ ReadonlySet.size ▲ local _condition = _size == 0 if _condition then -- ▼ ReadonlySet.size ▼ local _size_1 = 0 for _ in b_grams do _size_1 += 1 end -- ▲ ReadonlySet.size ▲ _condition = _size_1 == 0 end if _condition then return 1 end local intersection = 0 -- ▼ ReadonlySet.forEach ▼ local _callback = function(gram) local _gram = gram if b_grams[_gram] ~= nil then intersection += 1 end end for _v in a_grams do _callback(_v, _v, a_grams) end -- ▲ ReadonlySet.forEach ▲ -- ▼ ReadonlySet.size ▼ local _size_1 = 0 for _ in a_grams do _size_1 += 1 end -- ▲ ReadonlySet.size ▲ -- ▼ ReadonlySet.size ▼ local _size_2 = 0 for _ in b_grams do _size_2 += 1 end -- ▲ ReadonlySet.size ▲ local union = _size_1 + _size_2 - intersection return if union == 0 then 0 else intersection / union end return { NGramJaccardScore = NGramJaccardScore, }