ホームページ >バックエンド開発 >Python チュートリアル >Streamlit を使用して独自のパーソナライズされた AWS 学習体験を作成する

Streamlit を使用して独自のパーソナライズされた AWS 学習体験を作成する

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-27 12:27:10790ブラウズ

Create Your Own Personalised AWS Learning Experience with Streamlit

AWS と機械学習/AI について学ぶ旅の中で、Streamlit、自然言語処理、またはモックによる NLP を使用して、シンプルでありながら強力な AWS Learning Path Recommender を作成することにしました。 S3環境。このアプリケーションは、ユーザーの入力に基づいて AWS の学習パスを提案できます。  

それでは、本題に入りましょう!

前提条件

始める前に、Python がインストールされていることを確認し、新しいプロジェクト フォルダーを作成してください。次に、以下のライブラリをインストールします:

 

pip install streamlit boto3 moto scikit-learn

ステップ 1: モック S3 のセットアップ

まず、Moto を使用してモック S3 を作成する関数を定義します。これは、AWS に接続せずに AWS S3 をシミュレートするために使用されます。

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

ステップ 4: すべてをまとめる
すべてのコード スニペットを「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 サーバーが起動し、デフォルトの Web ブラウザでアプリが開きます。

仕組み
アプリは、いくつかの AWS 学習リソースの例が入力されたモック S3 バケットを作成します。

このアプリケーションは、学習におけるユーザーの関心を入力して「推奨事項を取得」をクリックすることにより、コサイン類似度に加えて TF-IDF を使用して、最も関連性の高いリソースを推奨します。上位 3 つの推奨事項がユーザーに表示されます。

結論

この単純なアプリケーションは、Streamlit を使用して NLP テクニックと AWS サービス (明らかにモック) を結合し、インタラクティブな学習パスのレコメンダーを作成します。実際の AWS サービスを統合したり、リソースを追加したり、より洗練された推奨アルゴリズムを使用したりすることで、この例を拡張できます。

これは非常に単純な例であり、本番環境に向けて大幅に改善することができます。現実世界向けのアプリケーションを開発する際には、セキュリティ、スケーラビリティ、およびユーザー エクスペリエンスが大きな懸念事項であることを忘れないでください。

読んでいただきありがとうございます!

以上がStreamlit を使用して独自のパーソナライズされた AWS 学習体験を作成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。