>백엔드 개발 >파이썬 튜토리얼 >Streamlit을 사용하여 나만의 맞춤형 AWS 학습 경험 만들기

Streamlit을 사용하여 나만의 맞춤형 AWS 학습 경험 만들기

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-27 12:27:10795검색

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단계: Mock 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을 사용하여 애플리케이션의 인터페이스를 디자인해 보겠습니다.

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 서버가 부팅되고 기본 웹 브라우저에서 앱이 열립니다.

작동 방식
앱은 몇 가지 AWS 학습 리소스 예시로 채워진 모의 S3 버킷을 생성합니다.

이 애플리케이션은 학습에 대한 사용자의 관심분야를 입력하고 "추천 받기"를 클릭하여 코사인 유사성 외에 TF-IDF를 사용하여 가장 관련성이 높은 리소스를 추천합니다. 상위 3개 추천이 사용자에게 표시됩니다.

결론.

이 간단한 애플리케이션은 Streamlit을 사용하여 NLP 기술을 AWS 서비스와 결합하여 대화형 학습 경로 추천자를 생성합니다. 실제 AWS 서비스를 통합하거나 더 많은 리소스를 추가하거나 더 정교한 추천 알고리즘을 사용하여 이 예를 확장할 수 있습니다.

이것은 매우 간단한 예이며 제작을 위해 많이 개선될 수 있습니다. 실제 세계에 맞는 애플리케이션을 개발하는 동안 보안, 확장성 및 사용자 경험이 주요 관심사라는 점을 기억하십시오.

이 글을 읽어주셔서 정말 감사합니다!

위 내용은 Streamlit을 사용하여 나만의 맞춤형 AWS 학습 경험 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.