首頁 >後端開發 >Python教學 >使用 Streamlit 創建您自己的個人化 AWS 學習體驗

使用 Streamlit 創建您自己的個人化 AWS 學習體驗

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-27 12:27:10834瀏覽

Create Your Own Personalised AWS Learning Experience with Streamlit

在學習AWS 和機器學習/AI 的過程中,我決定透過模擬使用Streamlit、自然語言處理或NLP 建立一個簡單但功能強大的AWS 學習路徑推薦器S3環境。該應用程式將能夠根據使用者輸入建議 AWS 學習路徑。  

那麼,讓我們開始吧!

先決條件

開始之前,請確保已安裝 Python 並建立一個新的專案資料夾。然後,安裝以下程式庫:

 

pip install streamlit boto3 moto scikit-learn

第 1 步:設定模擬 S3

首先,我們定義一個函數來使用 Moto 建立模擬 S3;這將用於模擬 AWS S3,而無需連接到 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

第2步:建議功能

接下來,我們將定義一個函數,根據使用者的輸入,該函數將利用一些 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

第 3 步:Streamlit 介面

現在讓我們使用 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}")

第四步:將它們放在一起
將所有程式碼片段合併到一個名為「app.py」的 Python 檔案:

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

第 5 步:執行應用程式
要啟動 Streamlit 應用程序,請打開終端,將目錄更改為您的專案資料夾並運行:

streamlit run app.py

這將啟動 Streamlit 伺服器並在預設網頁瀏覽器中開啟應用程式。

如何運作
該應用程式會建立一個模擬 S3 儲存桶,其中填充了一些範例 AWS 學習資源。

該應用程式透過輸入使用者的學習興趣並點擊“獲取推薦”,使用 TF-IDF 和餘弦相似度來推薦最相關的資源。前 3 名推薦將顯示給使用者。

結論。

這個簡單的應用程式使用 Streamlit 將 NLP 技術與 AWS 服務結合在一起,以建立互動式學習路徑推薦器。您可以透過整合實際的 AWS 服務、新增更多資源或使用更複雜的推薦演算法來擴展此範例。

這是一個非常簡單的範例,可以在生產中進行很多改進。請記住,安全性、可擴展性和使用者體驗是為現實世界開發應用程式時的主要關注點。

非常感謝您閱讀本文!

以上是使用 Streamlit 創建您自己的個人化 AWS 學習體驗的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn