Heim >Backend-Entwicklung >Python-Tutorial >Erstellen Sie mit Streamlit Ihr eigenes personalisiertes AWS-Lernerlebnis

Erstellen Sie mit Streamlit Ihr eigenes personalisiertes AWS-Lernerlebnis

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-27 12:27:10832Durchsuche

Create Your Own Personalised AWS Learning Experience with Streamlit

Auf meinem Weg, etwas über AWS und maschinelles Lernen/KI zu lernen, habe ich beschlossen, einen einfachen, aber leistungsstarken AWS-Lernpfad-Empfehler mit Streamlit, natürlicher Sprachverarbeitung oder NLP über ein Mock zu erstellen S3-Umgebung. Diese Anwendung kann AWS-Lernpfade basierend auf Benutzereingaben vorschlagen.  

Also, lasst uns loslegen!

Voraussetzungen

Bevor wir beginnen, stellen Sie sicher, dass Python installiert ist und erstellen Sie einen neuen Projektordner. Installieren Sie dann die folgenden Bibliotheken:

 

pip install streamlit boto3 moto scikit-learn

Schritt 1: Einrichten des Mock S3

Zuerst definieren wir eine Funktion zum Erstellen eines S3-Mocks mit Moto; Dies wird verwendet, um AWS S3 zu simulieren, ohne eine Verbindung zu AWS herzustellen.

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

Schritt 2: Empfehlungsfunktion

Als nächstes definieren wir eine Funktion, die anhand der Eingaben eines Benutzers Vorschläge für Lernpfade unter Verwendung von NLP macht:

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

Schritt 3: Streamlit-Schnittstelle

Lassen Sie uns nun die Benutzeroberfläche unserer Anwendung mit Streamlit entwerfen:

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}")

Schritt 4: Alles zusammenfügen
Kombinieren Sie alle Codeausschnitte in einer einzigen Python-Datei mit dem Namen „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}")

Schritt 5: Führen Sie die App aus
Um die Streamlit-App zu starten, öffnen Sie ein Terminal, ändern Sie das Verzeichnis in Ihren Projektordner und führen Sie Folgendes aus:

streamlit run app.py

Dadurch wird der Streamlit-Server gestartet und die App in Ihrem Standard-Webbrowser geöffnet.

Wie es funktioniert
Die App erstellt einen simulierten S3-Bucket, der mit einigen beispielhaften AWS-Lernressourcen gefüllt ist.

Diese Anwendung empfiehlt die relevantesten Ressourcen unter Verwendung von TF-IDF zusätzlich zur Kosinusähnlichkeit, indem sie die Interessen des Benutzers am Lernen eingibt und auf „Empfehlungen abrufen“ klickt. Den Benutzern werden die Top-3-Empfehlungen angezeigt.

Fazit.

Diese einfache Anwendung verwendet Streamlit, um die NLP-Techniken mit AWS-Diensten zu verbinden, die zugegebenermaßen verspottet werden, um einen interaktiven Lernpfad-Empfehler zu erstellen. Sie können dieses Beispiel erweitern, indem Sie die tatsächlichen AWS-Dienste integrieren, weitere Ressourcen hinzufügen oder ausgefeiltere Empfehlungsalgorithmen verwenden.

Dies ist ein sehr einfaches Beispiel und kann für die Produktion erheblich verbessert werden. Denken Sie daran, dass Sicherheit, Skalierbarkeit und Benutzererfahrung wichtige Aspekte bei der Entwicklung von Anwendungen für die reale Welt sind.

Vielen Dank für das Lesen!

Das obige ist der detaillierte Inhalt vonErstellen Sie mit Streamlit Ihr eigenes personalisiertes AWS-Lernerlebnis. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn