From f4b01ad679d593e49eaccf3280015fe5fdbc7b17 Mon Sep 17 00:00:00 2001 From: Mingchung Xia <mingchung.xia@gmail.com> Date: Thu, 25 Jan 2024 19:56:59 -0500 Subject: [PATCH] Fixed CartesianDistanceMetric to run in reasonable compiler time --- Sources/SwiftNLP/1. Data Collection/HNSWCorpus.swift | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Sources/SwiftNLP/1. Data Collection/HNSWCorpus.swift b/Sources/SwiftNLP/1. Data Collection/HNSWCorpus.swift index a30c397e..ceda75a3 100644 --- a/Sources/SwiftNLP/1. Data Collection/HNSWCorpus.swift +++ b/Sources/SwiftNLP/1. Data Collection/HNSWCorpus.swift @@ -46,7 +46,8 @@ class HNSWCorpus<Scalar: BinaryFloatingPoint & Codable>: SNLPCorpus { @inlinable func addUntokenizedDocument(_ document: String) { - encodedDocuments.insert((_documentEncoder.encodeSentence(document) as! [Scalar])) + // Forced cast to [Scalar] is unnecessary + encodedDocuments.insert((_documentEncoder.encodeSentence(document))) } } @@ -86,9 +87,10 @@ public struct DeterministicSampleVectorIndex<Vector: Collection & Codable> where public struct CartesianDistanceMetric<Vector: Collection & Codable>: SimilarityMetric where Vector.Element: BinaryFloatingPoint { public func similarity(between someItem: Vector, _ otherItem: Vector) -> Vector.Element { - let squaredSum = zip(someItem, otherItem) - .map { (x, y) in (x - y) * (x - y) } - .reduce(0, +) + + let squaredDifferences = zip(someItem, otherItem).map { (x, y) in (x - y) * (x - y) } + let squaredSum = squaredDifferences.reduce(0, +) + return sqrt(squaredSum) } } -- GitLab