|
import streamlit as st |
|
import requests |
|
from transformers import pipeline |
|
|
|
|
|
st.set_page_config(page_title="AI-Powered Language Learning Assistant", page_icon="🧠", layout="wide") |
|
|
|
|
|
st.title("🧠 AI-Powered Language Learning Assistant") |
|
st.markdown(""" |
|
Welcome to your AI-powered language assistant! Here you can: |
|
- Translate words or sentences to different languages (using LibreTranslate API) |
|
- Learn and practice new vocabulary |
|
- Get grammar feedback. |
|
""") |
|
|
|
|
|
def translate_text(text, target_language): |
|
url = "https://libretranslate.de/translate" |
|
payload = { |
|
'q': text, |
|
'source': 'en', |
|
'target': target_language |
|
} |
|
response = requests.post(url, data=payload) |
|
if response.status_code == 200: |
|
return response.json()['translatedText'] |
|
else: |
|
return "Translation failed." |
|
|
|
|
|
st.markdown("---") |
|
st.header("Vocabulary Practice") |
|
word_input = st.text_input("Enter a word to get its definition and synonyms", "") |
|
if word_input: |
|
try: |
|
word_model = pipeline("fill-mask", model="bert-base-uncased") |
|
result = word_model(f"The synonym of {word_input} is [MASK].") |
|
st.write(f"Synonyms or related words for **{word_input}**: {result}") |
|
except Exception as e: |
|
st.error(f"Error fetching vocabulary practice data: {e}") |
|
|
|
|
|
st.markdown("---") |
|
st.header("Translation") |
|
text_input = st.text_input("Enter the text you want to translate", "") |
|
language = st.selectbox("Select the language to translate to", ["es", "fr", "de", "it", "pt", "ru"]) |
|
|
|
if text_input: |
|
translated_text = translate_text(text_input, language) |
|
st.subheader(f"Translated Text to {language.upper()}:") |
|
st.write(translated_text) |
|
|
|
|
|
st.markdown(""" |
|
--- |
|
**Need more practice?** Visit [LibreTranslate API](https://libretranslate.de/) for real-time translations and Hugging Face for more language models! |
|
""") |
|
|