""

domingo, 4 de octubre de 2026

IA, Hugging Face, Aplicada a la ingeniería mecánica

Prompt for Gemini:

¿Cómo puedo aprovechar Hugging face desde Python? indícame ejemplos resueltos de aplicación relacionada con ingeniería mecánica

NOTA: si quieres saber en que consiste Hugging face haz clic aquí:

Ejemplo 1.
>>! pip install transformers
............................................................................................................................
Requirement already satisfied: transformers in /usr/local/lib/python3.13/dist-packages (5.17.0) Requirement already satisfied: huggingface-hub<2.0,>=1.5.0 in /usr/local/lib/python3.13/dist-packages (from transformers) (1.31.0) Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.13/dist-packages (from transformers) (2.1.3) Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.13/dist-packages (from transformers) (26.3) Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.13/dist-packages (from transformers) (6.0.3) Requirement already satisfied: regex>=2025.10.22 in /usr/local/lib/python3.13/dist-packages (from transformers) (2025.11.3) Requirement already satisfied: tokenizers<0.24.0,>=0.23.1 in /usr/local/lib/python3.13/dist-packages (from transformers) (0.23.2) Requirement already satisfied: typer in /usr/local/lib/python3.13/dist-packages (from transformers) (0.27.2) Requirement already satisfied: safetensors>=0.8.0 in /usr/local/lib/python3.13/dist-packages (from transformers) (0.8.0) Requirement already satisfied: tqdm>=4.60 in /usr/local/lib/python3.13/dist-packages (from transformers) (4.67.3) Requirement already satisfied: click<9.0.0,>=8.4.2 in /usr/local/lib/python3.13/dist-packages (from huggingface-hub<2.0,>=1.5.0->transformers) (8.5.0) Requirement already satisfied: filelock>=3.10.0 in /usr/local/lib/python3.13/dist-packages (from huggingface-hub<2.0,>=1.5.0->transformers) (3.32.7) Requirement already satisfied: fsspec>=2023.5.0 in /usr/local/lib/python3.13/dist-packages (from huggingface-hub<2.0,>=1.5.0->transformers) (2025.12.0) Requirement already satisfied: hf-xet<2.0.0,>=1.5.2 in /usr/local/lib/python3.13/dist-packages (from huggingface-hub<2.0,>=1.5.0->transformers) (1.6.0) Requirement already satisfied: httpx<1,>=0.23.0 in /usr/local/lib/python3.13/dist-packages (from huggingface-hub<2.0,>=1.5.0->transformers) (0.28.1) Requirement already satisfied: typing-extensions>=4.1.0 in /usr/local/lib/python3.13/dist-packages (from huggingface-hub<2.0,>=1.5.0->transformers) (4.16.0) Requirement already satisfied: shellingham>=1.3.0 in /usr/local/lib/python3.13/dist-packages (from typer->transformers) (1.5.4) Requirement already satisfied: rich>=13.8.0 in /usr/local/lib/python3.13/dist-packages (from typer->transformers) (13.9.4) Requirement already satisfied: annotated-doc>=0.0.2 in /usr/local/lib/python3.13/dist-packages (from typer->transformers) (0.0.5) Requirement already satisfied: anyio in /usr/local/lib/python3.13/dist-packages (from httpx<1,>=0.23.0->huggingface-hub<2.0,>=1.5.0->transformers) (4.15.1) Requirement already satisfied: certifi in /usr/local/lib/python3.13/dist-packages (from httpx<1,>=0.23.0->huggingface-hub<2.0,>=1.5.0->transformers) (2026.7.22) Requirement already satisfied: httpcore==1.* in /usr/local/lib/python3.13/dist-packages (from httpx<1,>=0.23.0->huggingface-hub<2.0,>=1.5.0->transformers) (1.0.9) Requirement already satisfied: idna in /usr/local/lib/python3.13/dist-packages (from httpx<1,>=0.23.0->huggingface-hub<2.0,>=1.5.0->transformers) (3.19) Requirement already satisfied: h11>=0.16 in /usr/local/lib/python3.13/dist-packages (from httpcore==1.*->httpx<1,>=0.23.0->huggingface-hub<2.0,>=1.5.0->transformers) (0.16.0) Requirement already satisfied: markdown-it-py>=2.2.0 in /usr/local/lib/python3.13/dist-packages (from rich>=13.8.0->typer->transformers) (4.2.0) Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /usr/local/lib/python3.13/dist-packages (from rich>=13.8.0->typer->transformers) (2.21.0) Requirement already satisfied: mdurl~=0.1 in /usr/local/lib/python3.13/dist-packages (from markdown-it-py>=2.2.0->rich>=13.8.0->typer->transformers) (0.1.2)
...............................................................................................
>>from transformers import pipeline

>>classifier = pipeline("sentiment-analysis")
>>resultado = classifier("¡Me encanta aprender sobre inteligencia artificial!")
>>print(resultado)
..........................................................................
[transformers] No model was supplied, defaulted to distilbert/distilbert-base-uncased-finetuned-sst-2-english and revision 714eb0f.
Using a pipeline without specifying a model name and revision in production is not recommended.
Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.
WARNING:huggingface_hub.utils._http:Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.
config.json: 100%
 629/629 [00:00<00:00, 73.0kB/s]
model.safetensors: reconstructing file: 100%
  268MB /  268MB, 20.7MB/s  
model.safetensors: downloading bytes: 
  250MB, 21.9MB/s  
Loading weights: 100%
 104/104 [00:00<00:00, 3059.60it/s]
tokenizer_config.json: 100%
 48.0/48.0 [00:00<00:00, 5.33kB/s]
vocab.txt: 100%
 232k/232k [00:00<00:00, 3.04MB/s]
[{'label': 'NEGATIVE', 'score': 0.9969039559364319}]
.........................................................................

¡Excelente pregunta! Hugging Face es una plataforma sumamente poderosa que va mucho más allá del análisis de sentimiento básico.

Antes de ver los ejemplos de ingeniería mecánica, es importante notar por qué tu celda anterior clasificó la frase "¡Me encanta aprender sobre inteligencia artificial!" como NEGATIVE (con un 99.6% de confianza). Esto ocurrió porque el pipeline por defecto utiliza un modelo entrenado únicamente en inglés (distilbert-base-uncased-finetuned-sst-2-english). Al recibir texto en español, el modelo se confunde por completo.


A continuación, te presento una guía práctica con ejemplos resueltos y adaptados a la Ingeniería Mecánica utilizando modelos multilingües o específicos para resolver tareas de:

  1. Clasificación de fallas y reportes de mantenimiento (Análisis de texto técnico).
  2. Extracción de información (NER) en especificaciones de maquinaria.
  3. Búsqueda semántica / Preguntas y Respuestas (Q&A) sobre manuales de operación.

### 1. Clasificación de Reportes de Mantenimiento y Fallas de Maquinaria

En ingeniería mecánica, a menudo se reciben reportes de fallas escritos por operarios en texto libre. Podemos clasificar automáticamente estos reportes en categorías de criticidad o por subsistemas mecánicos involucrados (por ejemplo: *Estructural, Hidráulico, Eléctrico, Térmico*).

Utilizaremos un clasificador "Zero-Shot" (que no requiere reentrenamiento) compatible con español.

>>from transformers import pipeline

>># Cargamos un pipeline de clasificación zero-shot compatible con español
>>classifier = pipeline(
    "zero-shot-classification",
    model="facebook/bart-large-mnli"
)

>># Reporte técnico real de un entorno industrial
>>reporte = "Se observa un incremento de vibraciones anormales y ruido metálico
en la zona del rodamiento del eje principal, acompañado de un ligero aumento de temperatura."

>># Categorías mecánicas que queremos evaluar
>>categorias = ["Falla Estructural", "Problema de Lubricación", "Desgaste Mecánico", "Anomalía Térmica"]

>># Realizamos la clasificación
>>resultado = classifier(reporte, candidate_labels=categorias)

>># Mostramos los resultados
>>print(f"Reporte analizado: '{reporte}'\n")
>>print("Predicciones de fallas de ingeniería:")
>>for label, score in zip(resultado['labels'], resultado['scores']):
>>    print(f"- {label}: {score:.2%}")
...............................................................................................
config.json: 100%
 1.15k/1.15k [00:00<00:00, 111kB/s]
model.safetensors: reconstructing file: 100%
 1.63GB / 1.63GB,  102MB/s  
model.safetensors: downloading bytes: 
 1.09GB, 72.3MB/s  
Loading weights: 100%
 515/515 [00:00<00:00, 5896.39it/s]
tokenizer_config.json: 100%
 26.0/26.0 [00:00<00:00, 3.37kB/s]
vocab.json: 100%
 899k/899k [00:00<00:00, 6.75MB/s]
merges.txt: 100%
 456k/456k [00:00<00:00, 23.9MB/s]
tokenizer.json: 100%
 1.36M/1.36M [00:00<00:00, 28.7MB/s]
Reporte analizado: 'Se observa un incremento de vibraciones anormales y ruido metálico en la zona del rodamiento del eje principal, acompañado de un ligero aumento de temperatura.'

Predicciones de fallas de ingeniería:
- Anomalía Térmica: 39.33%
- Desgaste Mecánico: 25.57%
- Falla Estructural: 18.60%
- Problema de Lubricación: 16.50%
...............................................................................................

### 2. Extracción de Entidades (NER) en Manuales de Maquinaria y Planos

Podemos procesar texto de especificaciones técnicas o requerimientos de diseño mecánico para extraer automáticamente componentes,
mediciones o parámetros críticos de operación (como temperaturas, presiones o materiales).

>># Cargamos un modelo de Reconocimiento de Entidades Nombradas (NER)
>># En este caso, utilizaremos un modelo genérico que identifica organizaciones, locaciones y componentes.
>>ner_pipeline = pipeline(
    "ner",
    model="mrm8488/bert-spanish-cased-finetuned-ner",
    aggregation_strategy="simple"
)

>>texto_tecnico = "La bomba hidráulica de desplazamiento positivo debe operar a una presión nominal de 150 bar usando aceite lubricante ISO VG 46 de la marca Repsol."

>>entidades = ner_pipeline(texto_tecnico)

>>print("Entidades clave identificadas en la especificación mecánica:")
>>for ent in entidades:
>>    print(f"- Texto: '{ent['word']}' | Categoría: {ent['entity_group']} | Confianza: {ent['score']:.2%}")
config.json: 100%
 829/829 [00:00<00:00, 81.1kB/s]
pytorch_model.bin: reconstructing file: 100%
  439MB /  439MB, 34.9MB/s  
pytorch_model.bin: downloading bytes: 
  417MB, 36.4MB/s  
Loading weights: 100%
 199/199 [00:00<00:00, 6365.23it/s]
[transformers] BertForTokenClassification LOAD REPORT from: mrm8488/bert-spanish-cased-finetuned-ner
Key                      | Status     |  | 
-------------------------+------------+--+-
bert.pooler.dense.bias   | UNEXPECTED |  | 
bert.pooler.dense.weight | UNEXPECTED |  | 

Notes:
- UNEXPECTED:	can be ignored when loading from different task/architecture; not ok if you expect identical arch.
tokenizer_config.json: 100%
 136/136 [00:00<00:00, 17.9kB/s]
model.safetensors: reconstructing file:  64%
  281MB /  439MB, 9.03MB/s  
model.safetensors: downloading bytes: 
  361MB, 30.2MB/s  
vocab.txt: 100%
 242k/242k [00:00<00:00, 8.57MB/s]
special_tokens_map.json: 100%
 112/112 [00:00<00:00, 2.78kB/s]
Entidades clave identificadas en la especificación mecánica:
- Texto: 'ISO VG 46' | Categoría: MISC | Confianza: 99.85%
- Texto: 'Repsol' | Categoría: ORG | Confianza: 95.96%



No hay comentarios.:

Publicar un comentario

Entradas recientes

IA, Hugging Face, Aplicada a la ingeniería mecánica

Prompt for Gemini: ¿Cómo puedo aprovechar Hugging face desde Python? indícame ejemplos resueltos de aplicación relacionada con ingeniería m...

Entradas Populares