engrphoenix's picture
Update app.py
2e98d51 verified
raw
history blame
2.82 kB
import streamlit as st
from googletrans import Translator # Free Google Translate API
from transformers import pipeline
import requests
# Initialize the Google Translator
translator = Translator()
# Streamlit UI setup
st.set_page_config(page_title="AI-Powered Language Learning Assistant", page_icon="🧠", layout="wide")
# Header and introduction
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
- Learn and practice new vocabulary
- Get grammar feedback.
""")
# Input field for text
text_input = st.text_input("Enter the text you want to translate or practice", "")
# Select target language for translation
language = st.selectbox("Select the language to translate to", ["es", "fr", "de", "it", "pt", "ru"])
if text_input:
# Translate text using googletrans
st.subheader(f"Original Text: {text_input}")
translated_text = translator.translate(text_input, dest=language).text
# Display translation
st.markdown(f"### Translated Text to {language.upper()}:")
st.write(translated_text)
# Show pronunciation tip
st.subheader("Pronunciation Tip:")
st.write("Use Google Translate or Forvo to practice pronunciation.")
# Grammar Check (using LanguageTool)
st.subheader("Grammar Feedback:")
grammar_check_url = "https://api.languagetool.org/v2/check"
params = {
"text": text_input,
"language": "en-US"
}
response = requests.post(grammar_check_url, data=params)
if response.status_code == 200:
result = response.json()
if result['matches']:
st.write("### Grammar Issues Found:")
for match in result['matches']:
st.write(f"- **{match['message']}** at position {match['offset']}-{match['offset']+match['length']}")
else:
st.write("No grammar issues found!")
else:
st.write("Grammar check failed. Try again later.")
# Vocabulary practice section using Hugging Face's BERT
st.markdown("---")
st.header("Vocabulary Practice")
word_input = st.text_input("Enter a word to get its definition and synonyms", "")
if word_input:
# Using Hugging Face's BERT model for related words (synonyms)
try:
word_model = pipeline("fill-mask", model="bert-base-uncased") # Using BERT to predict related words
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("Error fetching vocabulary practice data.")
# Footer for engagement
st.markdown("""
---
**Need more practice?** Visit [Google Translate](https://translate.google.com) for real-time translations and pronunciation!
""")