Add new ‘distanceNormalizedMostFrequentK(…)’ metric method (#8)
Make ‘mostFrequentKHashing(…)’ and ‘mostFrequentKSimilarity(…)’ private methods, and rename them for best pracices.
Rename various internal variables for ‘distanceMostFrequentK’ calculations (also clamp ‘K’ to ‘sortedFrequencies.count’ instead of ‘self.count’).
Reorganise ‘StringMetric.swift’ to put public methods in alphabetical order.
Initialize Dictionary from tuple array using ‘reduce’ instead of a for-loop.
Adds a new ‘distanceNormalizedMostFrequentK(between target: String, k: Int)’ method.
Use modern Apple Quick Help syntax for method documentation comments.
Change ‘testDistanceMostFreqK(…)’ method signature back to avoid breaking API changes.
Improve readability of ‘mostFrequentKHash’ initialization.
Change comment for accuracy.
Use ‘reduce(…)’ when initializing ‘characterFrequencies’ to avoid defining it as ‘var’ and manually iterating over the characters.
Optimize ‘mostFrequentKSimilarity(…)’ implementation.
Update README.md
StringMetric.swift
String metric functions implemented in Swift.
Currently, following functions are implemented,
distance
: alias ofdistanceJaroWinkler
distanceLevenshtein
: Levenshtein distancedistanceDamerauLevenshtein
: Damerau-Levenshtein distancedistanceHamming
: Hamming distancedistanceMostFreqK
: Most frequent k charactersdistanceNormalizedMostFrequentK
: Normalized most frequent k charactersdistanceJaroWinkler
: Jaro-Winkler distanceUsage
For Swift Package Manager users, add this module as dependency in
Package.swift
,Example
Documentation
https://autozimu.github.io/StringMetric.swift/