{"id":21023370,"url":"https://github.com/iusztinpaul/ibm-assets-recommendation-engine","last_synced_at":"2026-04-27T16:31:47.914Z","repository":{"id":58357112,"uuid":"529145365","full_name":"iusztinpaul/ibm-assets-recommendation-engine","owner":"iusztinpaul","description":"Deployable recommendation system for predicting the fittest IBM articles for a given user.","archived":false,"fork":false,"pushed_at":"2022-09-02T09:02:50.000Z","size":273,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-09-09T23:33:51.161Z","etag":null,"topics":["ibm","machine-learning","numpy","pandas","python","recommendation-engine","recommendation-system","svd-matrix-factorisation"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iusztinpaul.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-08-26T06:41:05.000Z","updated_at":"2025-02-28T02:27:20.000Z","dependencies_parsed_at":"2023-01-17T19:32:00.092Z","dependency_job_id":null,"html_url":"https://github.com/iusztinpaul/ibm-assets-recommendation-engine","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/iusztinpaul/ibm-assets-recommendation-engine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iusztinpaul%2Fibm-assets-recommendation-engine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iusztinpaul%2Fibm-assets-recommendation-engine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iusztinpaul%2Fibm-assets-recommendation-engine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iusztinpaul%2Fibm-assets-recommendation-engine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iusztinpaul","download_url":"https://codeload.github.com/iusztinpaul/ibm-assets-recommendation-engine/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iusztinpaul%2Fibm-assets-recommendation-engine/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32345802,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ibm","machine-learning","numpy","pandas","python","recommendation-engine","recommendation-system","svd-matrix-factorisation"],"created_at":"2024-11-19T11:17:48.472Z","updated_at":"2026-04-27T16:31:47.899Z","avatar_url":"https://github.com/iusztinpaul.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# IBM Articles Recommendation Engine\n\n# Table of Contents\n1. [Motivation](#motivation)\n2. [Installation](#installation)\n3. [Data](#data)\n4. [Usage](#usage)\n5. [Licensing, Authors, Acknowledgements](#licensing)\n\n## 1. Motivation \u003ca name=\"motivation\"\u003e\u003c/a\u003e\nThe repository started as an educational project around the data IBM provided about user-article interactions \nfrom their internal blog. Many thanks to their contribution, as they made the data public. Otherwise, this wouldn't have been possible.\nThe educational part can be seen in the `Recommendations_with_IBM.ipynb` notebook.\n\nAfter seeing that this is actually useful, we refactored everything under the `engine` Python package. You can quickly\nimport the `Recommender` class that holds a `scikit` like interface with the `fit` and `predict` methods.\n\n## 2. Installation \u003ca name=\"installation\"\u003e\u003c/a\u003e\nThe code was tested under:\n* Ubuntu 20.04\n* Python 3.9 \u003cbr/\u003e\nTo install all the requirements run (preferably within a virtual environment):\n```shell\npip install -r requirements.txt\n```\nTo convert the notebook into `pdf` you need to install the following:\n```shell\nsudo apt-get install pandoc\n```\n\n## 3. Data \u003ca name=\"data\"\u003e\u003c/a\u003e\nWe used a user-article interaction public data provided by IBM. It is based on their internal blog.\nIt consists of two main `csv` files:\n* `user-item-interactions.csv`: Record of every user-article interaction.\n* `articles_community.csv`: Information about every article from the IBM internal blog.\n\n* You can download the data [here](https://drive.google.com/drive/folders/1XEFmUJoW19MMoL3oDR_CfR6kRc5Kc-ta?usp=sharing).\n* For everything to work outside the box, it should be placed at `./data/`:\n```\ndata /\n     / user-item-interactions.csv\n     / articles_community.csv\n```\n\n## 4. Usage \u003ca name=\"usage\"\u003e\u003c/a\u003e\n### File Structure\nThe engine was developed within the `Recommendations_with_IBM.ipynb` notebook. It contains the following components:\n* EDA\n* rank recommendation\n* collaborative filtering recommendation\n* content-based recommendation\n* matrix factorization recommendation (with SVD)\n\nAll the logic was refactored and moved into the `engine` Python package which reflects the same logic/structure, except:\n* `data.py`: Where all the logic about data loading and different transformations is kept.\n* `utils.py`: Where all the utility functions can be found\n* `recommender.py`: Where the main class `Recommender` can be found.\n\n### Instructions\nAfter all the dependencies are installed, and you downloaded the data at `./data` you can run the recommender with:\n```shell\npython main.py\n```\nYou can easily ship the `Recommender` class within your own code. It follows the `scikit` standards:\n```python\nfrom engine import load, Recommender\n\ndf, df_content = load()\n\nrecommender = Recommender(n_top=10)\nrecommender.fit(df, df_content)\narticle_recommendations = recommender.predict(user_ids=[1, 10, 100, 10000])\n```\n\n## 5. Licensing, Authors, Acknowledgements \u003ca name=\"licensing\"\u003e\u003c/a\u003e\nThe code is licensed under the MIT license. I encourage anybody to use and share the code as long as you give credit to the original author. \nI want to thank IBM for their contribution to making the data available. Without their assistance, I would not have been able to build the engine.\n\nIf anybody has machine learning questions, suggestions, or wants to collaborate with me, feel free to contact me \nat p.b.iusztin@gmail.com or to connect with me on [LinkedIn](https://www.linkedin.com/in/paul-iusztin-7a047814a/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiusztinpaul%2Fibm-assets-recommendation-engine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiusztinpaul%2Fibm-assets-recommendation-engine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiusztinpaul%2Fibm-assets-recommendation-engine/lists"}