在學習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中文網其他相關文章!