More Like This Recommendation System Service

Given a base application, this service returns a set of recommendations based on textual features and relevancy metrics.

The recommendation system pipeline is depicted in the following figure.

Recommendation pipeline

First, similar applications are retrieved by RoBERTapp, a fine-tuned RoBERTa model, based on textual fields.
Then, they are reranked based on relevancy metrics.

Endpoint

https://apprecommender.caixamagica.pt/api/recommend

Parameters

  1. app_id - The id of the base application for which the recommendations will be drawn.
  2. n - Number of recommendations to return
    • Default value: 7
    • Maximum value: 30
  3. w_downloads - Weight given to the downloads field within the relevancy reranker.
    • Default value: 0.6
  4. w_avg_rating - Weight given to the average rating field within the relevancy reranker.
    • Default value: 0.1
  5. w_total_rating - Weight given to the total rating field within the relevancy reranker.
    • Default value: 0.3
  6. w_name - Weight given to the name textual field within the retriever.
    • Default value: 0.5
  7. w_description - Weight given to the description textual field within the retriever.
    • Default value: 0.5
  8. w_dev - Weight given to the developer textual field within the retriever.
    • Default value: 0

Returns

JSON with the following fields:

  1. status

    • 'ok'
    • 'nok'
  2. data

Example

import requests

facebook_id = 56965434 

endpoint = "https://apprecommender.caixamagica.pt/api/recommend"
params = {'app_id': facebook_id , 'n': 3, 
          'w_downloads':0.8, 'w_avg_rating':0.1, 'w_total_rating':0.1, 
          'w_name':0.1, 'w_description': 0.5, 'w_dev': 0.4}

r = requests.get(endpoint, params = params)
print(r.json())

Output:

{'status': 'ok', 'data': [56966709, 56970650, 56970406]}

The Aptoide Mobile Application Dataset can be used to get information for the returned ids. For instance, using the API:

import requests

endpoint = "https://apprecommender.caixamagica.pt/api/appsdataset"

for app_id in [56966709, 56970650, 56970406]:
    params = {'app_id': app_id}

    r = requests.get(endpoint, params = params)
    print(r.json()['data']['name'])

Output

WhatsApp Messenger  
Messenger – Text and Video Chat for Free  
Instagram