3amia · AI — C'est quoi ?

3amia · AI est un dictionnaire collaboratif des dialectes arabes, construit par et pour la communauté. Chaque mot est documenté avec exemples, schèmes et traductions — grâce aux contributions de milliers de locuteurs.

3 772

mots

11

dialectes

0

contributions

3amia · AI doit son nom à deux racines arabes : زاد (zaada, «augmenter», «enrichir») et نا (na, «nous»). Littéralement : « Enrichissons ensemble ».

La 3amiya (l'arabe dialectal) est la langue du quotidien pour plus de 400 millions de personnes. Pourtant, elle est rarement documentée de façon structurée. Ce projet cherche à changer ça, un mot à la fois.

Chaque mot peut être accompagné d'une traduction française, d'un exemple d'utilisation, de ses variantes morphologiques et de ses équivalents dans d'autres dialectes.

Chaque contribution est relue et validée par l'équipe avant publication, pour garantir la qualité et la richesse de chaque fiche.

Pourquoi ce dictionnaire ?

Plus de 400 millions de personnes parlent l'arabe dialectal au quotidien : tunisien, marocain, algérien, égyptien, levantin… Pourtant, aucune ressource structurée n'existait pour documenter ces langues vivantes de façon ouverte et collaborative.

L'arabe classique (MSA) est bien documenté, mais personne ne l'utilise à la maison. Les dialectes, eux, évoluent, se mélangent, s'inventent — et disparaissent si on ne les note pas. Ce projet est une tentative de changer ça, un mot à la fois.

Ajouter un mot en 30 secondes

  1. 1

    Ouvre le formulaire

    Va sur /ajouter — pas besoin de compte ni d'inscription.

  2. 2

    Remplis les champs

    Le mot en arabe, sa traduction française, le dialecte. Un exemple d'usage si tu l'as.

  3. 3

    Envoie

    La contribution est examinée par l'équipe et publiée sous 24–48h.

De la soumission à la publication

01

Détection des doublons

La contribution est comparée aux mots déjà en base — insensible aux diacritiques arabes.

02

Vérification de la translittération

Le système Maghreb chiffré (3=ع, 7=ح, 9=ق…) est validé automatiquement.

03

Analyse morphologique IA

Gemini propose le schème et la racine. L'admin les valide ou les corrige.

04

Publication

Une fois validé, le mot est publié et visible dans le dictionnaire sous 24–48h.

Recherche par racine consonantique

Explore la famille morphologique complète d'un mot.

Module QCM

Teste ton vocabulaire dialectal avec des quiz thématiques.

Expansion des dialectes

Algérien, marocain, égyptien… enrichissement en cours.

Audio & prononciation

Enregistrements natifs pour chaque mot.

Application mobile

Accès hors-ligne et notification "mot du jour".

Voir tout l'historique →
v1.38.9Août 2026
  • scripts/test_groq_vision.py — conclusion définitive : qwen/qwen3.6-27b non viable sur Groq on_demand : campagne de tests en 5 runs (HTTP 401 → 200 thinking tronqué → 413 TPM → 200 thinking tronqué → 400 "thinking unsupported"). Résultat : aucun mécanisme API ne permet de désactiver le thinking sur ce modèle via Groq — /no_think ignoré, "thinking": {"budget_tokens": 0} → HTTP 400, message système prohibitif → sans effet. Le thinking consomme les 4096 tokens entiers avant d'émettre le moindre JSON (finish_reason: "length" systématique). La limite TPM on_demand (8000) interdit par ailleurs max_completion_tokens > ~6000 (HTTP 413). Le script est conservé à titre documentaire avec les commentaires d'explication. Gemini reste le seul provider OCR viable. Parsing défensif <think>...</think> et strip avant { ajoutés au cas où un futur modèle émettrait un résidu de thinking.
v1.38.8Août 2026
  • scripts/test_groq_vision.py (script jetable) : test Groq Vision sur une seule image Drive (dossier Tounsi) avec le même PROMPT_VISION que le pipeline principal. Modèle qwen/qwen3.6-27b (Qwen 3.6 27B, multimodal vision, actif sur Groq août 2026 — llama-4-scout et llama-4-maverick dépréciés mars 2026). Auth Drive identique à scan_drive_import.py (priorité GOOGLE_SERVICE_ACCOUNT_JSON). Affiche la réponse JSON brute + parsing des entrées extraites + usage tokens. scan_drive_import.py inchangé.
  • .github/workflows/test-groq.yml : workflow GitHub Actions workflow_dispatch uniquement (pas de cron). Secrets : GROQ_API_KEY + GOOGLE_SERVICE_ACCOUNT_JSON. Options filename (image spécifique) et verbose (détails HTTP). Permet de déclencher le test depuis GitHub mobile sans clone local.
v1.38.7Août 2026
  • scan-import.yml — cron 06h → 09h UTC : le cron quotidien est décalé de 0 6 * * * à 0 9 * * * pour tourner après le reset du quota gratuit Gemini 2.5 Flash (~08h UTC / 00h PST). Le modèle utilisé (gemini-2.5-flash, ~1500 RPD sur le palier gratuit) était déjà le bon — aucun changement de modèle nécessaire.
v1.38.6Août 2026
  • scan_drive_import.py — prompt Gemini : traduction EN→FR obligatoire : section "TRADUCTION FRANÇAISE — OBLIGATOIRE" ajoutée au prompt Vision. Gemini traduit maintenant la glose anglaise (ex: "clan, tribe") en français ("clan, tribu") quand aucune traduction FR n'est directement visible. translation_fr ne doit jamais être null si un sens est lisible sur l'image. Même règle pour example_fr. Résout le problème de toutes les entrées classées low_confidence alors que Gemini extrayait bien les données (mais en anglais uniquement).
  • scan_drive_import.py — seuil low_confidence assoupli : has_required ne vérifie plus que word_ar et translation_fr. example_ar et pos_type absents ne classent plus une entrée en low_confidence — leur absence génère un warning mais la fiche reste extracted_new si les deux champs fondamentaux sont présents.
  • scan_drive_import.py — retry Gemini sur quota (429) : au lieu d'un exit immédiat sur 429, le script tente jusqu'à 2 retries avec un backoff progressif (65s, 130s) pour laisser le fenêtrage RPM se réinitialiser. Exit 2 seulement après la 3ème tentative échouée. Constante DELAY_QUOTA = 65 ajoutée.
  • Idempotence confirmée : save_processed_id() est appelé par image (pas en batch final) — si Gemini retourne un quota fatal à l'image N, les images 1..N-1 déjà traitées sont bien persistées et le run suivant reprend proprement depuis N.
v1.38.5Août 2026
  • scan_drive_import.py — fix TypeError insert_staging : row.get('translation_fr', '')[:40] crashait quand Gemini retourne None pour un champ (dict.get(key, default) ne retourne le défaut que si la clé est absente, pas si elle vaut None). Fix : (row.get(key) or '') pour tous les champs texte de l'affichage dry-run (translation_fr, pos_type, duplicate_of_word_ar, duplicate_match_type, status) + (row.get('confidence_score') or 0) pour le champ numérique. Un champ None de Gemini produit maintenant un champ vide (ou low_confidence) sans faire planter le run entier.
v1.38.4Août 2026
  • scan_drive_import.py — fix Gemini Vision (bloquant) : thinking_config retiré du GenerationConfig — champ non supporté par google-generativeai < 0.9 (CI). Toutes les images échouaient avec "Unknown field for GenerationConfig: thinking_config". max_output_tokens augmenté de 2048 à 8192 pour absorber le budget thinking interne de Gemini 2.5 Flash (cf. gotcha documenté dans CLAUDE.md). Modèle gemini-2.5-flash inchangé.
v1.38.3Août 2026
  • scan_drive_import.py — Bug 1 (bloquant) : fix syntaxe Drive API v3 dans list_drive_images() — parentId='{id}' remplacé par '{id}' in parents (syntaxe v3 correcte). L'ancienne syntaxe générait HttpError 400 Invalid Value sur le paramètre q et empêchait tout listing de dossier.
  • scan_drive_import.py — Bug 2 (non bloquant) : la colonne staging_scan_words.drive_file_id n'existait pas en base — le script la lisait pour l'idempotence et échouait silencieusement. Migration SQL créée : supabase/migrations/20260829000001_add_drive_file_id_to_staging_scan_words.sql (ADD COLUMN IF NOT EXISTS drive_file_id TEXT + index). Le code d'insertion existant peuple déjà la colonne (aucun changement script nécessaire pour la partie écriture).
  • supabase/migrations/ : nouveau dossier de migrations SQL versionnées dans le repo.
v1.38.2Août 2026
  • .github/workflows/scan-import.yml : workflow GitHub Actions pour l'import Drive depuis le cloud (PC éteint, déclenchable depuis le téléphone). workflow_dispatch avec inputs dialect (défaut TN), limit (vide = tout), dry_run (défaut true) + cron quotidien 6h UTC (dry_run auto-désactivé). Secrets requis : SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY, GOOGLE_AI_API_KEY, GOOGLE_SERVICE_ACCOUNT_JSON. load_dotenv tolère l'absence de .env.local en CI (guard if ENV_FILE.exists() déjà en place).
  • CLAUDE.md : section "Run cloud via GitHub Actions" avec tableau des déclencheurs, inputs, secrets requis.