Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import re | |
| import torch | |
| from transformers import pipeline | |
| # Initialize the translation pipeline | |
| def initialize_translator(): | |
| try: | |
| device = 0 if torch.cuda.is_available() else -1 # Use GPU if available, otherwise CPU | |
| return pipeline("translation", model="Helsinki-NLP/opus-mt-tc-big-en-es", device=device) | |
| except Exception as e: | |
| raise RuntimeError(f"Failed to initialize translation pipeline: {e}") | |
| translator = initialize_translator() | |
| # Define the custom glossary | |
| custom_glossary = { | |
| "Change Order": "Orden de Cambio", | |
| "RFI (Request for Information)": "RFI (Solicitud de Información)", | |
| "Submittals": "Envíos", | |
| "Punch List": "Lista de Reparaciones", | |
| "GMP (Guaranteed Maximum Price)": "GMP (Precio Máximo Garantizado)", | |
| "Critical Path Method (CPM)": "Método de Ruta Crítica (CPM)", | |
| "LEED Certification": "Certificación LEED", | |
| "BIM (Building Information Modeling)": "BIM (Modelado de Información de Construcción)", | |
| "Retainage": "Retención", | |
| "Precast Concrete": "Hormigón Prefabricado", | |
| "Aggregate": "Áridos", | |
| "Allowance": "Asignación", | |
| "Apprenticeship": "Aprendizaje", | |
| "Backfilling": "Relleno", | |
| "Beam": "Viga", | |
| "Blueprint": "Plano", | |
| "Bollard": "Bolardo", | |
| "Bracing": "Arriostramiento", | |
| "Brick Masonry": "Albañilería de Ladrillo", | |
| "Budget Overrun": "Sobrecosto Presupuestario", | |
| "Building Code": "Código de Construcción", | |
| "Cantilever": "Voladizo", | |
| "Caulking": "Sellado", | |
| "Ceiling Joist": "Vigueta de Techo", | |
| "Cement": "Cemento", | |
| "Certificate of Occupancy": "Certificado de Ocupación", | |
| "Chain Link Fence": "Cerca de Malla", | |
| "Chipping": "Picado", | |
| "Cladding": "Revestimiento", | |
| "Clear Span": "Luz Libre", | |
| "Construction Drawings": "Planos de Construcción", | |
| "Construction Schedule": "Cronograma de Construcción", | |
| "Construction Staging": "Escenario de Construcción", | |
| "Contingency": "Contingencia", | |
| "Contract Bond": "Fianza de Contrato", | |
| "Curtain Wall": "Muro Cortina", | |
| "Damp Proofing": "Impermeabilización", | |
| "Dead Load": "Carga Muerta", | |
| "Demolition": "Demolición", | |
| "Design Development": "Desarrollo de Diseño", | |
| "Detail Drawing": "Dibujo Detallado", | |
| "Drilled Pier": "Pilote Perforado", | |
| "Drywall": "Tablaroca", | |
| "Earthmoving": "Movimiento de Tierras", | |
| "Elevation": "Elevación", | |
| "Emergency Egress": "Salida de Emergencia", | |
| "Energy Modeling": "Modelado Energético", | |
| "Excavation": "Excavación", | |
| "Expansion Joint": "Junta de Expansión", | |
| "Exterior Finish": "Acabado Exterior", | |
| "Fasteners": "Fijaciones", | |
| "Field Verification": "Verificación en Campo", | |
| "Final Walkthrough": "Inspección Final", | |
| "Finishing": "Acabado", | |
| "Fire Barrier": "Barrera Contra Incendios", | |
| "Flange": "Brida", | |
| "Floor Slab": "Losa de Piso", | |
| "Footing": "Zapata", | |
| "Foundation Wall": "Muro de Cimentación", | |
| "Framing": "Estructura", | |
| "Frost Line": "Línea de Heladas", | |
| "Grade Beam": "Viga de Cimentación", | |
| "Grading": "Nivelación", | |
| "Ground Penetrating Radar": "Radar de Penetración Terrestre", | |
| "Hardscape": "Paisajismo Duro", | |
| "HVAC Ductwork": "Conductos HVAC", | |
| "I-Beam": "Viga en I", | |
| "Insulation Rating": "Clasificación de Aislamiento", | |
| "Interior Finish": "Acabado Interior", | |
| "Joist": "Vigueta", | |
| "Keyway": "Entalladura", | |
| "Lath": "Listón", | |
| "Load Testing": "Prueba de Carga", | |
| "Louver": "Persiana", | |
| "Masonry": "Albañilería", | |
| "Moisture Barrier": "Barrera de Humedad", | |
| "Mortar": "Mortero", | |
| "Overhang": "Voladizo", | |
| "Parapet": "Pretil", | |
| "Pile": "Pilote", | |
| "Plaster": "Yeso", | |
| "Plumbing Fixtures": "Accesorios de Plomería", | |
| "Post-Tension Slab": "Losa Postensada", | |
| "Prefabricated Components": "Componentes Prefabricados", | |
| "Safety Harness": "Arnés de Seguridad", | |
| "Scaffolding": "Andamios", | |
| "Structural Integrity": "Integridad Estructural", | |
| "Structural Steel": "Acero Estructural", | |
| "Temporary Fence": "Cerca Temporal", | |
| "Zoning Ordinance": "Ordenanza de Zonificación", | |
| "Thermal Insulation": "Aislamiento Térmico", | |
| "Sealant": "Sellador", | |
| "Retaining Wall": "Muro de Contención", | |
| "Screw Anchor": "Anclaje de Tornillo", | |
| "Rain Screen": "Pantalla de Lluvia", | |
| "Facade Treatment": "Tratamiento de Fachada", | |
| "Fireproofing": "Protección contra Incendios", | |
| } | |
| # Preprocess text to replace glossary terms with placeholders | |
| def preprocess_text(text, glossary): | |
| sorted_terms = sorted(glossary.keys(), key=len, reverse=True) | |
| for term in sorted_terms: | |
| placeholder = f"[[{term}]]" | |
| text = re.sub(rf'\b{re.escape(term)}\b', placeholder, text, flags=re.IGNORECASE) | |
| return text | |
| # Postprocess text to replace placeholders with glossary terms | |
| def postprocess_text(text, glossary): | |
| for term, translation in glossary.items(): | |
| placeholder = f"[[{term}]]" | |
| text = text.replace(placeholder, translation) | |
| return text | |
| # Translate text | |
| def translate_text(text): | |
| try: | |
| # Preprocess the text | |
| preprocessed_text = preprocess_text(text, custom_glossary) | |
| # Translate the preprocessed text | |
| translated = translator(preprocessed_text)[0]['translation_text'] | |
| # Postprocess the text | |
| final_translation = postprocess_text(translated, custom_glossary) | |
| return final_translation | |
| except Exception as e: | |
| return f"An error occurred during translation: {e}" | |
| # Create the Gradio interface | |
| iface = gr.Interface( | |
| fn=translate_text, | |
| inputs=gr.Textbox(lines=5, label="Input Text (English)"), | |
| outputs=gr.Textbox(label="Translated Text (Spanish)"), | |
| title="English to Spanish Translator", | |
| description="Enter English text to translate it into Spanish, with accurate translation of construction and project management terms.", | |
| ) | |
| # Launch the interface | |
| if __name__ == "__main__": | |
| iface.launch() | |