Multiantenní systém automatizace semantického jádra s aneb výsledkem hlasování
Skript řeší úkol automatického sběru semantiky: zadání masky, získání frekvence, export do tabulky. Nahrazuje rutinní cyklus Wordstat → Excel. Využívá dva zdroje dat: bezplatné API Bukvarix pro široký seznam synonym (zpoždění o několik měsíců) a placené XMLRiver pro reálný čas přes proxy k Yandex XML (bez captcha).
XMLRiver podporuje tři typy frekvencí:
- Základní:
rekonstrukce bytů→ 45 661 - Přesná:
"rekonstrukce bytů"→ 12 340 - Upravená:
[!rekonstrukce !bytů]→ 8 912
Dotazy paralelně na 10 vláknech s logikou opakování. Heuristika konkurence podle vzorce: score = (počet slov * 1000) / (frekvence + 1). Výsledek: 🟢 LEHCE (>50), 🟡 STŘEDNĚ (10–50), 🔴 TĚŽKÉ (<10).
Optimalizovaný pipeline zpracování klíčových slov
Přímý přístup na 3000+ klíčových slov není efektivní: duplicitní SERP dotazy. Pipeline filtrován postupně:
- Sběr: Bukvarix nebo XMLRiver → ~3000 klíčových slov.
- Regex Shield: odstranění šumu (inzeráty, Avito, útržky).
- Fuzzy Dedup: lemmatizace pomocí pymorphy2 + rapidfuzz (token_sort_ratio ≥82 %, seskupení podle prvního slova) → ~1500–2000 unikátních.
- Sběr SERP: 10 vláken na unikátní klíčová slova.
- Klastrování: NLP + SERP Veto.
- Intent a metriky.
Prahová hodnota 82 % byla zvolena empiricky: odstraňuje 30–40 % duplikátů (morfologie), ale nesplétá „rekonstrukce bytu cena“ a „rekonstrukce bytu“.
Klastrování s SERP Veto
SentenceTransformers (paraphrase-multilingual-MiniLM-L12-v2) pro vektorizaci. Problém NLP: semanticky blízká klíčová slova (např. „rekonstrukce bytů Moskva“ / „rekonstrukce bytů Voronež“) se nepodílejí na soutěži.
SERP Veto: TOP-10 Yandexu, průnik URL <2 → různé klastery:
overlap = len(urls_core.intersection(urls_cand))
if urls_core and urls_cand and overlap < 2:
continue # různé klastery
Režimy:
- Pouze NLP: vektorové výstupy, rychle.
- Pouze SERP: podle URL, přesně, pomalu.
- Hybridní: NLP + Veto, optimálně.
Geografická izolace: klíčová slova z různých měst se neskupují.
Multiantenní AI-filtrace s aneb výsledkem hlasování
LLM (DeepSeek) klasifikuje: vhodné / nevhodné / minus / zkontrolovat. Problematika: nestabilita (38 % stabilních při 3 bězích), chybí kontext oboru.
PlannerAgent
Generuje oborově specifický plán: few-shot, příklady, geofiltr.
Příklad:
- VHODNÉ: «rekonstrukce bytů pod klíč moskva».
- NEVHODNÉ: «práce rekonstrukce bytů».
Optimalizace tokenů
ID-numerační systém: model vrací pouze ID, nikoli text. Batcher 20 klíčových slov: ~80 tokenů místo 400.
Ensemble Voting
3 paralelní běhy (temperature=0), většinové hlasování (prah 2/3). Remíza → 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
Výsledek: stabilita ~85 %. Cena: $0,3 za 3000 klíčových slov.
Paranoidní režim: Whitelist (tokeny, ne substring) pro značky – přeskočí AI.
Další moduly
SERP-modul: parsování organického výsledku, souvisejících dotazů, reklamy, neuronových odpovědí.
AI-asistent: chat s pandas.query() nad dataframem.
Co je důležité
- Pipeline snižuje počet SERP dotazů z 3000 na 1500 díky Fuzzy Dedup (rapidfuzz + pymorphy2).
- Hybridní klastrování kombinuje rychlost NLP a přesnost SERP Veto.
- Ensemble 3x zvyšuje stabilitu AI-filtrace na 85 %.
- Úspora tokenů: ID-numerace + batch → $0,3 za kompletní běh.
- Čas zpracování: 20–30 minut místo 3–4 hodin ručně.
Technologický stack: Python 3.11, DeepSeek API, XMLRiver, SentenceTransformers, rapidfuzz, pymorphy2, pandas, customtkinter.
— Editorial Team
Zatím žádné komentáře.