Making a contextual recommendation engine using Python and Deep Learning at ParallelDots
Submitted by Muktabh Mayank (@muktabhm) on Wednesday, 27 May 2015
ParallelDots ( paralleldots.com ) is a recommendation engine for publishers to increase engagement/monetization on their websites. For the end user, it solves the problem of information overload by providing set of relevant stories and history about whatever he/she is reading. ParallelDots provides a set of recommendation engines which include the most accurate related posts widget, automated timeline views over news articles and related content on social media and sentiment around it. These are implemented in form of microservices in Python, Go and Julia. One of the various recommendation engines paralleldots offers to online publishers is its state of the art accurate related posts plugin, which uses Deep Learning.
This talks walks through our technology decisions and algorithms choices while we decided to write a enhanced accuracy/cost optimized search engine which searches for related posts.
Attendees will walk out knowing what is Deep Learning, types of Deep Learning algorithms and various libraries to use them in Python. They will also learn about how we found Deep Learning techniques better than traditional topic models and how we use it to make a search engine for related documents.
We will also talk about the hacks which we used to scale up the web services to handle thousands of concurrent recommendations. Join us to learn what Deep Learning is, how it enhances the accuracy over traditional algorithms and how we incorporated it into production.
Making a Recommendation Engine at ParallelDots
a. Why normal full-text search will not work: The problem of incorrect tagging and slow search queries.
b. ParallelDots’ MVP with Topic Models: Issues with accuracy and scaling.
c. Decision to use Deep Learning and aims of the new architecture (Not enough funds for distributed system, search related posts from millions of documents in reasonable time)
Basics of Deep Learning
a. Deep Neural Networks
b. Types of Deep Neural Networks. Convolutional, DBNs, Recurrent and Recursive. How do they differ in structure, types of neurons and training.
c. Backpropogation and its variants
d. Features of various Deep Learning libraries in Python.
Deep Learning in NLP
a. Solving problem of high-dimensionality using word embeddings.
b. Common approaches to word embedding.
c. Modelling language as a series of characters using Recurrent Neural Networks .
c. Models we use : Named Entity Recognition with Neural Nets
d. Models we use: Combining word embeddings using heuristics and recursive neural networks.
a. Using Search Data Structures to convert search related posts operations from O(n) to O(log(n))
b. Space Partitioning Trees : Search for nearest Neighbours. Examples of such trees: KD-Tree / Ball Tree / VP Tree
c. Why we chose VP Tree ? What libraries to use to code up in Python ?
d. Parallelization. Data Parallel Python’s multiprocessing parallelization not the best, working towards a shared memory parallel version.
Scaling up system
a. Hacks to scale up recommendations.
b. Using golang’s channels to unique requests.
Muktabh is one of co-founders of ParallelDots. He handles the Data Science and Software Architecture at the startup. Previously, He has worked at Opera Solutions and as consultant Data Scientist, wherein he helped solving many data based problems in healthcare, internet, procurement,retail and personal finance . He has a degree in Information Systems from BITS Pilani, Pilani. Social handles: in.linkedin.com/in/muktabh / @muktabh