Spaces:
Sleeping
Sleeping
| """ | |
| Simple AI Text Humanizer using Gradio | |
| A clean text-to-text interface for humanizing AI-generated content. | |
| """ | |
| import gradio as gr | |
| import time | |
| from typing import Optional | |
| from transformer.app import AdvancedAcademicTextHumanizer, download_nltk_resources | |
| # Global humanizer instance | |
| humanizer_instance = None | |
| def initialize_humanizer(): | |
| """Initialize the humanizer model.""" | |
| global humanizer_instance | |
| if humanizer_instance is None: | |
| try: | |
| print("🔄 Downloading NLTK resources...") | |
| # Download NLTK resources | |
| download_nltk_resources() | |
| print("🔄 Initializing lightweight models...") | |
| # Initialize humanizer with lightweight, fast settings | |
| humanizer_instance = AdvancedAcademicTextHumanizer( | |
| sentence_model="fast", # Uses all-MiniLM-L6-v2 (lightweight) | |
| paraphrase_model="fast", # Uses t5-small (fast) | |
| enable_advanced_models=True, | |
| ai_avoidance_mode=True | |
| ) | |
| print("✅ All models loaded successfully and ready!") | |
| return "✅ Models loaded successfully" | |
| except Exception as e: | |
| error_msg = f"❌ Error loading models: {str(e)}" | |
| print(error_msg) | |
| return error_msg | |
| return "✅ Models already loaded" | |
| def humanize_text(input_text: str, use_passive: bool, use_synonyms: bool, use_paraphrasing: bool) -> str: | |
| """Transform AI text to human-like text.""" | |
| if not input_text.strip(): | |
| return "Please enter some text to transform." | |
| global humanizer_instance | |
| if humanizer_instance is None: | |
| init_result = initialize_humanizer() | |
| if "Error" in init_result: | |
| return init_result | |
| try: | |
| # Transform the text | |
| transformed = humanizer_instance.humanize_text( | |
| input_text, | |
| use_passive=use_passive, | |
| use_synonyms=use_synonyms, | |
| use_paraphrasing=use_paraphrasing | |
| ) | |
| return transformed | |
| except Exception as e: | |
| return f"❌ Error during transformation: {str(e)}" | |
| def create_interface(): | |
| """Create the Gradio interface.""" | |
| with gr.Blocks(title="AI Text Humanizer", theme=gr.themes.Soft()) as interface: | |
| gr.Markdown("# 🤖➡️🧔🏻♂️ AI Text Humanizer") | |
| gr.Markdown("Transform AI-generated text into human-like content using advanced ML models.") | |
| with gr.Row(): | |
| with gr.Column(): | |
| input_text = gr.Textbox( | |
| label="Input Text", | |
| placeholder="Paste your AI-generated text here...", | |
| lines=10, | |
| max_lines=20 | |
| ) | |
| with gr.Row(): | |
| use_passive = gr.Checkbox( | |
| label="Passive Voice Transformation", | |
| value=False, | |
| info="Convert active voice to passive" | |
| ) | |
| use_synonyms = gr.Checkbox( | |
| label="Synonym Replacement", | |
| value=True, | |
| info="AI-powered contextual synonyms" | |
| ) | |
| use_paraphrasing = gr.Checkbox( | |
| label="Neural Paraphrasing", | |
| value=True, | |
| info="T5 sentence-level rewriting" | |
| ) | |
| transform_btn = gr.Button("🚀 Transform Text", variant="primary") | |
| with gr.Column(): | |
| output_text = gr.Textbox( | |
| label="Transformed Text", | |
| lines=10, | |
| max_lines=20, | |
| interactive=False | |
| ) | |
| # Initialize models on startup | |
| gr.Markdown("### Model Status") | |
| status_text = gr.Textbox( | |
| label="Initialization Status", | |
| value="Click 'Transform Text' to load models...", | |
| interactive=False | |
| ) | |
| # Connect the transformation function | |
| transform_btn.click( | |
| fn=humanize_text, | |
| inputs=[input_text, use_passive, use_synonyms, use_paraphrasing], | |
| outputs=output_text | |
| ) | |
| # Initialize models when interface loads | |
| interface.load( | |
| fn=initialize_humanizer, | |
| outputs=status_text | |
| ) | |
| gr.Markdown("---") | |
| gr.Markdown("**Note:** First-time model loading may take a few moments.") | |
| return interface | |
| def main(): | |
| """Launch the Gradio interface.""" | |
| interface = create_interface() | |
| # Launch with Mac-optimized settings | |
| interface.launch( | |
| show_api=False, | |
| share=False, | |
| debug=False, | |
| show_error=True | |
| ) | |
| if __name__ == "__main__": | |
| main() |