confluent/scripts/clean-doublons.py
StillHammer 4236232a62 Refonte complète du lexique Confluent et système d'audit
- Correction et extension du lexique: 78 → 0 erreurs
- Ajout de 14 racines manquantes (toli, konu, aika, vito, paka, nutu, tuli, nemu, zeru, novi, muta, supu, selu, saki)
- Extension du lexique: 67 racines standards (53 → 67)
- Création de 6 nouveaux fichiers lexique (navigation, architecture, concepts philosophiques, étrangers, actions militaires, vêtements)
- Réduction consonnes rares: 26.5% → 2.7%
- Remplacement racines anglaises par finno-basques (malo→paka, situ→tuli, taki→kanu, time→aika)
- Correction des mots mal formés (ulak→kulak, koliukitan→koliukita, ulapisu→lapis, pekikayo→pekikazo)
- Amélioration script d'audit: charge maintenant verbes, compositions et grammaire (638 racines)
- Ajout scripts de maintenance (audit, correction consonnes rares, détection doublons)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 21:53:03 +08:00

68 lines
2.2 KiB
Python

#!/usr/bin/env python3
"""
Supprime les doublons dans 02-racines-standards.json
Garde les versions originales, supprime les nouvelles clés ajoutées
"""
import json
from pathlib import Path
LEXIQUE_DIR = Path(__file__).parent.parent / "ancien-confluent" / "lexique"
RACINES_FILE = LEXIQUE_DIR / "02-racines-standards.json"
# Clés à supprimer (les nouvelles versions qu'on a ajoutées)
DOUBLONS_A_SUPPRIMER = [
"agent", # doublon de "personne" (si elle existe ailleurs)
"proteger", # garder si pas de doublon
"duree", # doublon de "temps"
"materiau_bois", # doublon de "bois"
"negatif", # doublon de "mauvais"
"aliment", # garder si pas de doublon
"demeurer", # garder si pas de doublon
"souvenir" # doublon de "memoire"
]
def main():
print("🔧 Nettoyage des doublons dans 02-racines-standards.json\n")
with open(RACINES_FILE, 'r', encoding='utf-8') as f:
data = json.load(f)
print(f"Avant: {len(data['dictionnaire'])} entrées\n")
# Afficher les mots confluent et leurs clés
mots_conf = {}
for key, value in data['dictionnaire'].items():
mot = value['traductions'][0]['confluent']
if mot not in mots_conf:
mots_conf[mot] = []
mots_conf[mot].append(key)
# Trouver les vrais doublons (même mot confluent)
print("Doublons trouvés (même mot confluent):")
for mot, cles in sorted(mots_conf.items()):
if len(cles) > 1:
print(f" {mot}: {', '.join(cles)}")
print("\nSuppression des clés en doublon:")
removed = 0
for key in DOUBLONS_A_SUPPRIMER:
if key in data['dictionnaire']:
mot = data['dictionnaire'][key]['traductions'][0]['confluent']
print(f"{key} ({mot})")
del data['dictionnaire'][key]
removed += 1
print(f"\n{removed} doublons supprimés")
print(f"Après: {len(data['dictionnaire'])} entrées")
# Sauvegarder
with open(RACINES_FILE, 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
f.write('\n')
print(f"\n💾 Fichier sauvegardé")
if __name__ == "__main__":
main()