> For the complete documentation index, see [llms.txt](https://docs.tabiya.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tabiya.org/tabiya-documentation/es/nuestra-pila-tecnologica/livelihoods-classifier/getting-started.md).

# Primeros pasos

## Instalación

Requisitos previos\\

* Una versión reciente de [git](https://git-scm.com/) (p. ej. ^2.37 )
* [Python 3.10 o superior](https://www.python.org/downloads/)
* [Poetry 1.8 o superior](https://python-poetry.org/)

  > Nota: para instalar Poetry consulta la [documentación de Poetry](https://python-poetry.org/docs/#installing-with-the-official-installer)

  > Nota: instala Poetry a nivel del sistema (no en un entorno virtual).
* [Git LFS](https://git-lfs.github.com/)

#### Uso de Git LFS

Esta herramienta usa Git LFS para manejar archivos grandes. Antes de usarla, necesitas instalar y configurar Git LFS en tu máquina local. Consulta <https://git-lfs.com/> para obtener instrucciones de instalación.

Después de configurar Git LFS, sigue estos pasos para clonar el repositorio:

```shell
git clone https://github.com/tabiya-tech/tabiya-livelihoods-classifier.git
```

Si ya clonaste el repositorio sin Git LFS, ejecuta:

```shell
git lfs pull
```

#### Instalar las dependencias <a href="#dep" id="dep"></a>

**Configurar virtualenv**

En el **directorio raíz** del proyecto backend (es decir, el mismo directorio que este archivo README), ejecuta los siguientes comandos:

```shell
# crear un entorno virtual
python3 -m venv venv

# activar el entorno virtual
source venv/bin/activate
```

```shell
# Usa la versión de las dependencias especificada en el archivo lock
poetry lock --no-update
# Instalar los paquetes faltantes y eliminar los no referenciados
poetry install --sync
```

> Nota: instala las dependencias para el entrenamiento usando:
>
> ```shell
> # Usa la versión de las dependencias especificada en el archivo lock
> poetry lock --no-update
> # Instalar los paquetes faltantes y eliminar los no referenciados
> poetry install --sync --with train
> ```

> Nota: antes de ejecutar cualquier tarea, activa el entorno virtual para que las dependencias instaladas estén disponibles:
>
> ```shell
> # activar el entorno virtual
> source venv/bin/activate
> ```
>
> Para desactivar el entorno virtual, ejecuta:
>
> ```shell
> # desactivar el entorno virtual
> deactivate
> ```

Activa Python y descarga el paquete de puntuación punkt de NLTK para usar el tokenizador de oraciones. Solo necesitas descargar `punkt` una vez.

```shell
python <<EOF
import nltk
nltk.download('punkt')
EOF
```

#### Variable de entorno y configuración

La herramienta usa la siguiente variable de entorno:

* `HF_TOKEN`: Para usar el proyecto, necesitas acceso al modelo de extracción de entidades de HuggingFace 🤗. Contacta a los administradores a través de \[<tabiya@benisis.de>]. A partir de ahí, debes crear un token de acceso de lectura para usar el modelo. Encuentra o crea tu token de acceso de lectura [aquí](https://huggingface.co/settings/tokens). El backend admite el uso de un `.env` archivo para establecer la variable de entorno. Crea un `.env` archivo en el directorio raíz del proyecto backend y establece las variables de entorno de la siguiente manera:

```dotenv
# archivo .env
HF_TOKEN=<YOUR_HF_TOKEN>
```

> ATENCIÓN: El archivo .env debe mantenerse seguro y no compartirse con otras personas, ya que contiene información sensible.

## Guía de inicio rápido

## Pipeline de inferencia

El pipeline de inferencia extrae ocupaciones y habilidades de una descripción de trabajo y las empareja con las entidades más similares de la taxonomía ESCO.

### Uso

Primero, activa el entorno virtual como se explica [aquí](#dep).

Luego, `inicia el intérprete de Python en el directorio raíz` y ejecuta los siguientes comandos:

Carga la `EntityLinker` clase y crea una instancia de la clase; luego realiza inferencia sobre cualquier texto con el siguiente código:

```python
from inference.linker import EntityLinker
pipeline = EntityLinker(k=5)
text = 'Buscamos un jefe de cocina que pueda planificar menús.'
extracted = pipeline(text)
print(extracted)
```

Después de ejecutar los comandos anteriores, deberías ver la siguiente salida:

```js
[
  {'type': 'Ocupación', 'tokens': 'jefe de cocina', 'retrieved': ['jefe de cocina', 'jefe de cocina industrial', 'jefe pastelero principal', 'chef', 'chef de cocina']},
  {'type': 'Habilidad', 'tokens': 'planificar menús', 'retrieved': ['planificar menús', 'planificar menús para pacientes', 'presentar menús', 'planificar horarios', 'planificar actividades de ingeniería']}
]
```

### Versión en francés

Puedes usar la versión en francés de Entity Linker con el siguiente código:

```python
from inference.linker import FrenchEntityLinker
pipeline = FrenchEntityLinker(entity_model = 'tabiya/camembert-large-job-ner', similarity_model = 'intfloat/multilingual-e5-base')

text = 'Buscamos un jefe de cocina capaz de planificar los menús.'
extracted = pipeline(text)
print(extracted)
```

Deberías ver la siguiente salida:

```javascript
[
  {'type': 'Ocupación', 'tokens': 'jefe de cocina', 'retrieved': ['jefe de cocina', 'jefe de marca', 'jefe mecánico', 'jefe de cocina / jefa de cocina', 'jefe de tren']}, 
  {'type': 'Habilidad', 'tokens': 'planificar los menús', 'retrieved': ['planificar los menús', 'presentar menús', 'elaborar los menús de los pacientes', 'preparar horarios', 'preparar platos preparados']}
]
```

### Ejecutando las pruebas de evaluación

Carga la `Evaluador` y muestra los resultados:

```python
from inference.evaluator import Evaluator

results = Evaluator(entity_type='Skill', entity_model='tabiya/roberta-base-job-ner', similarity_model='all-MiniLM-L6-v2', crf=False, evaluation_mode=True)
print(results.output)
```

Esta clase hereda de la `EntityLinker`, con la principal diferencia de la `'entity_type'` bandera.

{% hint style="warning" %}
Si quieres ejecutar evaluaciones en conjuntos de datos personalizados, tendrás que hacer modificaciones en la `_load_dataset` función, ubicada en el `evaluation.py` archivo. Consulta los conjuntos de datos de evaluación originales como se describe [aquí](/tabiya-documentation/es/nuestra-pila-tecnologica/livelihoods-classifier/datasets.md). Si tienes algún problema, abre un issue en [GitHub](https://github.com/tabiya-tech/tabiya-livelihoods-classifier/issues).
{% endhint %}

### Requisitos mínimos de hardware

* 4 GB de RAM CPU/GPU

El código se ejecuta en la GPU si está disponible. Asegúrate de que tu máquina tenga CUDA instalado si ejecutas en GPU.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.tabiya.org/tabiya-documentation/es/nuestra-pila-tecnologica/livelihoods-classifier/getting-started.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
