Retour à l'accueil

Système sémantique multi-agents avec ensemble

Le système automatise la collecte et le clustering des mots-clés en utilisant Bukvarix/XMLRiver, Fuzzy Dedup, NLP + SERP Veto. L'ensemble multi-agents DeepSeek assure une stabilité de filtration de 85 %. Le pipeline traite 3000 mots-clés en 20–30 min.

Du script au système sémantique multi-agents
Advertisement 728x90

Automatisation sémantique multi-agents avec vote d'ensemble

Ce script automatisé collecte les données sémantiques : entrez un masque, récupérez les fréquences, exportez dans un tableau. Il remplace le processus fastidieux Wordstat → Excel. Il utilise deux sources de données : l'API gratuite Bukvarix pour une couverture large des synonymes (avec un décalage mensuel) et XMLRiver payant pour des données en temps réel via proxy vers Yandex XML (sans CAPTCHA requis).

XMLRiver propose trois types de fréquence :

  • Basique : réparation appartement → 45 661
  • Exacte : "réparation appartement" → 12 340
  • Affinée : [!appartement !réparation] → 8 912

Les requêtes s'exécutent en parallèle sur 10 threads avec mécanisme de réessai. L'heuristique de compétitivité utilise la formule : score = (nombre_mots * 1000) / (fréquence + 1). Les résultats sont colorés :

Google AdInline article slot
  • 🟢 FACILE (>50)
  • 🟡 MOYEN (10–50)
  • 🔴 DUR (<10)

Pipeline optimisé de traitement des mots-clés

Une approche directe échoue sur plus de 3 000 mots-clés en raison de requêtes SERP en double. Le pipeline filtre étape par étape :

  • Collecte : Bukvarix ou XMLRiver → ~3 000 mots-clés.
  • Bouclier Regex : suppression du bruit (offres d'emploi, fragments Avito, termes incomplets).
  • Dé-duplication floue : lemmatisation pymorphy2 + rapidfuzz (token_sort_ratio ≥82 %), regroupés par premier mot → ~1 500 à 2 000 uniques.
  • Collecte SERP : 10 threads par mot-clé unique.
  • Regroupement : NLP + veto SERP.
  • Intention & métriques.

Le seuil de 82 % a été ajusté empiriquement : il supprime 30 à 40 % des doublons (morphologie), sans fusionner des expressions distinctes comme "prix réparation appartement" et "coût réparation appartement".

Regroupement avec veto SERP

SentenceTransformers (paraphrase-multilingual-MiniLM-L12-v2) génère des embeddings. Défi NLP : des termes sémantiquement proches (ex. "réparation appartement Moscou" vs. "réparation appartement Voronej") ne se disputent pas.

Google AdInline article slot

Veto SERP : si les 10 premiers résultats Yandex ont moins de 2 URL communes, ils sont traités comme des clusters distincts :

overlap = len(urls_core.intersection(urls_cand))
if urls_core and urls_cand and overlap < 2:
    continue  # clusters différents

Modes :

  • NLP uniquement : rapide, basé sur les embeddings.
  • SERP uniquement : précis, lent, basé sur les URLs.
  • Hybride : NLP + Veto — meilleur compromis.

Isolation géographique : les mots-clés provenant de villes différentes ne sont pas regroupés.

Google AdInline article slot

Filtrage IA multi-agents avec vote d'ensemble

LLM (DeepSeek) classe : pertinent / non pertinent / moins / vérifier. Problèmes : instabilité (38 % stable sur 3 exécutions), manque de contexte spécifique.

PlannerAgent

Génère des plans spécifiques au secteur grâce à une mise en œuvre par exemple, détection de pièges et filtrage géo.

Exemple :

  • PERTINENT : "réparation appartement clé en main Moscou"
  • NON PERTINENT : "offre emploi réparation appartement"

Optimisation des jetons

Numérotation des ID : le modèle retourne uniquement les IDs, pas le texte. Taille de lot de 20 clés → ~80 jetons contre ~400 auparavant.

Vote d'ensemble

Trois exécutions parallèles (température=0), vote majoritaire (seuil=2/3). Égalité → ArbiterAgent.

def single_vote(_):
    response = ai_client.call(system_prompt, user_message, temperature=0)
    return ai_client.parse_json(response)

with ThreadPoolExecutor(max_workers=votes) as vote_pool:
    vote_results = list(vote_pool.map(single_vote, range(votes)))

counts = Counter(votes_for_keyword)
threshold = votes // 2 + 1

Résultat : stabilité ~85 %. Coût : 0,3 $ pour 3 000 mots-clés.

Mode paranoïaque : liste blanche (correspondance exacte de jetons, pas sous-chaînes) pour les marques — contourne complètement l'IA.

Modules supplémentaires

Module SERP : analyse les résultats organiques, requêtes associées, annonces et réponses neuronales.

Assistant IA : interface chat avec pandas.query() sur le dataframe.

Points clés

  • Le pipeline réduit les requêtes SERP de 3 000 à 1 500 grâce à la dé-duplication floue (rapidfuzz + pymorphy2).
  • Le regroupement hybride combine vitesse NLP et précision du veto SERP.
  • Le vote d'ensemble (3x) améliore la stabilité du filtrage IA à 85 %.
  • Économie de jetons : numérotation des ID + lotissement → 0,3 $ par exécution complète.
  • Temps de traitement : 20 à 30 minutes contre 3 à 4 heures manuellement.

Stack technique : Python 3.11, API DeepSeek, XMLRiver, SentenceTransformers, rapidfuzz, pymorphy2, pandas, customtkinter.

— Editorial Team

Advertisement 728x90

Lire ensuite