Spaces:
Running
Running
File size: 4,500 Bytes
ab78615 210d38b d6f26da ab78615 d6f26da 8b29264 ab78615 210d38b d6f26da ab78615 210d38b ab78615 8b29264 ab78615 d6f26da ab78615 d6f26da ab78615 d6f26da ab78615 d6f26da 8b29264 d6f26da ab78615 d6f26da ab78615 d6f26da ab78615 8b29264 ab78615 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
import streamlit as st
import requests
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
# Set up the Streamlit page
st.title("AI Opportunity Finder for Youth")
st.write("Find Scholarships, Internships, Online Courses, and more!")
# Function to get scholarships data from a mock API
def get_scholarships(country, interests):
# Example: Replace with a real API URL (mocked for demonstration)
url = f"https://jsonplaceholder.typicode.com/posts" # Mock API
response = requests.get(url)
if response.status_code == 200:
posts = response.json()[:5] # Take only the first 5 posts as mock scholarships
return [{"title": f"Scholarship {i+1}", "description": post.get('body', 'No description available'), "eligibility": "Any student from any background."} for i, post in enumerate(posts)]
else:
return []
# Function to get internships data from a mock API
def get_internships(country):
# Example: Replace with a real API URL (mocked for demonstration)
url = f"https://jsonplaceholder.typicode.com/posts" # Mock API for testing
response = requests.get(url)
if response.status_code == 200:
return [{"jobtitle": f"Internship {i+1}", "company": "Sample Company", "location": "Remote", "snippet": "Description of the internship."} for i in range(5)]
else:
return []
# Function to recommend opportunities based on user input
def recommend_opportunities(user_interests, user_skills, opportunities):
user_profile = [f"{user_interests} {user_skills}"]
opportunities_text = [f"{opportunity.get('description', 'No description available')} {opportunity.get('eligibility', 'No eligibility available')}" for opportunity in opportunities]
# Vectorize the text using TF-IDF
vectorizer = TfidfVectorizer(stop_words='english')
tfidf_matrix = vectorizer.fit_transform(opportunities_text + user_profile)
# Compute cosine similarity
cosine_sim = cosine_similarity(tfidf_matrix[-1], tfidf_matrix[:-1])
# Get the top 5 recommendations
recommendations = cosine_sim[0].argsort()[-5:][::-1]
return [opportunities[i] for i in recommendations]
# Form to gather user profile and country selection
with st.form(key='user_form'):
st.sidebar.header("User Profile")
location = st.selectbox("Select your Country", ["Pakistan", "USA", "Germany", "India", "UK", "Australia"]) # Add more countries as needed
skills = st.text_input("Skills (e.g., Python, Marketing)")
interests = st.text_input("Interests (e.g., Technology, Science)")
submit_button = st.form_submit_button("Find Opportunities")
# Fetch data based on the user input
if submit_button:
# Fetch scholarships and internships based on the selected country and profile
scholarships = get_scholarships(location, interests)
internships = get_internships(location)
# Display Scholarships
if scholarships:
st.write("Scholarships found:")
for scholarship in scholarships:
st.write(f"Title: {scholarship['title']}")
st.write(f"Description: {scholarship.get('description', 'No description available')}")
st.write(f"Eligibility: {scholarship.get('eligibility', 'No eligibility available')}")
st.write("---")
else:
st.write("No scholarships found for the selected country.")
# Display Internships
if internships:
st.write("Internships found:")
for internship in internships:
st.write(f"Title: {internship['jobtitle']}")
st.write(f"Company: {internship['company']}")
st.write(f"Location: {internship['location']}")
st.write(f"Snippet: {internship['snippet']}")
st.write("---")
else:
st.write("No internships found for the selected country.")
# AI Recommendations based on interests and skills
all_opportunities = scholarships + internships
recommended_opportunities = recommend_opportunities(interests, skills, all_opportunities)
st.write("AI-based Recommended Opportunities based on your profile:")
for opportunity in recommended_opportunities:
st.write(f"Title: {opportunity['title']}")
st.write(f"Description: {opportunity.get('description', 'No description available')}")
st.write(f"Eligibility: {opportunity.get('eligibility', 'Not available')}")
st.write("---")
|