Spaces:
Runtime error
Runtime error
| import streamlit as st | |
| import streamlit.components.v1 as stc | |
| import pandas as pd | |
| from sklearn.feature_extraction.text import CountVectorizer | |
| from sklearn.metrics.pairwise import cosine_similarity,linear_kernel | |
| import re | |
| import pandas as pd | |
| import numpy as np | |
| import matplotlib.pyplot as plt | |
| import neattext.functions as nfx | |
| from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer | |
| from sklearn.metrics.pairwise import cosine_similarity | |
| import warnings | |
| from streamlit_extras.dataframe_explorer import dataframe_explorer ,generate_fake_dataframe | |
| warnings.filterwarnings("ignore") | |
| APP_TITLE="TO_ME_FOR_ME" | |
| APP_LOGO="requirement-confidential-develop-extend-proof.jpg" | |
| st.set_page_config(layout="wide", page_title=APP_TITLE, page_icon=APP_LOGO,initial_sidebar_state="expanded") | |
| def loadDataframe(path): | |
| return pd.read_csv(path) | |
| data=loadDataframe("udemy_courses.csv") | |
| data["titre_OK"]= data.course_title.apply(nfx.remove_stopwords) | |
| data["titre_OK"]= data.course_title.apply(nfx.remove_special_characters) | |
| countVec= CountVectorizer() | |
| cv= countVec.fit_transform(data.titre_OK) | |
| df=data | |
| matrice_cosine= cosine_similarity(cv) | |
| parameters = { | |
| "Personnalisation Précise": { | |
| "description": """ | |
| **Description:** Les systèmes de recommandation intelligents analysent vos compétences, vos intérêts, et vos objectifs professionnels pour offrir des suggestions de formation parfaitement adaptées. | |
| **Rôle:** Ce paramètre est crucial car il vous permet de recevoir des recommandations sur mesure, optimisant ainsi la pertinence des formations suggérées. | |
| """, | |
| "image": "standard-quality-control-concept-m (1).jpg" | |
| }, | |
| "Gain de Temps": { | |
| "description": """ | |
| **Description:** La recherche de la formation idéale peut être chronophage. Un système intelligent simplifie ce processus en vous orientant directement vers les programmes les plus appropriés. | |
| **Rôle:** Ce paramètre permet de réduire le temps passé à rechercher et à comparer les options de formation, vous permettant de vous concentrer sur l'apprentissage. | |
| """, | |
| "image": "standard-quality-control-concept-m (2).jpg" | |
| }, | |
| "Suivi et Adaptation Continue": { | |
| "description": """ | |
| **Description:** Les systèmes avancés suivent vos progrès, évaluent les résultats obtenus et ajustent les recommandations en fonction de votre évolution. | |
| **Rôle:** Ce paramètre permet d'ajuster les suggestions en temps réel, vous offrant un accompagnement continu et personnalisé tout au long de votre parcours de formation. | |
| """, | |
| "image": "programming-background-with-person-working-with-codes-computer.jpg" | |
| }, | |
| } | |
| params= { | |
| "Réponse aux Évolutions du Marché": { | |
| "description": """ | |
| **Description:** Les systèmes de recommandation intelligents ajustent leurs suggestions en fonction des tendances actuelles et des évolutions du secteur. | |
| **Rôle:** Ce paramètre garantit que vous restez à la pointe des compétences demandées, vous aidant ainsi à répondre aux exigences du marché du travail en constante évolution. | |
| """, | |
| "image": "standard-quality-control-concept-m.jpg" | |
| }, | |
| "Suivi et Adaptation Continue": { | |
| "description": """ | |
| **Description:** Les systèmes avancés suivent vos progrès, évaluent les résultats obtenus et ajustent les recommandations en fonction de votre évolution. | |
| **Rôle:** Ce paramètre permet d'ajuster les suggestions en temps réel, vous offrant un accompagnement continu et personnalisé tout au long de votre parcours de formation. | |
| """, | |
| "image": "programming-background-with-person-working-with-codes-computer.jpg" | |
| }, | |
| "Amélioration de la Pertinence": { | |
| "description": """ | |
| **Description:** En s'appuyant sur des données et des algorithmes sophistiqués, les systèmes réduisent les erreurs de jugement humaines et optimisent vos investissements en temps et en ressources. | |
| **Rôle:** Ce paramètre assure que les recommandations sont basées sur des analyses précises et pertinentes, maximisant ainsi l'efficacité de vos choix de formation. | |
| """, | |
| "image": "cloud-storage-background-remixed-from-public-domain-by-nasa.jpg" | |
| } | |
| } | |
| DESCRIPTION = """ | |
| <h2 style='color: #7D7D7D;'>Optimisez Votre Parcours de Formation avec Précision | |
| Grace à un système de recommandation Intelligent | |
| </h2> | |
| <p> | |
| Dans un monde où les opportunités d'apprentissage sont aussi vastes que variées, choisir | |
| la formation adéquate peut s'avérer un véritable défi. C’est là qu’un système de recommandation | |
| intelligent entre en jeu. En combinant technologie avancée et compréhension fine de vos besoins | |
| , il transforme le processus de sélection de formation en une expérience personnalisée et efficace. | |
| </p> | |
| <p>Notre technologie avancée utilise des algorithmes intelligents pour analyser vos | |
| compétences actuelles, vos intérêts professionnels et vos aspirations futures. Grâce à | |
| ces informations, nous vous proposons des formations personnalisées qui maximisent votre potentiel | |
| de croissance et vous aident à rester | |
| compétitif dans un monde en constante évolution. L’intégration d’un système de recommandation intelligent dans votre processus | |
| de formation vous permet non seulement de gagner en efficacité, mais aussi d’accroître | |
| votre satisfaction et votre réussite. Il vous offre une voie claire vers | |
| l’acquisition des compétences dont vous avez besoin pour exceller dans votre carrière. | |
| </p> | |
| """ | |
| def recommend_course2(title, numrec=10): | |
| try: | |
| pattern = re.compile(re.escape(title), re.IGNORECASE) | |
| matching_courses = df['course_title'].apply(lambda x: bool(pattern.search(x))) | |
| index = df[matching_courses].index[0] | |
| scores = list(enumerate(matrice_cosine[index])) | |
| sorted_scores = sorted(scores, key=lambda x: x[1], reverse=True) | |
| selected_course_index = [i[0] for i in sorted_scores[1:]] | |
| selected_course_score = [i[1] for i in sorted_scores[1:]] | |
| rec_df = df.iloc[selected_course_index] | |
| rec_df['Similarity_Score'] = selected_course_score | |
| final_recommended_courses = rec_df[["course_title","level", "subject","Similarity_Score"]] | |
| except: | |
| final_recommended_courses= pd.DataFrame({"data": "Aucune Recommendaion disponible!"},index=[0]) | |
| return final_recommended_courses.head(numrec) | |
| MenuNavigation = ["🏠Accueil", "🤺Simulation", "A propos"] | |
| st.sidebar.image(APP_LOGO, width=255) | |
| userChoice= st.sidebar.selectbox("Menu",MenuNavigation) | |
| if userChoice== MenuNavigation[0]: | |
| st.markdown("<h1 style='text-align:center;color: #f27f88; text-transform: uppercase; text-tranform:underline,'><u>{} </u></h1>".format(APP_TITLE),unsafe_allow_html=True) | |
| st.markdown("<p style='text-align:center; color: gray;'><i>Pour une formation de Qualité</i></p>", unsafe_allow_html=True) | |
| st.markdown("<h1 style='text-align:center;color: #f27f88; text-transform: uppercase; text-tranform:underline,'>{}: La meilleure approche pour votre Formation</h1>".format(APP_TITLE),unsafe_allow_html=True) | |
| column, column2= st.columns((1,2)) | |
| with column: | |
| st.image(APP_LOGO) | |
| with column2: | |
| st.write(DESCRIPTION, unsafe_allow_html=True) | |
| st.markdown("<h1 style='text-align:center; text-transform: uppercase; text-tranform:underline; color: #f27f88'>Pourquoi un Système de Recommandation Intelligent est Essentiel ?</h1>",unsafe_allow_html=True)# affiche des titres html | |
| firstCol , secondCol= st.columns((1,1)) | |
| with firstCol: | |
| for param, info in parameters.items(): | |
| col1x, col2x = st.columns([1, 3]) # Define columns with relative widths | |
| with col1x: | |
| st.image(info['image'],use_column_width=True) # width as needed | |
| with col2x: | |
| st.markdown(f""" | |
| ### **{param}** | |
| {info['description']} | |
| """, unsafe_allow_html=True) | |
| with secondCol: | |
| for param, info in params.items(): | |
| col1x, col2x = st.columns([1, 3]) # Define columns with relative widths | |
| with col1x: | |
| st.image(info['image'],use_column_width=True) # width as needed | |
| with col2x: | |
| st.markdown(f""" | |
| ### **{param}** | |
| {info['description']} | |
| """, unsafe_allow_html=True) | |
| elif userChoice==MenuNavigation[1]: | |
| st.markdown("<h1 style='text-align:center; text-transform: uppercase; text-tranform:underline; color: #f27f88'>Besoin d'une recommandation?</h1>",unsafe_allow_html=True) | |
| search_term = st.text_input("Entrez le cours") | |
| num_of_rec = st.sidebar.number_input("Nombre de cours",4,30,7) | |
| filteredData= dataframe_explorer(recommend_course2(search_term, num_of_rec), case=False) | |
| st.dataframe(filteredData,use_container_width=True,hide_index=True) | |
| elif userChoice== MenuNavigation[2]: | |
| st.header("DataSet utilisé pour ce travail en Vue de l'obtention du diplome de Bachelor en Intelligence Artificielle et Big Data ") | |
| filteredDatas= dataframe_explorer(df.drop("url", axis=1), case=False) | |
| st.dataframe(filteredDatas, use_container_width=True) | |
| st.caption("<h4 style='text-align: center;'> Copyrigth @2024 Djitsep Alsira KinKeu</h4>", unsafe_allow_html=True) | |
| # if search_term: | |
| # filtered_DataFrame= dataframe_explorer(df, case=False) | |
| # st.dataframe(filtered_DataFrame, use_container_width=True) | |
| # st.write(recommend_course2(search_term, num_of_rec)) |