|
1 |
| -# machine-learning-with-ruby |
| 1 | +# Machine Learning with Ruby [](https://github.com/sindresorhus/awesome) |
| 2 | + |
| 3 | +[<img src="ruby.jpg" align="right" width="100px" height="100px" />][ruby] |
| 4 | + |
| 5 | +> Useful resources for machine learning in [Ruby][ruby] |
| 6 | +
|
| 7 | +This curated list comprises [_awesome_](https://github.com/sindresorhus/awesome/blob/master/awesome.md) |
| 8 | +resources, libraries, information sources about Machine Learning with the [Ruby programming language](ruby). |
| 9 | + |
| 10 | +This list comes from our day to day work on ML Applications. |
| 11 | + |
| 12 | +Our main goal is to promote Ruby as a tool for NLP related tasks. Your help, |
| 13 | +suggestions and contributions are welcome! We kindly ask you to study |
| 14 | +the [Contribution](#contributing) section. Follow us on [Twitter](https://twitter.com/RubyNLP) |
| 15 | +and please spread the word using the `#RubyML` hash tag! |
| 16 | + |
| 17 | +<!-- nodoc --> |
| 18 | +## Contents |
| 19 | + |
| 20 | +<!-- toc --> |
| 21 | + |
| 22 | +- [Machine Learning Libraries](#machine-learning-libraries) |
| 23 | +- [Articles, Posts, Talks, and Presentations](#articles-posts-talks-and-presentations) |
| 24 | +- [Projects and Code Examples](#projects-and-code-examples) |
| 25 | +- [Books](#books) |
| 26 | +- [Community](#community) |
| 27 | +- [Needs your Help!](#needs-your-help) |
| 28 | +- [Related Resources](#related-resources) |
| 29 | +- [Contributing](#contributing) |
| 30 | +- [License](#license) |
| 31 | + |
| 32 | +<!-- tocstop --> |
| 33 | + |
| 34 | +<!-- doc --> |
| 35 | + |
| 36 | +## Machine Learning Libraries |
| 37 | + |
| 38 | +[Machine Learning](https://en.wikipedia.org/wiki/Machine_learning) Algorithms |
| 39 | +in pure Ruby or written in other programming languages with appropriate bindings |
| 40 | +for Ruby. |
| 41 | + |
| 42 | +- [rb-libsvm](https://github.com/febeling/rb-libsvm) - |
| 43 | + Support Vector Machines with Ruby. |
| 44 | +- [weka-jruby](https://github.com/paulgoetze/weka-jruby) - |
| 45 | + JRuby bindings for Weka, different ML algorithms implemented through Weka. |
| 46 | +- [decisiontree](https://github.com/igrigorik/decisiontree) - |
| 47 | + Decision Tree ID3 Algorithm in pure Ruby |
| 48 | + <sup>[[post](https://www.igvita.com/2007/04/16/decision-tree-learning-in-ruby/)]</sup>. |
| 49 | +- [rtimbl](https://github.com/maspwr/rtimbl) - |
| 50 | + Memory based learners from the Timbl framework. |
| 51 | +- [classifier-reborn](https://github.com/jekyll/classifier-reborn) - |
| 52 | + General classifier module to allow Bayesian and other types of classifications. |
| 53 | +- [lda-ruby](https://github.com/ealdent/lda-ruby) - |
| 54 | + Ruby implementation of the [LDA](https://en.wikipedia.org/wiki/Latent_Dirichlet_allocation) |
| 55 | + (Latent Dirichlet Allocation) for automatic Topic Modelling and Document Clustering. |
| 56 | +- [liblinear-ruby-swig](https://github.com/tomz/liblinear-ruby-swig) - |
| 57 | + Ruby interface to LIBLINEAR (much more efficient than LIBSVM for text classification). |
| 58 | +- [linnaeus](https://github.com/djcp/linnaeus) - |
| 59 | + Redis-backed Bayesian classifier. |
| 60 | +- [maxent_string_classifier](https://github.com/mccraigmccraig/maxent_string_classifier) - |
| 61 | + JRuby maximum entropy classifier for string data, based on the OpenNLP Maxent framework. |
| 62 | +- [naive_bayes](https://github.com/reddavis/Naive-Bayes) - |
| 63 | + Simple Naive Bayes classifier. |
| 64 | +- [nbayes](https://github.com/oasic/nbayes) - |
| 65 | + Full-featured, Ruby implementation of Naive Bayes. |
| 66 | +- [omnicat](https://github.com/mustafaturan/omnicat) - |
| 67 | + Generalized rack framework for text classifications. |
| 68 | +- [omnicat-bayes](https://github.com/mustafaturan/omnicat-bayes) - |
| 69 | + Naive Bayes text classification implementation as an OmniCat classifier strategy. |
| 70 | +- [ruby-fann](https://github.com/tangledpath/ruby-fann) - |
| 71 | + Ruby bindings to the [Fast Artificial Neural Network Library (FANN)](http://leenissen.dk/fann/wp/). |
| 72 | + |
| 73 | +## Articles, Posts, Talks, and Presentations |
| 74 | + |
| 75 | +- 2017 |
| 76 | + - _Scientific Computing on JRuby_ by [Prasun Anand](https://twitter.com/prasun_anand) |
| 77 | + <sup>[[slides](https://www.slideshare.net/PrasunAnand2/fosdem2017-scientific-computing-on-jruby) | |
| 78 | + [video](https://ftp.fau.de/fosdem/2017/K.4.201/ruby_scientific_computing_on_jruby.mp4) | |
| 79 | + [slides](https://www.slideshare.net/PrasunAnand2/scientific-computing-on-jruby) | |
| 80 | + [slides](https://www.slideshare.net/PrasunAnand2/scientific-computation-on-jruby)]</sup> |
| 81 | + - _Unicode Normalization in Ruby_ by [Starr Horne](https://twitter.com/starrhorne) |
| 82 | + <sup>[[post](http://blog.honeybadger.io/ruby_unicode_normalization/)]</sup> |
| 83 | +- 2016 |
| 84 | + - _Quickly Create a Telegram Bot in Ruby_ by [Ardian Haxha](https://twitter.com/ArdianHaxha) |
| 85 | + <sup>[[tutorial](https://www.sitepoint.com/quickly-create-a-telegram-bot-in-ruby/)]</sup> |
| 86 | + - _Deep Learning: An Introduction for Ruby Developers_ by [Geoffrey Litt](https://twitter.com/geoffreylitt) |
| 87 | + <sup>[[slides](https://speakerdeck.com/geoffreylitt/deep-learning-an-introduction-for-ruby-developers)]</sup> |
| 88 | + - _How I made a pure-Ruby word2vec program more than 3x faster_ by [Kei Sawada](https://twitter.com/remore) |
| 89 | + <sup>[[slides](https://speakerdeck.com/remore/how-i-made-a-pure-ruby-word2vec-program-more-than-3x-faster)]</sup> |
| 90 | + - _Dōmo arigatō, Mr. Roboto: Machine Learning with Ruby_ by [Eric Weinstein](https://twitter.com/ericqweinstein) |
| 91 | + <sup>[[slides](https://speakerdeck.com/ericqweinstein/domo-arigato-mr-roboto-machine-learning-with-ruby) | [video](https://www.youtube.com/watch?v=T1nFQ49TyeA)]</sup> |
| 92 | +- 2015 |
| 93 | + - _N-gram Analysis for Fun and Profit_ by [Jesus Castello](https://github.com/matugm) |
| 94 | + <sup>[[tutorial](http://www.blackbytes.info/2015/09/ngram-analysis-ruby/)]</sup> |
| 95 | + - _Machine Learning made simple with Ruby_ by [Lorenzo Masini](https://github.com/rugginoso) |
| 96 | + <sup>[[tutorial](https://www.leanpanda.com/blog/2015/08/24/machine-learning-automatic-classification/)]</sup> |
| 97 | + - _Using Ruby Machine Learning to Find Paris Hilton Quotes_ by [Rick Carlino](https://github.com/RickCarlino) |
| 98 | + <sup>[[tutorial](https://web-beta.archive.org/web/20160515115739/http://datamelon.io/blog/2015/using-ruby-machine-learning-id-paris-hilton-quotes.html)]</sup> |
| 99 | + - _Exploring Natural Language Processing in Ruby_ by [Kevin Dias](https://github.com/diasks2) |
| 100 | + <sup>[[slides](https://www.slideshare.net/diasks2/exploring-natural-language-processing-in-ruby)]</sup> |
| 101 | + - _Machine Learning made simple with Ruby_ by [Lorenzo Masini](https://twitter.com/rugginoso) |
| 102 | + <sup>[[post](https://www.leanpanda.com/blog/2015/08/24/machine-learning-automatic-classification/)]</sup> |
| 103 | + - _Practical Data Science in Ruby_ by Bobby Grayson |
| 104 | + <sup>[[slides](http://slides.com/bobbygrayson/p#/)]</sup> |
| 105 | +- 2014 |
| 106 | + - _Natural Language Parsing with Ruby_ by [Glauco Custódio](https://github.com/glaucocustodio) |
| 107 | + <sup>[[tutorial](http://glaucocustodio.github.io/2014/11/10/natural-language-parsing-with-ruby/)]</sup> |
| 108 | + - _Demystifying Data Science: Analyzing Conference Talks with Rails and Ngrams_ by |
| 109 | + [Todd Schneider](https://github.com/toddwschneider) |
| 110 | + <sup>[[video](https://www.youtube.com/watch?v=2ZDCxwB29Bg) | [code](https://github.com/Genius/abstractogram)]</sup> |
| 111 | + - _Natural Language Processing with Ruby_ by [Konstantin Tennhard](https://github.com/t6d) |
| 112 | + <sup>[[video](https://www.youtube.com/watch?v=5u86qVh8r0M) | [video](https://www.youtube.com/watch?v=oFmy_QBQ5DU) | |
| 113 | + [video](https://www.youtube.com/watch?v=sPkeeWnsMn0) | |
| 114 | + [slides](http://euruko2013.org/speakers/presentations/natural_language_processing_with_ruby_and_opennlp-tennhard.pdf)]</sup> |
| 115 | +- 2013 |
| 116 | + - _How to parse 'go' - Natural Language Processing in Ruby_ by |
| 117 | + [Tom Cartwright](https://twitter.com/tomcartwrightuk) |
| 118 | + <sup>[[slides](https://www.slideshare.net/TomCartwright/natual-language-processing-in-ruby) | |
| 119 | + [video](https://skillsmatter.com/skillscasts/4883-how-to-parse-go)]</sup> |
| 120 | + - _Natural Language Processing in Ruby_ by [Brandon Black](https://github.com/brandonblack) |
| 121 | + <sup>[[slides](https://speakerdeck.com/brandonblack/natural-language-processing-in-ruby) | |
| 122 | + [video](http://confreaks.tv/videos/railsconf2013-natural-language-processing-with-ruby)]</sup> |
| 123 | + - _Natural Language Processing with Ruby: n-grams_ by [Nathan Kleyn](https://github.com/nathankleyn) |
| 124 | + <sup>[[tutorial](https://www.sitepoint.com/natural-language-processing-ruby-n-grams/) | |
| 125 | + [code](https://github.com/nathankleyn/ruby_nlp)]</sup> |
| 126 | + - _Seeking Lovecraft, Part 1: An introduction to NLP and the Treat Gem_ by |
| 127 | + [Robert Qualls](https://github.com/rlqualls) |
| 128 | + <sup>[[tutorial](https://www.sitepoint.com/seeking-lovecraft-part-1-an-introduction-to-nlp-and-the-treat-gem/)]</sup> |
| 129 | +- 2012 |
| 130 | + - _Machine Learning with Ruby, Part One_ by [Vasily Vasinov](https://twitter.com/vasinov) |
| 131 | + <sup>[[tutorial](http://www.vasinov.com/blog/machine-learning-with-ruby-part-one/)]</sup> |
| 132 | +- 2011 |
| 133 | + - _Ruby one-liners_ by [Benoit Hamelin](https://twitter.com/benoithamelin) |
| 134 | + <sup>[[post](http://benoithamelin.tumblr.com/ruby1line)]</sup> |
| 135 | + - _Clustering in Ruby_ by [Colin Drake](https://twitter.com/colinfdrake) |
| 136 | + <sup>[[post](https://colindrake.me/2011/05/28/clustering-in-ruby/)]</sup> |
| 137 | +- 2010 |
| 138 | + - _bayes_motel – Bayesian classification for Ruby_ by [Mike Perham](https://twitter.com/mperham) |
| 139 | + <sup>[[post](http://www.mikeperham.com/2010/04/28/bayes_motel-bayesian-classification-for-ruby/)]</sup> |
| 140 | +- 2009 |
| 141 | + - _Porting the UEA-Lite Stemmer to Ruby_ by [Jason Adams](https://twitter.com/ealdent) |
| 142 | + <sup>[[post](https://ealdent.wordpress.com/2009/07/16/porting-the-uea-lite-stemmer-to-ruby/)]</sup> |
| 143 | + - _NLP Resources for Ruby_ by [Jason Adams](https://twitter.com/ealdent) |
| 144 | + <sup>[[post](https://ealdent.wordpress.com/2009/09/13/nlp-resources-for-ruby/)]</sup> |
| 145 | +- 2008 |
| 146 | + - _Support Vector Machines (SVM) in Ruby_ by [Ilya Grigorik](https://twitter.com/igrigorik) |
| 147 | + <sup>[[post](https://www.igvita.com/2008/01/07/support-vector-machines-svm-in-ruby/)]</sup> |
| 148 | + - _Practical text classification with Ruby_ by [Gleicon Moraes](https://twitter.com/gleicon) |
| 149 | + <sup>[[post](https://zenmachine.wordpress.com/practical-text-classification-with-ruby/) | |
| 150 | + [code](https://github.com/gleicon/zenmachine)]</sup> |
| 151 | +- 2007 |
| 152 | + - _Decision Tree Learning in Ruby_ by [Ilya Grigorik](https://twitter.com/igrigorik) |
| 153 | + <sup>[[post](https://www.igvita.com/2007/04/16/decision-tree-learning-in-ruby/)]</sup> |
| 154 | + |
| 155 | +## Projects and Code Examples |
| 156 | + |
| 157 | +- [Going the Distance](https://github.com/schneems/going_the_distance) - |
| 158 | + Implementations of various distance algorithms with example calculations. |
| 159 | +- [Named entity recognition with Stanford NER and Ruby](https://github.com/mblongii/ruby-ner) - |
| 160 | + NER Examples in Ruby and Java with some [explanations](https://web.archive.org/web/20120722225402/http://mblongii.com/2012/04/15/named-entity-recognition-with-stanford-ner-and-ruby/). |
| 161 | +- [Words Counted](http://rubywordcount.com/) - |
| 162 | + examples of customizable word statistics powered by |
| 163 | + [words_counted](https://github.com/abitdodgy/words_counted). |
| 164 | + |
| 165 | +## Books |
| 166 | + |
| 167 | +## Community |
| 168 | + |
| 169 | +- [Reddit](https://www.reddit.com/r/LanguageTechnology/search?q=ruby&restrict_sr=on) |
| 170 | +- [Stack Overflow](http://stackoverflow.com/search?q=%5Bnlp%5D+and+%5Bruby%5D) |
| 171 | +- [Twitter](https://twitter.com/search?q=Ruby%20NLP%20%23ruby%20OR%20%23nlproc%20OR%20%23rubynlp%20OR%20%23nlp&src=typd&lang=en) |
| 172 | + |
| 173 | +## Needs your Help! |
| 174 | + |
| 175 | +All projects in this section are really important for the community but need |
| 176 | +more attention. Please if you have spare time and dedication spend some hours |
| 177 | +on the code here. |
| 178 | + |
| 179 | +## Related Resources |
| 180 | + |
| 181 | +- [Awesome Ruby](https://github.com/markets/awesome-ruby#natural-language-processing) - |
| 182 | + Among other awesome items a short list of NLP related projects. |
| 183 | +- [Ruby NLP](https://github.com/diasks2/ruby-nlp) - |
| 184 | + State-of-Art collection of Ruby libraries for NLP. |
| 185 | +- [Speech and Natural Language Processing](https://github.com/edobashira/speech-language-processing) - |
| 186 | + General List of NLP related resources (mostly not for Ruby programmers). |
| 187 | +- [Scientific Ruby](http://sciruby.com/) - |
| 188 | + Linear Algebra, Visualization and Scientific Computing for Ruby. |
| 189 | +- [iRuby](https://github.com/SciRuby/iruby) - IRuby kernel for Jupyter (formelly IPython). |
| 190 | +- [Kiba](https://github.com/thbar/kiba) - |
| 191 | + Lightweight [ETL](https://en.wikipedia.org/wiki/Extract,_transform,_load) (Extract, Transform, Load) pipeline. |
| 192 | +- [Awesome OCR](https://github.com/kba/awesome-ocr) - |
| 193 | + Multitude of OCR (Optical Character Recognition) resources. |
| 194 | +- [Awesome TensorFlow](https://github.com/jtoy/awesome-tensorflow) - |
| 195 | + Machine Learning with TensorFlow libraries. |
| 196 | +- [rb-gsl](https://github.com/SciRuby/rb-gsl) - |
| 197 | + Ruby interface to the [GNU Scientific Library](https://www.gnu.org/software/gsl/). |
| 198 | +- [The Definitive Guide to Ruby's C API](https://silverhammermba.github.io/emberb/) - |
| 199 | + Modern Reference and Tutorial on Embedding and Extending Ruby using C programming language. |
| 200 | + |
| 201 | +## Contributing |
| 202 | + |
| 203 | +We are very glad to see you in this section and highly appreciate any help! |
| 204 | + |
| 205 | +But we also take care about the quality of this list. If you want to contribute |
| 206 | +please: |
| 207 | + |
| 208 | +- agree that your work will be published under the terms of the `CC0` license; |
| 209 | +- carefully read the [Contribution Guidelines][contributing]. |
| 210 | + |
| 211 | +Some of the open tasks for contributors are listed in the [todo file][todo]. |
| 212 | +You may want to start there. |
| 213 | + |
| 214 | +## License |
| 215 | + |
| 216 | +[](https://creativecommons.org/publicdomain/zero/1.0/) `Awesome ML with Ruby` by [Andrei Beliankou](https://github.com/arbox) and |
| 217 | +[Contributors](https://github.com/arbox/machine-learning-with-ruby/graphs/contributors). |
| 218 | + |
| 219 | +To the extent possible under law, the person who associated CC0 with |
| 220 | +`Awesome ML with Ruby` has waived all copyright and related or neighboring rights |
| 221 | +to `Awesome ML with Ruby`. |
| 222 | + |
| 223 | +You should have received a copy of the CC0 legalcode along with this |
| 224 | +work. If not, see <https://creativecommons.org/publicdomain/zero/1.0/>. |
| 225 | + |
| 226 | +<!--- Links ---> |
| 227 | +[ruby]: https://www.ruby-lang.org/en/ |
| 228 | +[motivation]: https://github.com/arbox/nlp-with-ruby/blob/master/motivation.md |
| 229 | +[contributing]: https://github.com/arbox/nlp-with-ruby/blob/master/CONTRIBUTING.md |
| 230 | +[todo]: https://github.com/arbox/nlp-with-ruby/blob/master/todo.md |
| 231 | +[faq]: https://github.com/arbox/nlp-with-ruby/blob/master/FAQ.md |
0 commit comments