Humanizer-try / app.py
VarunRavichander's picture
Update app.py
f3620c1 verified
import streamlit as st
import nltk
import os
from enhanced_text_humanizer import EnhancedTextHumanizer
import time
# Set NLTK data path
nltk.data.path.append('./nltk_data')
# Download required NLTK resources at startup
@st.cache_resource
def download_nltk_resources():
try:
# Create NLTK data directory if it doesn't exist
os.makedirs('nltk_data', exist_ok=True)
# Download required resources
nltk.download('punkt', download_dir='./nltk_data')
nltk.download('punkt_tab', download_dir='./nltk_data')
nltk.download('averaged_perceptron_tagger', download_dir='./nltk_data')
nltk.download('wordnet', download_dir='./nltk_data')
nltk.download('omw-1.4', download_dir='./nltk_data')
return True
except Exception as e:
st.error(f"Error downloading NLTK resources: {e}")
return False
def initialize_humanizer():
# First ensure NLTK resources are downloaded
resources_downloaded = download_nltk_resources()
with st.spinner('Loading language models... This may take a moment.'):
humanizer = EnhancedTextHumanizer()
return humanizer
def main():
st.set_page_config(
page_title="Text Humanizer App",
page_icon="🤖",
layout="wide"
)
st.title("🤖 Enhanced Text Humanizer")
st.markdown("""
Transform formal text into more natural, human-like language with various personality styles and regional dialects.
""")
# Initialize the humanizer
if 'humanizer' not in st.session_state:
st.session_state.humanizer = initialize_humanizer()
# Create two columns for input and output
col1, col2 = st.columns(2)
with col1:
st.subheader("Input Text")
input_text = st.text_area(
"Enter your text here:",
height=200,
placeholder="Type or paste your text here..."
)
st.subheader("Customization Options")
# Personality selection
personality = st.selectbox(
"Select Personality Style:",
['casual', 'formal', 'academic', 'enthusiastic'],
help="Choose the personality style for the output text"
)
# Regional dialect selection
dialect = st.selectbox(
"Select Regional Dialect:",
[None, 'us_south', 'british'],
help="Choose a regional dialect (optional)"
)
# Emotional tone selection
emotional_tone = st.selectbox(
"Select Emotional Tone:",
[None, 'positive', 'negative', 'neutral'],
help="Choose the emotional tone (optional)"
)
# Transformation intensity
intensity = st.slider(
"Transformation Intensity:",
min_value=0.0,
max_value=1.0,
value=0.7,
step=0.1,
help="Control how much the text is transformed"
)
# Error inclusion
add_errors = st.checkbox(
"Include Natural Speech Errors",
value=True,
help="Add realistic speech/typing errors"
)
with col2:
st.subheader("Output Text")
if st.button("Transform Text", type="primary"):
if input_text.strip():
try:
with st.spinner('Transforming text...'):
humanized_text = st.session_state.humanizer.humanize_text(
input_text,
intensity=intensity,
personality=personality,
add_errors=add_errors,
regional_dialect=dialect,
emotional_tone=emotional_tone
)
st.text_area(
"Transformed Text:",
value=humanized_text,
height=400,
disabled=True
)
# Show transformation details
st.success("Text transformation complete!")
st.markdown("### Transformation Details")
st.markdown(f"""
- **Personality**: {personality}
- **Dialect**: {dialect if dialect else 'None'}
- **Emotional Tone**: {emotional_tone if emotional_tone else 'Auto-detected'}
- **Intensity**: {intensity}
- **Speech Errors**: {'Enabled' if add_errors else 'Disabled'}
""")
except Exception as e:
st.error(f"An error occurred: {str(e)}")
else:
st.warning("Please enter some text to transform.")
# Add footer with information
st.markdown("---")
st.markdown("""
### About This Tool
This text humanizer uses advanced NLP techniques to transform formal text into more natural, human-like language.
It can apply different personality styles, regional dialects, and emotional tones to the text.
**Features:**
- Multiple personality styles
- Regional dialect support
- Emotional tone adjustment
- Controllable transformation intensity
- Natural speech error simulation
""")
if __name__ == "__main__":
main()