> 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/deutsch/unser-technologie-stack/livelihoods-classifier/getting-started.md).

# Erste Schritte

## Installation

Voraussetzungen\\

* Eine aktuelle Version von [git](https://git-scm.com/) (z. B. ^2.37 )
* [Python 3.10 oder höher](https://www.python.org/downloads/)
* [Poetry 1.8 oder höher](https://python-poetry.org/)

  > Hinweis: Zur Installation von Poetry konsultieren Sie die [Poetry-Dokumentation](https://python-poetry.org/docs/#installing-with-the-official-installer)

  > Hinweis: Installieren Sie Poetry systemweit (nicht in einer virtuellen Umgebung).
* [Git LFS](https://git-lfs.github.com/)

#### Git LFS verwenden

Dieses Tool verwendet Git LFS zur Behandlung großer Dateien. Bevor Sie es verwenden, müssen Sie Git LFS auf Ihrem lokalen Rechner installieren und einrichten. Installationsanweisungen finden Sie unter <https://git-lfs.com/>.

Nachdem Git LFS eingerichtet ist, befolgen Sie diese Schritte, um das Repository zu klonen:

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

Wenn Sie das Repository bereits ohne Git LFS geklont haben, führen Sie Folgendes aus:

```shell
git lfs pull
```

#### Installieren Sie die Abhängigkeiten <a href="#dep" id="dep"></a>

**Virtuelle Umgebung einrichten**

Im **Stammverzeichnis** des Backend-Projekts (also im selben Verzeichnis wie diese README-Datei) führen Sie die folgenden Befehle aus:

```shell
# virtuelle Umgebung erstellen
python3 -m venv venv

# virtuelle Umgebung aktivieren
source venv/bin/activate
```

```shell
# Verwenden Sie die im Lockfile angegebene Version der Abhängigkeiten
poetry lock --no-update
# Fehlende Pakete installieren und nicht referenzierte Pakete entfernen
poetry install --sync
```

> Hinweis: Installieren Sie die Abhängigkeiten für das Training mit:
>
> ```shell
> # Verwenden Sie die im Lockfile angegebene Version der Abhängigkeiten
> poetry lock --no-update
> # Fehlende Pakete installieren und nicht referenzierte Pakete entfernen
> poetry install --sync --with train
> ```

> Hinweis: Bevor Sie Aufgaben ausführen, aktivieren Sie die virtuelle Umgebung, damit die installierten Abhängigkeiten verfügbar sind:
>
> ```shell
> # virtuelle Umgebung aktivieren
> source venv/bin/activate
> ```
>
> Um die virtuelle Umgebung zu deaktivieren, führen Sie Folgendes aus:
>
> ```shell
> # virtuelle Umgebung deaktivieren
> deactivate
> ```

Aktivieren Sie Python und laden Sie das NLTK-Punktuationspaket herunter, um den Satz-Tokenizer zu verwenden. Sie müssen nur `punkt` es einmal herunterladen.

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

#### Umgebungsvariable & Konfiguration

Das Tool verwendet die folgende Umgebungsvariable:

* `HF_TOKEN`: Um das Projekt zu verwenden, benötigen Sie Zugriff auf das HuggingFace 🤗-Modell zur Entitätsextraktion. Kontaktieren Sie die Administratoren über \[<tabiya@benisis.de>]. Dort müssen Sie ein Token mit Leserechten erstellen, um das Modell verwenden zu können. Finden oder erstellen Sie Ihren Token mit Leserechten [hier](https://huggingface.co/settings/tokens). Das Backend unterstützt die Verwendung einer `.env` -Datei zum Festlegen der Umgebungsvariable. Erstellen Sie eine `.env` Datei im Stammverzeichnis des Backend-Projekts und setzen Sie die Umgebungsvariablen wie folgt:

```dotenv
# .env-Datei
HF_TOKEN=<YOUR_HF_TOKEN>
```

> ACHTUNG: Die .env-Datei sollte sicher aufbewahrt und nicht mit anderen geteilt werden, da sie sensible Informationen enthält.

## QuickStart-Leitfaden

## Inferenz-Pipeline

Die Inferenz-Pipeline extrahiert Berufe und Fähigkeiten aus einer Stellenbeschreibung und ordnet sie den ähnlichsten Entitäten in der ESCO-Taxonomie zu.

### Verwendung

Aktivieren Sie zunächst die virtuelle Umgebung wie erläutert [hier](#dep).

Dann, `starten Sie den Python-Interpreter im Stammverzeichnis` und führen Sie die folgenden Befehle aus:

Laden Sie die `EntityLinker` -Klasse und erstellen Sie eine Instanz der Klasse; führen Sie dann mit folgendem Code eine Inferenz auf beliebigem Text durch:

```python
from inference.linker import EntityLinker
pipeline = EntityLinker(k=5)
text = 'We are looking for a Head Chef who can plan menus.'
extracted = pipeline(text)
print(extracted)
```

Nach dem Ausführen der obigen Befehle sollten Sie die folgende Ausgabe sehen:

```js
[
  {'type': 'Occupation', 'tokens': 'Head Chef', 'retrieved': ['head chef', 'industrial head chef', 'head pastry chef', 'chef', 'kitchen chef']},
  {'type': 'Skill', 'tokens': 'plan menus', 'retrieved': ['plan menus', 'plan patient menus', 'present menus', 'plan schedule', 'plan engineering activities']}
]
```

### Französische Version

Sie können die französische Version des Entity Linker mit folgendem Code verwenden:

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

text = 'Nous recherchons un chef de cuisine capable de planifier les menus.'
extracted = pipeline(text)
print(extracted)
```

Sie sollten die folgende Ausgabe sehen:

```javascript
[
  {'type': 'Occupation', 'tokens': 'chef de cuisine', 'retrieved': ['chef de cuisine', 'chef de marque', 'chef mécanicien', 'chef cuisinier/cheffe cuisinière', 'chef de train']}, 
  {'type': 'Skill', 'tokens': 'planifier les menus', 'retrieved': ['planifier les menus', 'présenter des menus', 'établir les menus des patients', 'préparer des plannings', 'préparer des plats préparés']}
]
```

### Ausführen der Evaluierungstests

Laden Sie die `Evaluator` Klasse und geben Sie die Ergebnisse aus:

```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)
```

Diese Klasse erbt von der `EntityLinker`wobei der Hauptunterschied die `'entity_type'` -Markierung ist.

{% hint style="warning" %}
Wenn Sie Evaluierungen auf benutzerdefinierten Datensätzen ausführen möchten, müssen Sie Änderungen an der `_load_dataset` Funktion vornehmen, die sich in der `evaluation.py` Datei befindet. Bitte beziehen Sie sich auf die ursprünglichen Evaluierungsdatensätze, wie beschrieben [hier](/tabiya-documentation/deutsch/unser-technologie-stack/livelihoods-classifier/datasets.md). Wenn Sie Probleme haben, eröffnen Sie bitte ein Issue auf [GitHub](https://github.com/tabiya-tech/tabiya-livelihoods-classifier/issues).
{% endhint %}

### Mindestanforderungen an die Hardware

* 4 GB CPU/GPU RAM

Der Code läuft auf der GPU, wenn verfügbar. Stellen Sie sicher, dass auf Ihrem Rechner CUDA installiert ist, wenn Sie auf der GPU ausführen.


---

# 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/deutsch/unser-technologie-stack/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.
