Skip to content

About

Universidad Santo Tomás' proyect for translation beetwen Nasa and Spanish language

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

19 Commits

Folders and files

Repository files navigation

Interprete-Nasa Yuwe

El Interprete Nasa es una aplicación web de vanguardia desarrollada con arquitectura híbrida que combina técnicas de procesamiento de lenguaje natural (NLP), inteligencia artificial y preservación cultural digital. El sistema implementa múltiples estrategias de traducción para garantizar la máxima precisión en la traducción bidireccional entre español y Nasa Yuwe, lengua indígena de la comunidad Nasa del Cauca, Colombia.

Arquitectura del Sistema

1. Arquitectura General

El sistema implementa una arquitectura de microservicios híbrida con los siguientes componentes principales:

  • Capa de Presentación: Interfaz web responsiva con capacidades multimodales
  • Capa de Aplicación: API REST desarrollada en Flask con endpoints especializados
  • Capa de Lógica de Negocio: Motor de traducción híbrido con múltiples estrategias
  • Capa de Datos: Sistema de persistencia JSON con capacidades de aprendizaje incremental
  • Capa de Servicios Externos: Integración con modelos de transformers y APIs de reconocimiento de voz

2. Patrones de Diseño Implementados

2.1 Patrón Estrategia

Implementado en el AdvancedTranslationModel para alternar entre diferentes métodos de traducción:

  • Estrategia de Diccionario: Traducción directa basada en corpus léxico
  • Estrategia Gramatical: Análisis morfológico y sintáctico
  • Estrategia NLLB: Modelo de transformers para traducción contextual

2.2 Singleton Pattern

Aplicado en la inicialización de modelos para optimizar el uso de memoria:

def get_translation_model():
    global translation_model
    if translation_model is None:
        translation_model = AdvancedTranslationModel(nasa_yuwe_dictionary_path)
    return translation_model

2.3 Factory Pattern

Utilizado para la creación dinámica de motores de traducción según el contexto lingüístico.

Componentes Técnicos

1. Motor de Conjugación Gramatical (grammar_engine.py)

Características Técnicas:

  • Análisis Morfológico: Identificación automática de patrones verbales, nominales y adjetivales
  • Conjugación Contextual: Sistema de conjugación que considera persona, tiempo, aspecto y modo
  • Marcadores Direccionales: Implementación de sistema del Nasa Yuwe
  • Procesamiento de Aspectos: Manejo de aspectos completivo, continuativo, habitual e iterativo

Algoritmos Implementados:

def enhanced_contextual_translation(self, text: str, source_lang: str, target_lang: str) -> str:
    # Análisis temporal y contextual
    temporal_context = self.detect_temporal_context(text, source_lang)
    question_context = self.detect_question_type(text, source_lang)
    
    # Aplicación de morfología específica del Nasa Yuwe
    if target_lang == 'nasa_yuwe':
        return self.apply_nasa_yuwe_morphology(translated_text, morphology)

2. Modelo de Traducción (translation_model.py)

Arquitectura Híbrida:

El modelo implementa una arquitectura de ensemble que combina:

  1. NLLB-200 (No Language Left Behind):

    • Modelo de transformers pre-entrenado de Meta AI
    • Soporte para 200+ idiomas con arquitectura encoder-decoder
    • Implementación con PyTorch y Hugging Face Transformers
  2. Motor Gramatical Especializado:

    • Reglas lingüísticas específicas del Nasa Yuwe
    • Sistema de marcadores gramaticales nativos
    • Análisis sintáctico contextual
  3. Diccionario Léxico Expandible:

    • Base de datos JSON con estructura semántica
    • Sistema de retroalimentación para aprendizaje incremental
    • Validación de consistencia léxica

Métricas de Confianza:

def translate(self, text, source_lang='spanish', target_lang='nasa_yuwe'):
    # Implementación de múltiples estrategias con scoring
    dict_result = self._translate_with_dictionary(text, source_lang, target_lang)
    if dict_result and dict_result['confidence'] > 0.8:
        return dict_result
    
    grammar_result = self._translate_with_grammar(text, source_lang, target_lang)
    if grammar_result and grammar_result['confidence'] > 0.9:
        return grammar_result

3. Interfaz de Usuario

Tecnologías Frontend:

  • HTML5 Semántico: Estructura accesible con ARIA labels
  • CSS3 Avanzado: Animaciones holográficas y modo oscuro/claro
  • JavaScript ES6+: Programación asíncrona y Web APIs

Características UX/UI:

  • Reconocimiento de Voz: Integración con Web Speech API
  • Interfaz Multimodal: Entrada por texto, voz y formularios especializados
  • Retroalimentación en Tiempo Real: Sistema de corrección colaborativa
  • Diseño Responsivo: Adaptación automática a diferentes dispositivos

Stack Tecnológico

Backend

# Dependencias principales
Flask==3.0.0              # Framework web WSGI
transformers==4.35.2      # Modelos de Hugging Face
torch==2.1.1              # Framework de deep learning
numpy==1.24.4             # Computación científica
pandas==2.1.4             # Análisis de datos

Frontend

  • Vanilla JavaScript: Sin dependencias externas para más rendimiento
  • CSS Grid/Flexbox: Layout moderno y responsivo
  • Web Speech API: Reconocimiento de voz nativo del navegador

Infraestructura

  • Servidor de Desarrollo: Flask Development Server
  • Persistencia: Sistema de archivos JSON con validación
  • Logging: Sistema de logs estructurado con diferentes niveles

Estructura del Proyecto

rebecca.1/
├── app.py                          # Aplicación principal 
├── grammar_engine.py               # Motor de análisis gramatical
├── translation_model.py            # Modelo híbrido de traducción
├── requirements.txt                # Dependencias del proyecto
├── .gitignore                     # Configuración de Git
├── data/                          # Datos y diccionarios
│   └── nasa_yuwe_dictionary.json  # Diccionario principal
├── docs/                          # Documentación
│   └── README.md                  # Este documento
├── static/                        # Recursos estáticos
│   ├── app.js                     # Lógica del cliente (577 líneas)
│   └── style.css                  # Estilos  (1909 líneas)
├── templates/                   
│   └── index.html                 # Interfaz principal
└── logs/                          # Archivos de log del sistema
    └── app.log                    # Logs de la aplicación

Funcionalidades

1. Sistema de Traducción Híbrida

  • Traducción Contextual: Análisis semántico del contexto
  • Preservación Cultural: Mantenimiento de significados culturales específicos
  • Aprendizaje Incremental: Mejora automática basada en retroalimentación

2. Análisis Lingüístico Avanzado

  • Detección de Patrones Verbales: Identificación automática de conjugaciones
  • Análisis Temporal: Procesamiento de marcadores temporales nativos
  • Procesamiento de Preguntas: Detección y traducción de interrogativas

3. Interfaz Multimodal

  • Entrada por Voz: Reconocimiento de voz con Web Speech API
  • Entrada por Texto: Editor avanzado con validación en tiempo real
  • Gestión de Diccionario: Sistema CRUD para expansión léxica

4. Sistema de Retroalimentación Inteligente

  • Corrección Colaborativa: Los usuarios pueden mejorar traducciones
  • Validación Automática: Verificación de consistencia léxica
  • Aprendizaje Continuo: Incorporación automática de mejoras

Algoritmos y Técnicas Implementadas

1. Procesamiento de Lenguaje Natural

def detect_temporal_context(self, text: str, source_lang: str) -> Dict:
    """Detecta contexto temporal usando patrones lingüísticos"""
    temporal_markers = self.nasa_yuwe_grammar['temporal_markers']
    detected_markers = []
    
    for marker, nasa_equivalent in temporal_markers.items():
        if marker in text.lower():
            detected_markers.append({
                'spanish': marker,
                'nasa_yuwe': nasa_equivalent,
                'type': 'temporal'
            })

2. Análisis Morfológico

def apply_nasa_yuwe_morphology(self, word: str, morphology: Dict) -> str:
    """Aplica morfología específica del Nasa Yuwe"""
    result = word
    
    # Aplicar marcadores de persona
    if morphology.get('person'):
        person_marker = self.nasa_yuwe_grammar['person_markers'].get(morphology['person'])
        if person_marker:
            result = person_marker + ' ' + result

3. Sistema de Confianza Bayesiano

el sistema implementac un modelo que evalua la confianza de las traducciones:

  • Confianza de Diccionario: 0.80 (alta precisión léxica)
  • Confianza Gramatical: 0.90 (análisis contextual)
  • Confianza NLLB: 0.70 (modelo general)
  • Fallback: 0.10 (sin traducción disponible)

Métricas de Rendimiento

Tiempo de Respuesta

  • Traducción por Diccionario: < 50ms
  • Análisis Gramatical: < 200ms
  • Modelo NLLB: < 2000ms (dependiente de hardware)

Precisión

  • Vocabulario Base: 95% de precisión en términos comunes
  • Construcciones Gramaticales: 65% de precisión en estructuras complejas
  • Contexto Cultural: 90% de preservación de significados culturales de español a nasa yuwe

Instalación y Configuración

Requisitos del Sistema

  • Python: 3.8 o superior
  • RAM: Mínimo 4GB (8GB recomendado para NLLB)
  • Espacio en Disco: 2GB para modelos completos
  • Navegador: Chrome/Edge (para un mejor reconocimiento de voz)

Instalación y Configuración

  1. Clonar el Repositorio:
git clone <repository-url>
cd rebecca.1
  1. Crear Entorno Virtual:
python -m venv venv
source venv/bin/activate  # Linux/Mac
# o
venv\Scripts\activate     # Windows
  1. Instalar Dependencias:
pip install -r requirements.txt
  1. Configurar Datos:
mkdir -p data logs
# Asegurar que nasa_yuwe_dictionary.json existe
  1. Ejecutar la Aplicación:
python app.py
  1. Acceder al Sistema:
http://localhost:5000

API REST Endpoints

Traducción de Texto

POST /api/translate-text
Content-Type: application/json

{
    "text": "Hola mundo",
    "source_lang": "spanish",
    "target_lang": "nasa_yuwe"
}

Información del Modelo

GET /api/model-info

Agregar Palabra al Diccionario

POST /add_word
Content-Type: application/json

{
    "spanish_word": "casa",
    "nasa_yuwe_translation": "yat",
    "context": "Vivienda familiar tradicional"
}

Retroalimentación

POST /api/feedback
Content-Type: application/json

{
    "original_text": "casa",
    "corrected_translation": "yat kiwe",
    "source_lang": "spanish",
    "target_lang": "nasa_yuwe"
}

Consideraciones de Seguridad

Validación de Entrada

  • Sanitización de datos de entrada para prevenir inyección
  • Validación de longitud máxima de texto
  • Filtrado de caracteres especiales maliciosos

Gestión de Errores

  • Manejo robusto de excepciones
  • Logging detallado para auditoría
  • Respuestas de errores estructuradas

Privacidad de Datos

  • No almacenamiento de datos personales
  • Procesamiento local de audio (Web Speech API)
  • Logs anonimizados

Escalabilidad y Mantenimiento

Optimizaciones Implementadas

  • Lazy Loading: Carga diferida de modelos pesados
  • Caching: Almacenamiento en memoria de traducciones frecuentes
  • Singleton Pattern: Reutilización de instancias de modelos

Monitoreo y Logging

# Sistema de logging estructurado
logging.basicConfig(level=logging.INFO)
self.logger = logging.getLogger(__name__)
self.logger.info(f"Diccionario cargado: {len(self.dictionary)} entradas")

Licencia y Derechos

Este proyecto está licenciado bajo Licencia Privativa, no permitiendo uso comercial y modificación con atribución apropiada. El proyecto respeta y honra los derechos intelectuales de la comunidad Nasa sobre su lengua y cultura.

Reconocimientos

  • Comunidad Nasa: Por la preservación y enseñanza de su lengua ancestral
  • Meta AI: Por el modelo NLLB-200
  • Hugging Face: Por la infraestructura de transformers
  • Contribuidores: Todos los desarrolladores que han aportado al proyecto

Última actualización: Septiembre/26/2025 Versión del documento: 2.0

About

Universidad Santo Tomás' proyect for translation beetwen Nasa and Spanish language

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages