Maison >développement back-end >Tutoriel Python >Créez votre propre expérience d'apprentissage AWS personnalisée avec Streamlit

Créez votre propre expérience d'apprentissage AWS personnalisée avec Streamlit

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-27 12:27:10790parcourir

Create Your Own Personalised AWS Learning Experience with Streamlit

Dans mon parcours vers l'apprentissage d'AWS et de l'apprentissage automatique/IA, j'ai décidé de créer un outil de recommandation de parcours d'apprentissage AWS simple mais puissant en utilisant Streamlit, le traitement du langage naturel ou le PNL via une simulation. Environnement S3. Cette application sera en mesure de suggérer des parcours d'apprentissage AWS en fonction des entrées de l'utilisateur.  

Alors, allons-y !

Prérequis

Avant de commencer, assurez-vous que Python est installé et créez un nouveau dossier de projet. Ensuite, installez les bibliothèques ci-dessous :

 

pip install streamlit boto3 moto scikit-learn

Étape 1 : Configuration du Mock S3

Tout d'abord, nous définissons une fonction pour créer un S3 simulé à l'aide de Moto ; cela sera utilisé pour simuler AWS S3 sans se connecter à AWS.

import boto3
from moto import mock_s3
import json

def setup_mock_s3():
    s3 = boto3.resource("s3", region_name="us-east-1")
    bucket_name = "mock-learning-paths"
    s3.create_bucket(Bucket=bucket_name)
    data = {
        "resources": [
            {"title": "Introduction to AWS", "tags": "AWS, Cloud Computing, Basics"},
            {"title": "Deep Learning on AWS", "tags": "AWS, Deep Learning, AI"},
            {"title": "NLP with SageMaker", "tags": "AWS, NLP, Machine Learning"},
            {"title": "Serverless with AWS Lambda", "tags": "AWS, Serverless, Lambda"},
        ]
    }
    s3.Bucket(bucket_name).put_object(Key="mock_resources.json", Body=json.dumps(data))
    return bucket_name

Étape 2 : Fonction de recommandation

Ensuite, nous définirons une fonction qui, compte tenu de la contribution d'un utilisateur, fera des suggestions de parcours d'apprentissage en utilisant du NLP :

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

def recommend_learning_path(user_input, bucket_name):
    s3 = boto3.client("s3", region_name="us-east-1")
    obj = s3.get_object(Bucket=bucket_name, Key="mock_resources.json")
    data = json.loads(obj['Body'].read().decode('utf-8'))

    resources = data["resources"]
    titles = [resource["title"] for resource in resources]
    tags = [resource["tags"] for resource in resources]

    corpus = tags + [user_input]
    vectorizer = TfidfVectorizer()
    tfidf_matrix = vectorizer.fit_transform(corpus)
    similarity = cosine_similarity(tfidf_matrix[-1], tfidf_matrix[:-1])

    scores = similarity.flatten()
    ranked_indices = scores.argsort()[::-1]

    recommendations = [titles[i] for i in ranked_indices[:3]]
    return recommendations

Étape 3 : Interface rationalisée

Concevons maintenant l'interface de notre application à l'aide de Streamlit :

import streamlit as st

st.title("AWS Learning Path Recommender")

user_input = st.text_input("What do you want to learn about AWS?", "I want to learn about AWS and AI")

if st.button("Get Recommendations"):
    with mock_s3():
        bucket_name = setup_mock_s3()
        recommendations = recommend_learning_path(user_input, bucket_name)

    st.subheader("Recommended Learning Path:")
    for i, rec in enumerate(recommendations, 1):
        st.write(f"{i}. {rec}")

Étape 4 : Assembler le tout
Combinez tous les extraits de code dans un seul fichier Python nommé « app.py » :

import streamlit as st
import boto3
from moto import mock_s3
import json
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

# [Insert setup_mock_s3 function here]

# [Insert recommend_learning_path function here]

st.title("AWS Learning Path Recommender")

user_input = st.text_input("What do you want to learn about AWS?", "I want to learn about AWS and AI")

if st.button("Get Recommendations"):
    with mock_s3():
        bucket_name = setup_mock_s3()
        recommendations = recommend_learning_path(user_input, bucket_name)

    st.subheader("Recommended Learning Path:")
    for i, rec in enumerate(recommendations, 1):
        st.write(f"{i}. {rec}")

Étape 5 : Exécutez l'application
Pour démarrer l'application Streamlit, ouvrez un terminal, remplacez le répertoire par le dossier de votre projet et exécutez :

streamlit run app.py

Cela démarrera le serveur Streamlit et ouvrira l'application dans votre navigateur Web par défaut.

Comment ça marche
L'application crée un compartiment S3 fictif rempli de quelques exemples de ressources d'apprentissage AWS.

Cette application recommande les ressources les plus pertinentes, en utilisant TF-IDF en plus de la similarité cosinus, en saisissant les intérêts de l'utilisateur dans l'apprentissage et en cliquant sur « Obtenir des recommandations ». Les 3 principales recommandations seront présentées aux utilisateurs.

Conclusion.

Cette application simple utilise Streamlit pour coller les techniques de PNL avec les services AWS, certes moqués, afin de créer un outil de recommandation de parcours d'apprentissage interactif. Vous pouvez étendre cet exemple en intégrant les services AWS réels, en ajoutant plus de ressources ou en utilisant des algorithmes de recommandation plus sophistiqués.

Il s'agit d'un exemple très simple et peut être considérablement amélioré pour la production. N'oubliez pas que la sécurité, l'évolutivité et l'expérience utilisateur sont des préoccupations majeures lors du développement d'applications pour le monde réel.

Merci beaucoup d'avoir lu ceci !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn