Awesome
Awesome Machine Learning in Pharo
This is the list of machine learning projects written in or related to Pharo as well as books, booklets, papers, or tutorials on this topic. If you want to add an entry to this list - feel free to make a pull request or create an issue with a link to the project and we will add it ourselves. Entries are grouped into categories and sorted by aphabet.
Contents
- Mathematics
- Linear Models
- Neural Networks
- Deep Learning
- Neuroevolution
- Generative Models
- Natural Language Processing
- Data Mining
- Data Structures
- Data Visualization
- Interactive Notebooks
- Data Collection
- Applications
- Books & Booklets
- Papers
Mathematics
- Domains - Ongoing port of a computational algebra system in Smalltalk.
- Mathematics - Symbolic algebra package.
- PolyMath - Smalltalk library for numeric computations similar to NumPy, SciPy or SciRuby. Includes data structures and algorithms for linear algebra (PMVector, PMMatrix), statistics, differential equations, numeric integration, optimization, data mining, linear regression, genetic algorithms
Linear Models
- MLLinearModels - provides functionality to train and use linear regression models, such as Ordinary Least Squares, Ridge, Lasso, Elastic Net
- PMLinearRegression in PolyMath - implementation of linear regression in PolyMath library
Neural Networks
- AgileArtificialIntelligence - object-oriented implementation of neural networks, equipped with toy examples (logical gates, games)
- MLNeuralNetworks - multilayer neural networks. Classification of MNIST handwritten digits
- NeuralNetwork - multilayer neural network with separate classes for Layers and Neurons
- NeuralNetworks - simple neurons, perceptrons, logical gates
Deep Learning
- Keras bindings - allows to use Keras functions within Pharo
- TensorFlow bindings - allows to use TensorFlow in Pharo
Neuroevolution
- NEAT (NeuroEvolution of Augmenting Topologies) - a genetic algorithm for evolving artificial neural networks. NEAT is probably the most popular algorithm for neuroevolution.
Learning Classifier System
- LCSTalk is a small machine learning framework based on Learning Classifier Systems.
Generative Models
- NaiveBayesClassifier - a multinomial Naive Bayes classifier that can be used for spam detection
Natural Language Processing
- Ngram - Ngram class and String extensions that provide n-gram functionality for Pharo (splitting text into unigrams, bigrams, trigrams, etc)
- NgramModel - framework for training n-gram language models
- nlp_smalltalk - natural language processing library. Implements part of speech tagging, categorization, named entity recognition, sentence segmentation, and summarization
- Pharo-NLtoolkit - n-gams and TF-IDF implementations by Nikhil Pinnaparaju
- Polyglot - a natural language processing library implemented in Pharo by Nikhil Pinnaparaju during Google Summer of Code.
Data Mining
- APriori - implementation of A-Priori algirithm for finding frequent itemsets and learning the association rules.
Data Structures
- DataFrame - tabular data structures for data analysis and machine learning
Data Visualization
- MatplotLibBridge - a bridge to provide the ability to Pharo user to use Python's Matplotlib
- Roassal - visualization engine for the Pharo and VisualWorks. Provides powerful tools for charting, plotting, and other data visualization
Interactive Notebooks
- JupyterTalk - basic Pharo Smalltalk kernel for Jupyter
- Grafoscopio - Pharo based interactive outliner for reproducible research & publishing and agile visualization and data storytelling.
- The Pharo edition of ActivePapers focuses on the documentation and user interface aspects of communicating computational science.
- Leibniz-pharo is the Pharo version of the digital scientific notation Leibniz.
Data Collection
- CSV - NeoCSV is an elegant and efficient standalone Smalltalk framework to read and write CSV converting to or from Smalltalk objects.
- NeoJSON - Framework to handle JSON in Pharo.
- Soup - A library for web scrapping based on HTML and XML parsers
- Soup-for-Pharo - a binding for Python's Beautiful Soup - tool for web scrapping based on HTML and XML parsers
- Territorial - Smalltalk package for Geographical Information Retrieval (GIR)
Applications
- ELIZA-Pharo - Pharo Smalltalk implementation of ELIZA, an early natural language processing computer program created from 1964 to 1966 at the MIT Artificial Intelligence Laboratory by Joseph Weizenbaum.
- Generating method names - using sequence to sequence recurrent neural networks for neural machine translation of Pharo source code into English. Translating method code into a very short description (1-5 words) which is a method name
Books & Booklets
- Agile Artificial Intelligence - a book that covers classical algorithms commonly assimilated as artificial intelligence techniques
- Agile Visualization - a book that covers agile visualization with Roassal
- DataFrame Booklet - a small booklet about Pharo DataFrame provided by SquareBracketAssociates
- Grafoscopio User Manual.
- Numerical Methods with Pharo - a book that documents the PolyMath project and covers many topics related to data science: function interpolation, iteration, zeroes, linear algebra series, statistics, estimation, minimisation, and data mining
- Object-oriented Implementation of Artificial Neural Networks in Pharo - describes and documents the MLNeuralNetworks library