You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@predictionio.apache.org by do...@apache.org on 2016/07/26 19:09:00 UTC

[2/4] incubator-predictionio git commit: Updates templates.yaml with the rest of the engines and rewrite gallery generator in ruby

Updates templates.yaml with the rest of the engines and rewrite gallery generator in ruby


Project: http://git-wip-us.apache.org/repos/asf/incubator-predictionio/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-predictionio/commit/b0687ae5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-predictionio/tree/b0687ae5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-predictionio/diff/b0687ae5

Branch: refs/heads/develop
Commit: b0687ae5ea71d770698437d405072a9aeee5413c
Parents: 070a97d
Author: Marcin Ziemi\u0144ski <zi...@gmail.com>
Authored: Mon Jul 25 16:57:53 2016 -0700
Committer: Marcin Ziemi\u0144ski <zi...@gmail.com>
Committed: Mon Jul 25 16:57:53 2016 -0700

----------------------------------------------------------------------
 docs/manual/config.rb                           |  11 +-
 docs/manual/lib/gallery_generator.rb            | 160 ++++++
 .../source/community/submit-template.html.md    |  18 +-
 docs/manual/source/gallery/gen_gallery_md.py    | 156 ------
 docs/manual/source/gallery/templates.yaml       | 556 ++++++++++++++++++-
 5 files changed, 733 insertions(+), 168 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-predictionio/blob/b0687ae5/docs/manual/config.rb
----------------------------------------------------------------------
diff --git a/docs/manual/config.rb b/docs/manual/config.rb
index 70757d2..cd683ef 100644
--- a/docs/manual/config.rb
+++ b/docs/manual/config.rb
@@ -1,4 +1,5 @@
 require 'lib/custom_renderer'
+require 'lib/gallery_generator'
 
 # General Settings
 set :css_dir,       'stylesheets'
@@ -78,13 +79,9 @@ end
 
 # Engine Template Gallery generation
 current_dir = File.dirname(__FILE__)
-gen_cmd = "python3 #{current_dir}/source/gallery/gen_gallery_md.py "\
-          "#{current_dir}/source/gallery/templates.yaml "\
-          "#{current_dir}/source/gallery/template-gallery.html.md"
-system(gen_cmd)
-if $? != 0
-  raise 'Could not build template-gallery.html.md'
-end
+yaml_file_path = "#{current_dir}/source/gallery/templates.yaml"
+out_file_path = "#{current_dir}/source/gallery/template-gallery.html.md"
+Gallery.generate_md(yaml_file_path, out_file_path)
 
 # https://github.com/middleman/middleman/issues/612
 Slim::Engine.disable_option_validator!

http://git-wip-us.apache.org/repos/asf/incubator-predictionio/blob/b0687ae5/docs/manual/lib/gallery_generator.rb
----------------------------------------------------------------------
diff --git a/docs/manual/lib/gallery_generator.rb b/docs/manual/lib/gallery_generator.rb
new file mode 100644
index 0000000..f230c14
--- /dev/null
+++ b/docs/manual/lib/gallery_generator.rb
@@ -0,0 +1,160 @@
+require 'yaml'
+require 'uri'
+
+module Gallery
+
+  private
+
+  INTRO =
+'---
+title: Engine Template Gallery
+---
+'
+
+  UNSUPERVISED = '## Unsupervised Learning '
+
+  CLASSIFICATION = '## Classification'
+
+  REGRESSION = '## Regression'
+
+  RECOMMENDER_SYSTEMS = '## Recommender Systems'
+
+  NLP = '## Natural Language Processing'
+
+  OTHER = '## Other'
+
+  TEMPLATE_INTRO = '
+***[%{name}](%{repo})***  '
+
+  STAR_BUTTON =
+'
+<iframe src="https://ghbtns.com/github-btn.html?user=%{user}&repo=%{repo}&type=star&count=true"
+frameborder="0" align="middle" scrolling="0" width="170px" height="20px"></iframe>
+
+'
+
+  TEMPLATE_DETAILS =
+'
+%{description}
+
+Type | Language | License | Status | PIO min version
+:----: | :-----:| :-----: | :----: | :-------------:
+%{type} | %{language} | %{license} | %{status} | %{pio_min_version}
+<br/>
+'
+
+  SECTION_SEPARATOR =
+'
+<br/>
+'
+
+  class Template
+    public
+    attr_accessor :has_github, :github_repo, :github_user
+
+    def initialize(engine)
+      engine.each do |key, val|
+        self.instance_variable_set("@#{key}", val)
+        self.class.send :define_method, key, lambda { self.instance_variable_get("@#{key}") }
+      end
+
+      @tags = @tags.map{ |s| s.downcase }
+
+      @has_github = parse_github
+    end
+
+    private
+    def parse_github
+      uri = URI.parse(@repo)
+      if uri.host == 'github.com'
+        path = uri.path.split('/')
+        raise "Wrong github repo url" unless path.length >= 3
+        @github_user = path[1]
+        @github_repo = path[2]
+        return true
+      else
+        return false
+      end
+    end
+  end
+
+  def self.write_template(mdfile, template)
+    intro = TEMPLATE_INTRO % {
+      name: template.name,
+      repo: template.repo }
+
+    if template.has_github
+        intro += STAR_BUTTON % {
+                    user: template.github_user,
+                    repo: template.github_repo}
+    end
+
+    mdfile.write(intro)
+    mdfile.write(TEMPLATE_DETAILS % {
+      description: template.description,
+      type: template.type,
+      language: template.language,
+      license: template.license,
+      status: template.status,
+      pio_min_version: template.pio_min_version,
+    })
+  end
+
+  def self.write_templates(mdfile, templates)
+    templates.each do |t|
+      write_template(mdfile, t)
+    end
+  end
+
+  def self.write_markdown(mdfile, templates)
+    classification = templates.select{ |engine| engine.tags.include? 'classification' }
+    regression     = templates.select{ |engine| engine.tags.include? 'regression' }
+    unsupervised   = templates.select{ |engine| engine.tags.include? 'unsupervised' }
+    recommenders   = templates.select{ |engine| engine.tags.include? 'recommender' }
+    nlps           = templates.select{ |engine| engine.tags.include? 'nlp' }
+    others         = templates.select{ |engine| engine.tags.include? 'other' }
+
+    mdfile.write(INTRO)
+
+    mdfile.write(CLASSIFICATION)
+    write_templates(mdfile, classification)
+
+    mdfile.write(SECTION_SEPARATOR)
+
+    mdfile.write(REGRESSION)
+    write_templates(mdfile, regression)
+
+    mdfile.write(SECTION_SEPARATOR)
+
+    mdfile.write(UNSUPERVISED)
+    write_templates(mdfile, unsupervised)
+
+    mdfile.write(SECTION_SEPARATOR)
+
+    mdfile.write(RECOMMENDER_SYSTEMS)
+    write_templates(mdfile, recommenders)
+
+    mdfile.write(SECTION_SEPARATOR)
+
+    mdfile.write(NLP)
+    write_templates(mdfile, nlps)
+
+    mdfile.write(OTHER)
+    write_templates(mdfile, others)
+  end
+
+
+  public
+  def self.generate_md(yaml_file_path, out_file_path)
+
+    File.open(yaml_file_path) do |in_file|
+      File.open(out_file_path, 'w') do |out_file|
+
+        templates = YAML.load(in_file)
+        parsed = templates.map{ |t| Template.new(t["template"]) }
+
+        write_markdown(out_file, parsed)
+      end
+    end
+  end
+end

http://git-wip-us.apache.org/repos/asf/incubator-predictionio/blob/b0687ae5/docs/manual/source/community/submit-template.html.md
----------------------------------------------------------------------
diff --git a/docs/manual/source/community/submit-template.html.md b/docs/manual/source/community/submit-template.html.md
index 8beb775..38590cc 100644
--- a/docs/manual/source/community/submit-template.html.md
+++ b/docs/manual/source/community/submit-template.html.md
@@ -47,4 +47,20 @@ title:  Submitting a Template to Template Gallery
 
 ## How to submit
 
-Go to http://templates.prediction.io/repositories/new and follow instructions.
+- Fork repository
+- Modify *docs/manual/source/gallery/templates.yaml* introducing a new template. The schema of the engine description is following:
+
+```yml
+- template:
+    name: (Name of your template)
+    repo: (Link to your repository)
+    description: |-
+      (Brief description of your template written in markdown syntax)
+    tags: [ (One of [classification, regression, unsupervised, recommender, nlp, other]) ]
+    type: (Parallel or Local)
+    language: (Language)
+    license: (License)
+    status: (e.g. alpha, stable or requested (under development))
+    pio_min_version: (Minimum version of PredictionIO to run your template)
+```
+- Submit your changes via pull-request

http://git-wip-us.apache.org/repos/asf/incubator-predictionio/blob/b0687ae5/docs/manual/source/gallery/gen_gallery_md.py
----------------------------------------------------------------------
diff --git a/docs/manual/source/gallery/gen_gallery_md.py b/docs/manual/source/gallery/gen_gallery_md.py
deleted file mode 100644
index a7bc919..0000000
--- a/docs/manual/source/gallery/gen_gallery_md.py
+++ /dev/null
@@ -1,156 +0,0 @@
-import yaml
-import sys
-import urllib.parse as urlparse
-
-INTRO = \
-"""\
----
-title: Engine Template Gallery
----
-"""
-
-UNSUPERVISED = \
-"""
-<div id='unsupervised-learning'/>
-
-## Unsupervised Learning
-"""
-CLASSIFICATION = \
-"""
-<div id='classification'/>
-
-## Classification
-"""
-
-REGRESSION = \
-"""
-<div id='regression'/>
-
-## Regression
-"""
-
-RECOMMENDER_SYSTEMS = \
-"""
-<div id='recommenders'/>
-
-## Recommender Systems
-"""
-
-NLP = \
-"""
-<div id='nlp'/>
-
-## Natural Language Processing
-"""
-
-TEMPLATE_INTRO = \
-"""#### ***[{name}]({repo})***  """
-
-STAR_BUTTON = \
-"""
-<iframe src="https://ghbtns.com/github-btn.html?user={user}&repo={repo}&\
-type=star&count=true" frameborder="0" align="middle" scrolling="0" width="170px" height="20px"></iframe>
-
-"""
-
-TEMPLATE_DETAILS = \
-"""
-{description}
-
-Type | Language | License | Status | PIO min version
-:----: | :-----:| :-----: | :----: | :-------------:
-{type} | {language} | {license} | {status} | {pio_min_version}
-
-"""
-
-SECTION_SEPARATOR = \
-"""
-<br/>
-"""
-
-class Template:
-
-    def __init__(self, engine):
-        for key, val in engine.items():
-            setattr(self, key, val)
-
-        self.tags = list(map(lambda s: s.lower(), self.tags))
-        self.has_github = True if self.parse_github() else False
-
-    def parse_github(self):
-        pr = urlparse.urlparse(self.repo)
-        if pr.netloc == 'github.com':
-            path = pr.path.split('/')
-            assert(len(path) >= 3)
-            self.github_user = path[1]
-            self.github_repo = path[2]
-            return True
-        else:
-            return False
-
-def write_template(mdfile, template):
-    intro = TEMPLATE_INTRO.format(
-                name=template.name,
-                repo=template.repo)
-    if template.has_github:
-        intro += STAR_BUTTON.format(
-                    user=template.github_user,
-                    repo=template.github_repo)
-    mdfile.write(intro)
-    mdfile.write(TEMPLATE_DETAILS.format(
-            description=template.description,
-            type=template.type,
-            language=template.language,
-            license=template.license,
-            status=template.status,
-            pio_min_version=template.pio_min_version,
-        ))
-
-def write_templates(mdfile, templates):
-    for t in templates:
-        write_template(mdfile, t)
-
-def write_markdown(mdfile, templates):
-    classification = [engine for engine in templates if "classification" in engine.tags]
-    regression = [engine for engine in templates if "regression" in engine.tags]
-    unsupervised = [engine for engine in templates if "unsupervised" in engine.tags]
-    recommenders = [engine for engine in templates if "recommender" in engine.tags]
-    nlps = [engine for engine in templates if "nlp" in engine.tags]
-
-    mdfile.write(INTRO)
-
-    mdfile.write(CLASSIFICATION)
-    write_templates(mdfile, classification)
-
-    mdfile.write(SECTION_SEPARATOR)
-
-    mdfile.write(REGRESSION)
-    write_templates(mdfile, regression)
-
-    mdfile.write(SECTION_SEPARATOR)
-
-    mdfile.write(UNSUPERVISED)
-    write_templates(mdfile, unsupervised)
-
-    mdfile.write(SECTION_SEPARATOR)
-
-    mdfile.write(RECOMMENDER_SYSTEMS)
-    write_templates(mdfile, recommenders)
-
-    mdfile.write(SECTION_SEPARATOR)
-
-    mdfile.write(NLP)
-    write_templates(mdfile, nlps)
-
-
-if __name__ == "__main__":
-
-    in_file = sys.argv[1]
-    out_file = sys.argv[2]
-
-    with open(in_file, 'r') as stream:
-        templates = yaml.load(stream)
-        parsed = [Template(position["template"]) for position in templates]
-
-        with open(out_file, 'w') as mdfile:
-            write_markdown(mdfile, parsed)

http://git-wip-us.apache.org/repos/asf/incubator-predictionio/blob/b0687ae5/docs/manual/source/gallery/templates.yaml
----------------------------------------------------------------------
diff --git a/docs/manual/source/gallery/templates.yaml b/docs/manual/source/gallery/templates.yaml
index 9cdf46e..0679d18 100644
--- a/docs/manual/source/gallery/templates.yaml
+++ b/docs/manual/source/gallery/templates.yaml
@@ -1,5 +1,42 @@
 - template:
+    name: Universal Recommender
+    repo: "https://github.com/PredictionIO/template-scala-parallel-universal-recommendation"
+    description: |-
+      Use for:
+
+        * Personalized recommendations
+        * Similar items
+        * Popular Items
+        * Shopping cart recommendation
+        * Hybrid collaborative filtering and content based recommendations.
+
+      The name refers to the use of this template in virtually any case that calls for recommendations - ecom, news, videos, virtually anywhere usage data is known. This recommender can auto-correlate different user actions, profile data, contextual information, and some content types to make better recommendations.
+    tags: [recommender]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: alpha
+    pio_min_version: 0.9.5
+
+- template:
     name: E-Commerce Recommendation
+    repo: "https://github.com/PredictionIO/template-scala-parallel-ecommercerecommendation"
+    description: |-
+      This engine template provides personalized recommendation for e-commerce applications with the following features by default:
+
+      * Exclude out-of-stock items
+      * Provide recommendation to new users who sign up after the model is trained
+      * Recommend unseen items only (configurable)
+      * Recommend popular items if no information about the user is available (added in template version v0.4.0)
+    tags: [recommender]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: alpha
+    pio_min_version: 0.9.2
+
+- template:
+    name: E-Commerce Recommendation (Java)
     repo: "https://github.com/PredictionIO/template-java-parallel-ecommercerecommendation"
     description: |-
       This engine template provides personalized recommendation for e-commerce applications with the following features by default:
@@ -16,6 +53,18 @@
     pio_min_version: 0.9.3
 
 - template:
+    name: Product Ranking
+    repo: "https://github.com/PredictionIO/template-scala-parallel-productranking"
+    description: |-
+      This engine template sorts a list of products for a user based on his/her preference. This is ideal for personalizing the display order of product page, catalog, or menu items if you have large number of options. It creates engagement and early conversion by placing products that a user prefers on the top.
+    tags: [unsupervised]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: stable
+    pio_min_version: 0.9.2
+
+- template:
     name: Similar Product
     repo: "https://github.com/PredictionIO/template-scala-parallel-similarproduct"
     description: |-
@@ -28,6 +77,42 @@
     pio_min_version: 0.9.2
 
 - template:
+    name: Complementary Purchase
+    repo: "https://github.com/PredictionIO/template-scala-parallel-complementarypurchase"
+    description: |-
+      This engine template recommends the complementary items which most user frequently buy at the same time with one or more items in the query.
+    tags: [unsupervised]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: alpha
+    pio_min_version: 0.9.2
+
+- template:
+    name: Lead Scoring
+    repo: "https://github.com/PredictionIO/template-scala-parallel-leadscoring"
+    description: |-
+      This engine template predicts the probability of an user will convert (conversion event by user) in the current session.
+    tags: [classification]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: alpha
+    pio_min_version: 0.9.2
+
+- template:
+    name: Recommendation
+    repo: "https://github.com/PredictionIO/template-scala-parallel-recommendation"
+    description: |-
+      An engine template is an almost-complete implementation of an engine. PredictionIO's Recommendation Engine Template has integrated Apache Spark MLlib's Collaborative Filtering algorithm by default. You can customize it easily to fit your specific needs.
+    tags: [unsupervised]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: stable
+    pio_min_version: 0.9.2
+
+- template:
     name: Classification
     repo: "https://github.com/PredictionIO/template-scala-parallel-classification"
     description: |-
@@ -40,6 +125,265 @@
     pio_min_version: 0.9.2
 
 - template:
+    name: Content Based SVD Item Similarity Engine
+    repo: "https://github.com/alexice/template-scala-parallel-svd-item-similarity"
+    description: |-
+      Template to calculate similarity between items based on their attributes. Attributes can be either numeric or categorical in the last case it will be encoded using one-hot encoder. Algorithm uses SVD in order to reduce data dimensionality. Cosine similarity is now implemented but can be easily extended to other similarity measures.
+    tags: [unsupervised]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: alpha
+    pio_min_version: 0.9.2
+
+- template:
+    name: Survival Regression
+    repo: "https://github.com/goliasz/pio-template-sr"
+    description: |-
+      Survival regression template is based on brand new Spark 1.6 AFT (accelerated failure time) survival analysis algorithm. There are interesting applications of survival analysis like:
+
+        * Business Planning : Profiling customers who has a higher survival rate and make strategy accordingly.
+        * Lifetime Value Prediction : Engage with customers according to their lifetime value
+        * Active customers : Predict when the customer will be active for the next time and take interventions accordingly.     * Campaign evaluation : Monitor effect of campaign on the survival rate of customers.
+
+      Source: http://www.analyticsvidhya.com/blog/2014/04/survival-analysis-model-you/
+    tags: [regression]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: beta
+    pio_min_version: 0.9.5
+
+- template:
+    name: Churn Prediction - H2O Sparkling Water
+    repo: "https://github.com/andrewwuan/PredictionIO-Churn-Prediction-H2O-Sparkling-Water"
+    description: |-
+      This is an engine template with Sparkling Water integration. The goal is to use Deep Learning algorithm to predict the churn rate for a phone carrier's customers.
+    tags: [classification]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: alpha
+    pio_min_version: 0.9.2
+
+- template:
+    name: Classification Deeplearning4j
+    repo: "https://github.com/detrevid/predictionio-template-classification-dl4j"
+    description: |-
+      A classification engine template that uses Deeplearning4j library.
+    tags: [classification]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: alpha
+    pio_min_version: 0.9.2
+
+- template:
+    name: Sparkling Water-Deep Learning Energy Forecasting
+    repo: "https://github.com/BensonQiu/predictionio-template-recommendation-sparklingwater"
+    description: |-
+      This Engine Template demonstrates an energy forecasting engine. It integrates Deep Learning from the Sparkling Water library to perform energy analysis. We can query the circuit and time, and return predicted energy usage.
+    tags: [regression]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: alpha
+    pio_min_version: 0.9.2
+
+
+- template:
+    name: OpenNLP Sentiment Analysis Template
+    repo: "https://github.com/vshwnth2/OpenNLP-SentimentAnalysis-Template"
+    description: |-
+      Given a sentence, this engine will return a score between 0 and 4. This is the sentiment of the sentence. The lower the number the more negative the sentence is. It uses the OpenNLP library.
+    tags: [nlp]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: alpha
+    pio_min_version: "-"
+
+- template:
+    name: Probabilistic Classifier (Logistic Regression w/ LBFGS)
+    repo: "https://github.com/EmergentOrder/template-scala-probabilistic-classifier-batch-lbfgs"
+    description: |-
+      A PredictionIO engine template using logistic regression (trained with limited-memory BFGS ) with raw (probabilistic) outputs.
+    tags: [classification]
+    type: Parallel
+    language: Scala
+    license: "MIT License"
+    status: alpha
+    pio_min_version: 0.9.2
+
+- template:
+    name: Document Classification with OpenNLP
+    repo: "https://github.com/chrischris292/template-classification-opennlp"
+    description: |-
+      Document Classification template with OpenNLP GISModel.
+    tags: [nlp]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: alpha
+    pio_min_version: 0.9.0
+
+- template:
+    name: Circuit End Use Classification
+    repo: "https://github.com/harry5z/template-circuit-classification-sparkling-water"
+    description: |-
+      A classification engine template that uses machine learning models trained with sample circuit energy consumption data and end usage to predict the end use of a circuit by its energy consumption history.
+    tags: [classification]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: alpha
+    pio_min_version: 0.9.1
+
+- template:
+    name: Viewed This Bought That
+    repo: "https://github.com/vngrs/template-scala-parallel-viewedthenbought"
+    description: |-
+      This Engine uses co-occurence algorithm to match viewed items to bought items. Using this engine you may predict which item the user will buy, given the item(s) browsed.
+    tags: [unsupervised]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: stable
+    pio_min_version: 0.9.2
+
+- template:
+    name: Music Recommendations
+    repo: "https://github.com/vaibhavist/template-scala-parallel-recommendation"
+    description: |-
+      This is very similar to music recommendations template. It is integrated with all the events a music application can have such as song played, liked, downloaded, purchased, etc.
+    tags: [unsupervised]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: alpha
+    pio_min_version: 0.9.2
+
+- template:
+    name: template-decision-tree-feature-importance
+    repo: "https://github.com/anthill/template-decision-tree-feature-importance"
+    description: |-
+      This template shows how to use spark' decision tree. It enables : - both categorical and continuous features - feature importance calculation - tree output in json - reading training data from a csv file
+    tags: [unsupervised]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: stable
+    pio_min_version: 0.9.0
+
+- template:
+    name: Electric Load Forecasting
+    repo: "https://github.com/detrevid/predictionio-load-forecasting"
+    description: |-
+      This is a PredictionIO engine for electric load forecasting. The engine is using linear regression with stochastic gradient descent from Spark MLlib.
+    tags: [regression]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: stable
+    pio_min_version: 0.9.2
+
+- template:
+    name: Sentiment analysis
+    repo: "https://github.com/pawel-n/template-scala-cml-sentiment"
+    description: |-
+      This template implements various algorithms for sentiment analysis, most based on recursive neural networks (RNN) and recursive neural tensor networks (RNTN)[1]. It uses an experimental library called Composable Machine Learning (CML) and the Stanford Parser. The example data set is the Stanford Sentiment Treebank.
+    tags: [nlp]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: alpha
+    pio_min_version: 0.9.2
+
+- template:
+    name: GBRT_Classification
+    repo: "https://github.com/ailurus1991/GBRT_Template_PredictionIO"
+    description: |-
+      The Gradient-Boosted Regression Trees(GBRT) for classification.
+    tags: [classification]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: alpha
+    pio_min_version: 0.9.2
+
+- template:
+    name: MLlibKMeansClustering
+    repo: "https://github.com/sahiliitm/predictionio-MLlibKMeansClusteringTemplate"
+    description: |-
+      This is a template which demonstrates the use of K-Means clustering algorithm which can be deployed on a spark-cluster using prediction.io.
+    tags: [unsupervised]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: alpha
+    pio_min_version: '-'
+
+- template:
+    name: Word2Vec
+    repo: "https://github.com/pawel-n/template-scala-parallel-word2vec"
+    description: |-
+      This template integrates the Word2Vec implementation from deeplearning4j with PredictionIO. The Word2Vec algorithm takes a corpus of text and computes a vector representation for each word. These representations can be subsequently used in many natural language processing applications.
+    tags: [nlp]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: alpha
+    pio_min_version: 0.9.0
+
+- template:
+    name: MLlib-Decision-Trees-Template
+    repo: "https://github.com/mohanaprasad1994/PredictionIO-MLlib-Decision-Trees-Template"
+    description: |-
+      An engine template is an almost-complete implementation of an engine. This is a classification engine template which has integrated Apache Spark MLlib's Decision tree algorithm by default.
+    tags: [classification]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: alpha
+    pio_min_version: 0.9.0
+
+- template:
+    name: Spark Deeplearning4j Word2Vec
+    repo: "https://github.com/ts335793/template-scala-spark-dl4j-word2vec"
+    description: |-
+      This template shows how to integrate Deeplearnign4j spark api with PredictionIO on example of app which uses Word2Vec algorithm to predict nearest words.
+    tags: [nlp]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: stable
+    pio_min_version: 0.9.2
+
+- template:
+    name: Sentiment Analysis Template
+    repo: "https://github.com/whhone/template-sentiment-analysis"
+    description: |-
+      Given a sentence, return a score between 0 and 4, indicating the sentence's sentiment. 0 being very negative, 4 being very positive, 2 being neutral. The engine uses the stanford CoreNLP library and the Scala binding `gangeli/CoreNLP-Scala` for parsing.
+    tags: [nlp]
+    type: Parallel
+    language: Scala
+    license: None
+    status: stable
+    pio_min_version: 0.9.0
+
+- template:
+    name: Classification with MultiLayerNetwork
+    repo: "https://github.com/jimmyywu/predictionio-template-classification-dl4j-multilayer-network"
+    description: |-
+      This engine template integrates the MultiLayerNetwork implementation from the Deeplearning4j library into PredictionIO. In this template, we use PredictionIO to classify the widely-known IRIS flower dataset by constructing a deep-belief net.
+    tags: [classification]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: alpha
+    pio_min_version: 0.9.0
+
+- template:
     name: MLLib-LinearRegression
     repo: "https://github.com/RAditi/PredictionIO-MLLib-LinReg-Template"
     description: |-
@@ -64,13 +408,217 @@
     pio_min_version: 0.9.2
 
 - template:
-    name: MLlibKMeansClustering
-    repo: "https://github.com/sahiliitm/predictionio-MLlibKMeansClusteringTemplate"
+    name: Deeplearning4j RNTN
+    repo: "https://github.com/ts335793/template-scala-parallel-dl4j-rntn"
     description: |-
-      This is a template which demonstrates the use of K-Means clustering algorithm which can be deployed on a spark-cluster using prediction.io.
+      Recursive Neural Tensor Network algorithm is supervised learning algorithm used to predict sentiment of sentences. This template is based on deeplearning4j RNTN example: https://github.com/SkymindIO/deeplearning4j-nlp-examples/tree/master/src/main/java/org/deeplearning4j/rottentomatoes/rntn. It's goal is to show how to integrate deeplearning4j library with PredictionIO.
+    tags: [nlp]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: alpha
+    pio_min_version: 0.9.2
+
+- template:
+    name: Recursive Neural Networks (Sentiment Analysis)
+    repo: "https://github.com/ts335793/template-scala-rnn"
+    description: |-
+      Predicting sentiment of phrases with use of Recursive Neural Network algorithm and OpenNLP parser.
+    tags: [nlp]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: stable
+    pio_min_version: 0.9.2
+
+- template:
+    name: CoreNLP Text Classification
+    repo: "https://github.com/Ling-Ling/CoreNLP-Text-Classification"
+    description: |-
+      This engine uses CoreNLP to do text analysis in order to classify the category a strings of text falls under.
+    tags: [nlp]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: alpha
+    pio_min_version: "-"
+
+- template:
+    name: Topc Model (LDA)
+    repo: "https://github.com/EmergentOrder/template-scala-topic-model-LDA"
+    description: |-
+      A PredictionIO engine template using Latent Dirichlet Allocation to learn a topic model from raw text
+    tags: [nlp]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: alpha
+    pio_min_version: 0.9.4
+
+- template:
+    name: Cstablo-template-text-similarityelassification
+    repo: "https://github.com/goliasz/pio-template-text-similarity"
+    description: |-
+      Text similarity engine based on Word2Vec algorithm. Builds vectors of full documents in training phase. Finds similar documents in query phase.
+    tags: [nlp]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: alpha
+    pio_min_version: 0.9.5
+
+- template:
+    name: KMeans-Clustering-Template
+    repo: "https://github.com/singsanj/KMeans-parallel-template"
+    description: |-
+      forked from PredictionIO/template-scala-parallel-vanilla. It implements the KMeans Algorithm. Can be extended to mainstream implementation with minor changes.
     tags: [unsupervised]
     type: Parallel
     language: Scala
     license: "Apache Licence 2.0"
     status: alpha
-    pio_min_version: '-'
+    pio_min_version: 0.9.2
+
+- template:
+    name: classifier-kafka-streaming-template
+    repo: "https://github.com/singsanj/classifier-kafka-streaming-template"
+    description: |-
+      The template will provide a simple integration of DASE with kafka using spark streaming capabilites in order to play around with real time notification, messages ..
+    tags: [classification]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: alpha
+    pio_min_version: "-"
+
+- template:
+    name: Frequent Pattern Mining
+    repo: "https://github.com/goliasz/pio-template-fpm"
+    description: |-
+      Template uses FP Growth algorithm allowing to mine for frequent patterns. Template returns subsequent items together with confidence score.
+    tags: [unsupervised]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: alpha
+    pio_min_version: 0.9.5
+
+- template:
+    name: Vanilla
+    repo: "https://github.com/PredictionIO/template-scala-parallel-vanilla"
+    description: |-
+      Vanilla template is for developing new engine when you find other engine templates do not fit your needs. This template provides a skeleton to kick start new engine development.
+    tags: [other]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: stable
+    pio_min_version: 0.9.2
+
+- template:
+    name: Similar Product with Rating
+    repo: "https://github.com/ramaboo/template-scala-parallel-similarproduct-with-rating"
+    description: |-
+      Similar product template with rating support! Used for the MovieLens Demo.
+    tags: [unsupervised]
+    type: Parallel
+    language: Scala
+    license: "Apache Licence 2.0"
+    status: beta
+    pio_min_version: 0.9.0
+
+- template:
+    name: "Best Time: Push Notification"
+    repo: "https://github.com/PredictionIO/template-best-time-push-notification"
+    description: |-
+      This template predicts the best time to send push notification to a user to optimize conversion.
+    tags: [other]
+    type: "-"
+    language: "-"
+    license: "-"
+    status: requested
+    pio_min_version: "-"
+
+- template:
+    name: "Best Time: E-mail"
+    repo: "https://github.com/PredictionIO/template-best-time-email"
+    description: |-
+      An engine template is an almost-complete implementation of an engine. PredictionIO's Classification Engine Template has integrated Apache Spark MLlib's Naive Bayes algorithm by default.
+    tags: [other]
+    type: "-"
+    language: "-"
+    license: "-"
+    status: requested
+    pio_min_version: "-"
+
+- template:
+    name: Search Results Ranking
+    repo: "https://github.com/PredictionIO/template-search-results-ranking"
+    description: |-
+      This template rank the search results with a given user\u2019s behavioral history so the top results are most relevant.
+    tags: [unsupervised]
+    type: "-"
+    language: "-"
+    license: "-"
+    status: requested
+    pio_min_version: "-"
+
+- template:
+    name: Category identification
+    repo: "https://github.com/PredictionIO/template-category-identification"
+    description: |-
+      Given a product and its description, this template identifies the category this item belongs to.
+    tags: [classification]
+    type: "-"
+    language: "-"
+    license: "-"
+    status: requested
+    pio_min_version: "-"
+
+- template:
+    name: Smart Categories
+    repo: "https://github.com/PredictionIO/template-smart-categories"
+    description: |-
+      This template ranks the categories for a user.
+    tags: [unsupervised]
+    type: "-"
+    language: "-"
+    license: "-"
+    status: requested
+    pio_min_version: "-"
+
+- template:
+    name: Fake Account Detection
+    repo: "https://github.com/PredictionIO/template-fake-account-detection"
+    description: |-
+      This template detects accounts created with abnormal pattern.
+    tags: [classification]
+    type: "-"
+    language: "-"
+    license: "-"
+    status: requested
+    pio_min_version: "-"
+
+- template:
+    name: Product Trend
+    repo: "https://github.com/PredictionIO/template-product-trend"
+    description: |-
+      This template analyze the user behavior on site to predict the best selling products and trends.
+    tags: [classification]
+    type: "-"
+    language: "-"
+    license: "-"
+    status: requested
+    pio_min_version: "-"
+
+- template:
+    name: User Similarity
+    repo: "https://github.com/PredictionIO/template-user-similarity"
+    description: |-
+      This template make recommendation on similar users based on attributes and behavior.
+    tags: [unsupervised]
+    type: "-"
+    language: "-"
+    license: "-"
+    status: requested
+    pio_min_version: "-"