| import json | |||||
| from collections import defaultdict | |||||
| # Chemin vers ton fichier d'entrée et de sortie | |||||
| input_file = "Paires de phrases en ukrainien-français - 2026-01-06.tsv" # Remplace par ton chemin | |||||
| output_file = "paires.json" # Fichier de sortie | |||||
| # Dictionnaire pour stocker les paires uniques (clé = phrase ukrainienne, valeur = liste de traductions) | |||||
| unique_pairs = defaultdict(list) | |||||
| # Lire le fichier d'entrée | |||||
| with open(input_file, "r", encoding="utf-8") as f: | |||||
| for line in f: | |||||
| # Diviser la ligne en colonnes (séparateur = tabulation) | |||||
| parts = line.strip().split("\t") | |||||
| if len(parts) >= 3: | |||||
| uk_text = parts[1] # Texte ukrainien | |||||
| fr_text = parts[3] # Traduction française | |||||
| # Ajouter la paire au dictionnaire (évite les doublons) | |||||
| if fr_text not in unique_pairs[uk_text]: | |||||
| unique_pairs[uk_text].append(fr_text) | |||||
| # Écrire le fichier JSONL de sortie | |||||
| with open(output_file, "w", encoding="utf-8") as f_out: | |||||
| for uk_text, fr_translations in unique_pairs.items(): | |||||
| # Prendre la première traduction (ou toutes si tu préfères) | |||||
| for fr_text in fr_translations: | |||||
| # Créer une entrée JSONL | |||||
| entry = { | |||||
| "text": uk_text, | |||||
| "translation": fr_text | |||||
| } | |||||
| f_out.write(json.dumps(entry, ensure_ascii=False) + "\n") | |||||
| print(f"Fichier JSONL généré : {output_file}") |
| FROM qwen2.5:14b | FROM qwen2.5:14b | ||||
| PARAMETER temperature 0.3 | |||||
| PARAMETER temperature 0.2 | |||||
| PARAMETER num_ctx 8192 | PARAMETER num_ctx 8192 | ||||
| SYSTEM """ | SYSTEM """ | ||||
| Règles strictes : | Règles strictes : | ||||
| 1. **Conserve tous les noms de lieux** dans leur forme originale (ex. : Львів → Lviv, mais ajoute une note si nécessaire entre [ ]). | 1. **Conserve tous les noms de lieux** dans leur forme originale (ex. : Львів → Lviv, mais ajoute une note si nécessaire entre [ ]). | ||||
| 2. **Respecte le style narratif** : garde les tournures orales et les expressions propres à l’auteur. | 2. **Respecte le style narratif** : garde les tournures orales et les expressions propres à l’auteur. | ||||
| 3. **Pour les termes historiques** (ex. : "powiat"), utilise le terme français standard ou ajoute une note explicative. | |||||
| 4. **Conserve les citations** russe/allemand/polonais intégrés au texte (mais ajoute une note entre [ ] en la traduisant et en précisant la langue d'origine. | |||||
| 3. **Pour les termes historiques** (ex. : "powiat"), utilise le terme français standard et ajoute une note explicative. | |||||
| 4. **Conserve les citations** russe/allemand/polonais intégrés au texte (mais ajoute une note de fin de paragraphe entre [ ] en la traduisant et en précisant la langue d'origine. | |||||
| 5. **Structure** : Garde les sauts de ligne et la mise en page originale. | 5. **Structure** : Garde les sauts de ligne et la mise en page originale. | ||||
| 6. **Notes du traducteur** : Ajoute entre crochets [ ] les explications contextuelles si un contexte historique existe (ex. : "[Note : le context]"). | 6. **Notes du traducteur** : Ajoute entre crochets [ ] les explications contextuelles si un contexte historique existe (ex. : "[Note : le context]"). | ||||
| """ | """ |
| # Configuration | # Configuration | ||||
| DEBUG = True | DEBUG = True | ||||
| PDF_PATH = "TaniaBorecMemoir(Ukr).pdf" | |||||
| PDF_PATH = "Traduction\TaniaBorecMemoir(Ukr).pdf" | |||||
| OLLAMA_MODEL = "traductionUkrainienVersFrancais:latest" | OLLAMA_MODEL = "traductionUkrainienVersFrancais:latest" | ||||
| OLLAMA_URL = "http://localhost:11434/api/generate" | OLLAMA_URL = "http://localhost:11434/api/generate" | ||||
| TARGET_LANGUAGE = "français" | TARGET_LANGUAGE = "français" | ||||
| CHECKPOINT_FILE = "checkpoint.json" | |||||
| TEMP_OUTPUT_TXT = "output_temp.txt" | |||||
| FINAL_OUTPUT_PDF = PDF_PATH.replace(".pdf",f"({TARGET_LANGUAGE.upper()[:2]})_V7.pdf") | |||||
| FINAL_OUTPUT_TXT = PDF_PATH.replace(".pdf",f"({TARGET_LANGUAGE.upper()[:2]})_V7.txt") | |||||
| CHECKPOINT_FILE = "Traduction\checkpoint.json" | |||||
| TEMP_OUTPUT_TXT = "Traduction\output_temp.txt" | |||||
| FINAL_OUTPUT_PDF = PDF_PATH.replace(".pdf",f"({TARGET_LANGUAGE.upper()[:2]})_V8.pdf") | |||||
| FINAL_OUTPUT_TXT = PDF_PATH.replace(".pdf",f"({TARGET_LANGUAGE.upper()[:2]})_V8.txt") | |||||
| DEBUG = True | DEBUG = True | ||||
| set VENV_PATH=%CURRENT_DIR%\venv | set VENV_PATH=%CURRENT_DIR%\venv | ||||
| REM Chemin vers votre script principal (relatif au répertoire courant) | REM Chemin vers votre script principal (relatif au répertoire courant) | ||||
| set MAIN_SCRIPT_PATH=%CURRENT_DIR%\main.py | |||||
| set MAIN_SCRIPT_PATH=%CURRENT_DIR%\Traduction\main.py | |||||
| REM Activer l'environnement virtuel Python | REM Activer l'environnement virtuel Python | ||||
| call %VENV_PATH%\Scripts\activate.bat | call %VENV_PATH%\Scripts\activate.bat | ||||
| REM Lancer la compilation du modèle LLM pour Ollama | REM Lancer la compilation du modèle LLM pour Ollama | ||||
| ollama create traductionUkrainienVersFrancais -f .\Modelfile | |||||
| ollama create traductionUkrainienVersFrancais -f .\Traduction\Modelfile | |||||
| :: 1. Vérifie si le processus ollama.exe est en cours d'exécution | :: 1. Vérifie si le processus ollama.exe est en cours d'exécution | ||||
| tasklist | find "ollama.exe" >nul | tasklist | find "ollama.exe" >nul | ||||
| if %ERRORLEVEL% equ 0 ( | if %ERRORLEVEL% equ 0 ( | ||||
| echo [OK] Le processus Ollama est en cours d'execution. | |||||
| echo [OK] Le processus Ollama est bien en cours d'execution. | |||||
| ) else ( | ) else ( | ||||
| echo [ERREUR] Ollama n'est pas lancé. | echo [ERREUR] Ollama n'est pas lancé. | ||||
| pause | pause |