String::Similarity
Library for calculating the similarity of two strings.
State
- [x] Cosine
- [ ] Hamming
- [x] Levenshtein
Installation
Add this line to your application's Gemfile:
gem 'string-similarity'
And then execute:
$ bundle
Or install it yourself as:
$ gem install string-similarity
Usage
require 'string/similarity'
# Call the methods on the module
String::Similarity.cosine 'foo', 'bar'
# => 0.0
String::Similarity.cosine 'mine', 'thyne'
# => 0.4472135954999579
String::Similarity.cosine 'foo', 'foo'
# => 1.0
# Same for Levenshtein:
String::Similarity.levenshtein_distance('kitten', 'sitting') # or ...
# => 3
String::Similarity.levenshtein('foo', 'far') # or ...
# => 0.5
If you want, you can use Refinements to add the functionality to the String
class:
using String::SimilarityRefinements
'string'.cosine_similarity_to 'strong'
# => 0.8333333333333335
'kitten'.levenshtein_distance_to('sitting')
# => 3
'far'.levenshtein_similarity_to('foo')
# => 0.5
(See this free Ruby Tapas Episode if you don't know Refinements)
Development
After checking out the repo, run bin/setup
to install dependencies. Then, run rake test
to run the tests. You can also run bin/console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
.
This Project uses Semantic Versioning.
Contributing
- Fork it ( https://github.com/mhutter/string-similarity/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
Bug reports and pull requests are welcome on GitHub at https://github.com/mhutter/string-similarity.
License
The gem is available as open source under the terms of the MIT License.