feat(tg): реальные абузы из Telegram без сессии — адаптер tg_web переписан (служебное/пустыши отсекаются, заголовок из тела, порог 12/8 для leak-каналов), 19 живых каналов из 87 проверенных, сигнал абуза в score (+до 1.8), tools/tg_discover.py, tools/fixtg.py, tools/purge_tg_junk.py, tools/rescore.py; реестр 869, база 7295 (ab_ 3135, tg_ 374); тесты 19
This commit is contained in:
20
omni/rank.py
20
omni/rank.py
@@ -1,10 +1,25 @@
|
||||
"""Скор записи: вес провайдера + вовлечённость + свежесть + ценник + объём текста."""
|
||||
"""Скор записи: вес провайдера + вовлечённость + свежесть + ценник + объём текста + сигнал абуза."""
|
||||
import re
|
||||
import time
|
||||
|
||||
WEIGHT = {"reddit": 1.15, "x": 1.10, "forums": 1.0, "tavily": 1.0, "exa": 1.0,
|
||||
"firecrawl": 0.9, "you": 0.9, "ddg": 0.75, "cards": 0.35, "treg": 0.8}
|
||||
|
||||
ABUSE_TERMS = re.compile(
|
||||
r"(cve-\d{4}-\d+|0day|0-day|zero[- ]day|exploit|rce|sqli|xss|ssrf|rce|"
|
||||
r"leak|leaked|dump|breach|combo[- ]?list|stealer|ransomware|botnet|credentials|"
|
||||
r"password[s]?|api[- ]?key[s]?|token[s]?|аккаунт\w*|база|слив\w*|утечк\w*|комбо|"
|
||||
r"взлом|эксплойт|уязвим\w*|парол\w*|ключи)",
|
||||
re.I)
|
||||
|
||||
|
||||
def _abuse(it):
|
||||
"""Реальные абузы должны всплывать выше новостей: считаем сигнальные термины."""
|
||||
blob = f"{it.title} {it.text}"[:2000]
|
||||
hits = len({m.group(0).lower() for m in ABUSE_TERMS.finditer(blob)})
|
||||
return min(4, hits)
|
||||
|
||||
|
||||
KIND_BONUS = {"tweet": 0.15, "thread": 0.25, "tg_post": 0.2, "card": 0.05, "result": 0.1, "post": 0.1}
|
||||
|
||||
|
||||
@@ -32,7 +47,8 @@ def score(it):
|
||||
priced = 0.35 if it.price else 0.0
|
||||
body = min(1.0, len(it.text) / 1200.0)
|
||||
eng = min(3.0, base ** 0.5) if base > 1 else base
|
||||
total = (w * (1.0 + eng) + fresh * 1.2 + priced + body + KIND_BONUS.get(it.kind, 0.0))
|
||||
total = (w * (1.0 + eng) + fresh * 1.2 + priced + body + KIND_BONUS.get(it.kind, 0.0)
|
||||
+ 0.45 * _abuse(it))
|
||||
it.score = round(total, 4)
|
||||
return it
|
||||
|
||||
|
||||
Reference in New Issue
Block a user