LMInstantiator // Use NSOrderedSet to deduplicate.

This commit is contained in:
ShikiSuen 2022-05-10 19:00:50 +08:00
parent 9682b8ea5d
commit 1ea4083338
1 changed files with 9 additions and 12 deletions

View File

@ -236,9 +236,8 @@ extension vChewing {
rawAllUnigrams += lmSymbols.unigramsFor(key: key) rawAllUnigrams += lmSymbols.unigramsFor(key: key)
} }
// // Swift 使 NSOrderedSet
var insertedPairs: Set<Megrez.KeyValuePair> = [] // var filteredPairs: Set<Megrez.KeyValuePair> = []
var filteredPairs: Set<Megrez.KeyValuePair> = [] //
// KeyValuePair // KeyValuePair
for unigram in lmFiltered.unigramsFor(key: key) { for unigram in lmFiltered.unigramsFor(key: key) {
@ -247,7 +246,7 @@ extension vChewing {
return filterAndTransform( return filterAndTransform(
unigrams: rawAllUnigrams, unigrams: rawAllUnigrams,
filter: filteredPairs, inserted: &insertedPairs filter: filteredPairs
) )
} }
@ -275,8 +274,7 @@ extension vChewing {
func filterAndTransform( func filterAndTransform(
unigrams: [Megrez.Unigram], unigrams: [Megrez.Unigram],
filter filteredPairs: Set<Megrez.KeyValuePair>, filter filteredPairs: Set<Megrez.KeyValuePair>
inserted insertedPairs: inout Set<Megrez.KeyValuePair>
) -> [Megrez.Unigram] { ) -> [Megrez.Unigram] {
var results: [Megrez.Unigram] = [] var results: [Megrez.Unigram] = []
@ -293,13 +291,12 @@ extension vChewing {
pair.value = replacement pair.value = replacement
} }
} }
results.append(Megrez.Unigram(keyValue: pair, score: unigram.score))
if !insertedPairs.contains(pair) {
results.append(Megrez.Unigram(keyValue: pair, score: unigram.score))
insertedPairs.insert(pair)
}
} }
return results // Swift Swift-Collections OrderedSet NSOrderedSet
let resultsDeduplicated = Array(NSOrderedSet(array: results).array as! [Megrez.Unigram])
return resultsDeduplicated
} }
} }
} }