LMInstantiator // Use NSOrderedSet to deduplicate.
This commit is contained in:
parent
9682b8ea5d
commit
1ea4083338
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if !insertedPairs.contains(pair) {
|
|
||||||
results.append(Megrez.Unigram(keyValue: pair, score: unigram.score))
|
results.append(Megrez.Unigram(keyValue: pair, score: unigram.score))
|
||||||
insertedPairs.insert(pair)
|
|
||||||
}
|
}
|
||||||
}
|
// Swift 不見得非得用 Swift-Collections 才可以用 OrderedSet,還有 NSOrderedSet 可用來去重複。
|
||||||
return results
|
let resultsDeduplicated = Array(NSOrderedSet(array: results).array as! [Megrez.Unigram])
|
||||||
|
|
||||||
|
return resultsDeduplicated
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue