{"id":2120,"date":"2026-05-19T11:22:35","date_gmt":"2026-05-19T11:22:35","guid":{"rendered":"https:\/\/catedramasmovil.uc3m.es\/2026\/05\/19\/recommendation-system-for-digital-contents\/"},"modified":"2026-05-19T11:22:35","modified_gmt":"2026-05-19T11:22:35","slug":"recommendation-system-for-digital-contents","status":"publish","type":"post","link":"https:\/\/catedramasmovil.uc3m.es\/en\/2026\/05\/19\/recommendation-system-for-digital-contents\/","title":{"rendered":"Recommendation System for Digital Contents"},"content":{"rendered":"\n[et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.17.0&#8243; custom_padding=&#8221;0px||||false|false&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;et_body_layout&#8221;][et_pb_row _builder_version=&#8221;4.17.0&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;0px||||false|false&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;et_body_layout&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.17.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;et_body_layout&#8221;][et_pb_gallery gallery_ids=&#8221;1981,1983,1985,1987,1989,1991&#8243; fullwidth=&#8221;on&#8221; _builder_version=&#8221;4.27.6&#8243; _module_preset=&#8221;default&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;et_body_layout&#8221; sticky_enabled=&#8221;0&#8243;][\/et_pb_gallery][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.16&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221; custom_margin=&#8221;|auto||103px||&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;et_body_layout&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; custom_padding=&#8221;|||&#8221; global_colors_info=&#8221;{}&#8221; custom_padding__hover=&#8221;|||&#8221; theme_builder_area=&#8221;et_body_layout&#8221;][et_pb_text _builder_version=&#8221;4.25.1&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;||0px|||&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;et_body_layout&#8221;]<h2>Objective<\/h2>\n<p><span style=\"font-weight: 400\">This thesis presents the design and implementation of a hybrid TV content recommender system for MasOrange&#8217;s OrangeTV platform. The system integrates a discrete Bayesian network, a large language model (LLM) conversational agent, and the TMDB API, exposed to the user through a Flask web interface.<br\/> <\/span><\/p>\n<p><span style=\"font-weight: 400\">The Bayesian network was built from a study of viewing profiles and habits, used to generate a synthetic dataset. The graph structure was learned using HillClimbingSearch with a BDeu scoring criterion (ESS=100), constrained by a domain-knowledge whitelist and blacklist. The resulting conditional probability tables (CPDs) enable probabilistic inference over the content type and genre best suited to each user context. A key advantage of the Bayesian approach over deep learning alternatives is its inherent explainability: the full inference path can be traced, identifying which variables and with what probabilities led to each recommendation.<br\/>   <\/span><\/p>\n<p><span style=\"font-weight: 400\">User interaction is handled in natural language by an LLM agent performing three tasks: intent classification, JSON-structured attribute extraction, and conversational response generation in Spanish. To select the most suitable models, an automated evaluation was conducted with 300 intent classification tests and 200 attribute extraction tests, achieving 93.6% accuracy with GPT-4o for the former and 81.9% with Claude Sonnet 4.5 for the latter.<br\/><br\/> <\/span><\/p>\n<p><span style=\"font-weight: 400\">The system incorporates an online feedback mechanism that updates CPD counts in real time without retraining, based on both explicit user ratings and a viewing behaviour simulation module covering watch percentage, early drop-offs, and rewatches. The full pipeline is served via a Flask REST API with a web interface featuring a persistent user profile, quick recommendations, and fast-action feedback buttons.<br\/> <\/span><\/p>\n<p dir=\"ltr\" style=\"text-align: justify\"><\/p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;20px||||false|false&#8221; custom_padding=&#8221;0px||||false|false&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;et_body_layout&#8221;][et_pb_row column_structure=&#8221;1_2,1_2&#8243; _builder_version=&#8221;4.25.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;et_body_layout&#8221;][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;et_body_layout&#8221;][et_pb_image src=&#8221;https:\/\/storage.googleapis.com\/wp-uploads.bucket.wp.uc3m.es\/wp-content\/uploads\/sites\/70\/2026\/05\/19102602\/WhatsApp-Image-2026-05-19-at-08.33.02.jpeg&#8221; title_text=&#8221;WhatsApp Image 2026-05-19 at 08.33.02&#8243; _builder_version=&#8221;4.27.6&#8243; _module_preset=&#8221;default&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;et_body_layout&#8221; sticky_enabled=&#8221;0&#8243;][\/et_pb_image][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;et_body_layout&#8221;][et_pb_text _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;||0px|||&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;et_body_layout&#8221; sticky_enabled=&#8221;0&#8243;]<p><span style=\"color: #003366\"><strong>TRABAJO FIN DE GRADO DE:<\/strong><\/span><\/p>\n<p><span style=\"color: #003366\"><b>CARLOS BRAVO GARR\u00c1N<\/b><\/span><\/p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.25.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;et_body_layout&#8221;]<p><strong><\/strong><\/p>\n<p><strong><\/strong><\/p>\n<p><strong><\/strong><\/p>\n<p><strong>Experiencia Acad\u00e9mica<\/strong><\/p>\n<ul>\n<li>Doble Grado en Ingenier\u00eda Inform\u00e1tica y Administraci\u00f3n de Empresas, Universidad Carlos III de Madrid (septiembre 2021 &#8211; junio 2026)<\/li>\n<\/ul>\n<p>&nbsp;<\/p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.20.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;et_body_layout&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.20.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;et_body_layout&#8221;][et_pb_text _builder_version=&#8221;4.25.1&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;||9px|||&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;et_body_layout&#8221;]<p><strong>Experiencia Laboral<\/strong><\/p>\n<ul>\n<li>Machine Learning Researcher \u2013 Universidad Carlos III de Madrid en colaboraci\u00f3n con Grupo MasOrange (septiembre 2025 \u2014 junio 2026)<\/li>\n<li>Web Developer &#8211; enero 2026 &#8211; Presente<\/li>\n<\/ul>\n<p><strong><br\/>Habilidades t\u00e9cnicas:<br\/><\/strong>-\u200b Lenguajes: Python (Avanzado), C\/C++, SQL, Node.js, JavaScript, HTML, Shell, Git.<br\/>-\u200b Tecnolog\u00edas: Machine Learning, LLMs, Data Analytics, Linux, MS Excel (Avanzado).<br\/>-\u200b Cloud: Google Cloud Engineering (Certificado), AWS Cloud Essentials (Certificado).<strong><br\/>Idiomas:<br\/><\/strong>-\u200b Espa\u00f1ol: Nativo.<br\/>-\u200b Ingl\u00e9s: Avanzado (C1) &#8211; Certificate in Advanced English (CAE) por Cambridge.<br\/>-\u200b Franc\u00e9s: B\u00e1sico.<strong><br><\/strong><\/p>\n<ul><\/ul>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.25.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;et_body_layout&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.25.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;et_body_layout&#8221;][et_pb_text _builder_version=&#8221;4.27.6&#8243; _module_preset=&#8221;default&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;et_body_layout&#8221; sticky_enabled=&#8221;0&#8243;]<blockquote><span style=\"color: #000000\"><span style=\"text-decoration: underline\"><a href=\"https:\/\/www.linkedin.com\/in\/carlosbravogarran\/\" target=\"_blank\" rel=\"noopener\" style=\"color: #000000\">LinkedIn<\/a><\/span><\/span><\/blockquote>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section]\n","protected":false},"excerpt":{"rendered":"<p>Objective This thesis presents the design and implementation of a hybrid TV content recommender system for MasOrange&#8217;s OrangeTV platform. The system integrates a discrete Bayesian network, a large language model (LLM) conversational agent, and the TMDB API, exposed to the user through a Flask web interface. The Bayesian network was built from a study of [&hellip;]<\/p>\n","protected":false},"author":172,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[79],"tags":[],"class_list":["post-2120","post","type-post","status-publish","format-standard","hentry","category-proyectos-2025-2026"],"_links":{"self":[{"href":"https:\/\/catedramasmovil.uc3m.es\/en\/wp-json\/wp\/v2\/posts\/2120","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/catedramasmovil.uc3m.es\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/catedramasmovil.uc3m.es\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/catedramasmovil.uc3m.es\/en\/wp-json\/wp\/v2\/users\/172"}],"replies":[{"embeddable":true,"href":"https:\/\/catedramasmovil.uc3m.es\/en\/wp-json\/wp\/v2\/comments?post=2120"}],"version-history":[{"count":0,"href":"https:\/\/catedramasmovil.uc3m.es\/en\/wp-json\/wp\/v2\/posts\/2120\/revisions"}],"wp:attachment":[{"href":"https:\/\/catedramasmovil.uc3m.es\/en\/wp-json\/wp\/v2\/media?parent=2120"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/catedramasmovil.uc3m.es\/en\/wp-json\/wp\/v2\/categories?post=2120"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/catedramasmovil.uc3m.es\/en\/wp-json\/wp\/v2\/tags?post=2120"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}