π― Professional AI Text Humanizer
Clean, Structure-Preserving, Error-Free Processing
Professional-grade humanization without mistakes or structural changes
# Professional AI Text Humanizer for Hugging Face Spaces # Clean, Structure-Preserving, Error-Free Humanization import gradio as gr import time import os import sys # Import our professional humanizer from professional_humanizer import ProfessionalAITextHumanizer # Global variables humanizer = None initialization_status = {} def initialize_professional_humanizer(): """Initialize the professional humanizer""" global humanizer, initialization_status print("π― Initializing Professional AI Text Humanizer...") print("π’ Clean, Structure-Preserving, Error-Free Processing") try: # Initialize with professional settings humanizer = ProfessionalAITextHumanizer( enable_gpu=True, preserve_structure=True # Key feature for structure preservation ) initialization_status = { "humanizer_loaded": True, "advanced_similarity": humanizer.similarity_model is not None, "professional_paraphrasing": humanizer.paraphraser is not None, "tfidf_fallback": humanizer.tfidf_vectorizer is not None, "structure_preservation": humanizer.preserve_structure, "error_free_processing": True, "professional_quality": True, "total_features": 7, "enabled_features": sum([ bool(humanizer.similarity_model), bool(humanizer.paraphraser), bool(humanizer.tfidf_vectorizer), humanizer.preserve_structure, True, # Professional mappings True, # Error-free processing True # Quality control ]) } print("β Professional humanizer initialized successfully!") print(f"π― Professional completeness: {(initialization_status['enabled_features']/initialization_status['total_features'])*100:.1f}%") return True except Exception as e: print(f"β Error initializing professional humanizer: {e}") initialization_status = {"error": str(e), "humanizer_loaded": False} return False def humanize_text_professional_hf(text, style, intensity, bypass_detection, preserve_structure, quality_threshold, show_advanced_metrics=True): """ Professional humanization interface for HF Spaces """ if not text.strip(): return "β οΈ Please enter some text to humanize.", "", "", "" if humanizer is None: return "β Error: Professional humanizer not loaded. Please refresh the page.", "", "", "" try: start_time = time.time() # Use professional humanization result = humanizer.humanize_text_professional( text=text, style=style.lower(), intensity=intensity, bypass_detection=bypass_detection, preserve_meaning=True, quality_threshold=quality_threshold ) processing_time = (time.time() - start_time) * 1000 # Format main results main_stats = f"""**π― Professional Results:** - **Quality Score**: {result['similarity_score']:.3f} (Meaning preservation) - **Detection Evasion**: {result['detection_evasion_score']:.3f} (Bypass likelihood) - **Structure Preserved**: {'β YES' if result['structure_preserved'] else 'β NO'} - **Error-Free**: {'β YES' if result['quality_metrics'].get('error_free', True) else 'β NO'} - **Processing Time**: {processing_time:.1f}ms - **Style**: {result.get('style', style).title()} - **Intensity**: {intensity}""" # Format advanced metrics advanced_stats = f"""**π Technical Metrics:** - **Perplexity Score**: {result['perplexity_score']:.3f} (Higher = More natural) - **Burstiness Score**: {result['burstiness_score']:.3f} (Higher = More varied) - **Word Count Change**: {result['quality_metrics'].get('word_count_change', 0)} - **Character Count Change**: {result['quality_metrics'].get('character_count_change', 0)} - **Sentence Count**: {result['quality_metrics'].get('sentence_count', 0)} **π§ Professional Transformations Applied:** {chr(10).join([f'β’ {change}' for change in result['changes_made']]) if result['changes_made'] else 'β’ No changes needed - already optimal'}""" # Format feature status feature_status = f"""**π’ Professional Features Status:** - Structure Preservation: {'β ACTIVE' if initialization_status.get('structure_preservation') else 'β INACTIVE'} - Error-Free Processing: {'β ACTIVE' if initialization_status.get('error_free_processing') else 'β INACTIVE'} - Advanced Similarity: {'β ENABLED' if initialization_status.get('advanced_similarity') else 'β DISABLED'} - Professional Paraphrasing: {'β ENABLED' if initialization_status.get('professional_paraphrasing') else 'β DISABLED'} - Quality Control: {'β ENABLED' if initialization_status.get('professional_quality') else 'β DISABLED'} - Professional Completeness: {(initialization_status.get('enabled_features', 0)/initialization_status.get('total_features', 7))*100:.0f}%""" # Status indicator if result['detection_evasion_score'] > 0.8 and result['similarity_score'] > 0.85: status = "π EXCELLENT - High quality, professional humanization" elif result['detection_evasion_score'] > 0.6 and result['similarity_score'] > 0.75: status = "β GOOD - Quality professional result" else: status = "β οΈ MODERATE - Acceptable but could be improved" full_stats = main_stats + "\n\n" + (advanced_stats if show_advanced_metrics else "") + "\n\n" + feature_status return result['humanized_text'], full_stats, status, f"Quality: {result['similarity_score']:.3f} | Evasion: {result['detection_evasion_score']:.3f}" except Exception as e: error_msg = f"β Error processing text: {str(e)}" return error_msg, "", "β Processing failed", "" def get_professional_feature_status(): """Get current professional feature status for display""" if not initialization_status.get('humanizer_loaded'): return "β Professional Humanizer Not Loaded", "red" enabled = initialization_status.get('enabled_features', 0) total = initialization_status.get('total_features', 7) completeness = (enabled / total) * 100 if completeness >= 90: return f"π Professional Grade Ready ({completeness:.0f}%)", "green" elif completeness >= 70: return f"β Professional Features Active ({completeness:.0f}%)", "green" elif completeness >= 50: return f"β οΈ Limited Professional Features ({completeness:.0f}%)", "orange" else: return f"β Basic Mode Only ({completeness:.0f}%)", "red" # Initialize the professional humanizer on startup initialization_success = initialize_professional_humanizer() # Create the professional Gradio interface with gr.Blocks( title="π― Professional AI Text Humanizer - Clean & Structure-Preserving", theme=gr.themes.Soft(), css=""" .main-header { text-align: center; background: linear-gradient(135deg, #2c3e50 0%, #3498db 100%); color: white; padding: 30px; border-radius: 15px; margin-bottom: 30px; box-shadow: 0 8px 25px rgba(0,0,0,0.15); } .professional-badge { background: linear-gradient(135deg, #27ae60 0%, #2ecc71 100%); color: white; padding: 8px 16px; border-radius: 20px; display: inline-block; margin: 5px; font-weight: bold; } .feature-status { text-align: center; padding: 15px; border-radius: 10px; margin: 15px 0; font-weight: bold; font-size: 1.1em; } .status-green { background-color: #d4f4dd; border: 2px solid #27ae60; color: #1e8449; } .status-orange { background-color: #fdeaa7; border: 2px solid #f39c12; color: #b7950b; } .status-red { background-color: #fadbd8; border: 2px solid #e74c3c; color: #c0392b; } .professional-box { background: linear-gradient(135deg, #2c3e50 0%, #3498db 100%); color: white; padding: 20px; border-radius: 15px; margin: 15px 0; } .feature-box { background: #f8f9fa; padding: 15px; border-radius: 10px; border-left: 5px solid #3498db; margin: 10px 0; } .quality-highlight { background: linear-gradient(135deg, #e8f5e8 0%, #d5f4e6 100%); padding: 15px; border-radius: 10px; margin: 10px 0; border: 2px solid #27ae60; } """ ) as demo: gr.HTML(f"""
Clean, Structure-Preserving, Error-Free Processing
Professional-grade humanization without mistakes or structural changes
This professional humanizer is designed for high-quality, error-free output:
When enabled, maintains:
Controls how conservative the humanization is: