Djitsep's picture
Update app.py
8f07dd0 verified
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")
@st.cache_data
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>
"""
@st.cache_data
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))