Skip to content

About

Модель стилометрического анализа на базе ruBERT. Определяет авторство русскоязычных текстов по синтаксическому «почерку», пробивая маскировку и смену темы.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

11 Commits

Folders and files

Repository files navigation

🕵️‍♂️ Russian Stylometry Detector (ruBERT V5)

visitors

Russian Stylometry Detector — это узкоспециализированная нейросеть, обученная на базе ruBERT с использованием механизма Triplet Loss и Hard Negative Mining. Модель предназначена для форензики и криминалистического анализа текста (стилометрии).

Её главная задача — определять, принадлежат ли два разных текста одному и тому же автору (деанонимизация твинков), опираясь на глубокий синтаксис, ритм и структуру мышления, игнорируя при этом попытки маскировки (смена регистра, удаление пунктуации или смену темы разговора).


🚀 Возможности (Особенности V5)

В отличие от стандартных языковых моделей (LLM) или моделей семантического поиска (Semantic Search), которые ищут похожесть смысла, эта модель ищет похожесть почерка:

  • Устойчивость к маскировке: Игнорирует намеренные орфографические ошибки, капс, нижний регистр и удаление запятых.
  • Игнорирование темы (Topic-Blind): Модель узнает автора, даже если в первом тексте он обсуждает программирование, а во втором — рецепт пирога.
  • Глубокий синтаксис: Жестко опирается на порядок слов, ритм дыхания (длину предложений) и использование союзов/предлогов.
  • Метод Центроидов (Vector Clouds): V5 оптимизирована для работы с усредненными векторными профилями авторов, что позволяет отсеивать шум (спам/копипасту) и достигать точности идентификации >85%.

📦 Установка и использование

Убедитесь, что у вас установлены необходимые библиотеки:

pip install torch sentence-transformers

Пример использования в коде (Python)

Вы можете загрузить веса локально из папки или напрямую с Hugging Face (если модель загружена туда):

from sentence_transformers import SentenceTransformer, util

# Загружаем модель напрямую из Hugging Face
model = SentenceTransformer('NullCoreDeveloper/stylometric-rubert-v5')

text_1 = "Я думаю, что нам нужно использовать другой подход к архитектуре. Текущий вариант работает слишком медленно."
text_2 = "Слушай, давай переделаем архитектуру. Она ваще лагает жестко и памяти жрет немерено."
text_twink = "я думаю что нам нужно юзать другой подход к архитектуре текущий варик работает слишком медленно"

# Превращаем тексты в векторы (эмбеддинги)
emb1 = model.encode(text_1, convert_to_tensor=True)
emb2 = model.encode(text_2, convert_to_tensor=True)
emb_twink = model.encode(text_twink, convert_to_tensor=True)

# Сравниваем (Косинусное сходство)
print("Разные люди:", util.pytorch_cos_sim(emb1, emb2).item())        # ~ 0.350 (Разные)
print("Один человек (Твинк):", util.pytorch_cos_sim(emb1, emb_twink).item()) # ~ 0.950 (Один человек)

Пороги срабатывания (Thresholds):

  • > 0.85 — 🚨 Точно один и тот же человек (Идеальное совпадение стиля).
  • 0.70 - 0.85 — ⚠️ Подозрение (Очень похожий паттерн).
  • < 0.70 — ✅ Разные люди.

🧪 Результаты стресс-тестов (Ablation Analysis)

Насколько падает уверенность модели при попытке злоумышленника замаскировать свой текст? (Чем ближе к нулю, тем сложнее её обмануть).

Тип маскировки Уверенность (V4) Уверенность (V5) Вердикт (Эволюция)
Удаление пунктуации -16.5% -47.8% В V5 пунктуация стала сильным маркером стиля автора.
Всё строчными буквами -25.8% -90.5% Жесткая реакция V5. Капитализация теперь — ключевой почерк.
Опечатки (15% слов) -3.7% -7.4% Обе версии абсолютно устойчивы к опечаткам.
Смена темы разговора -5.2% -6.2% Идеально. Обе версии игнорируют смену темы, если почерк сохранен.
Перемешанные слова -69.3% -107.1% КРАХ. V5 стала еще жестче карать за нарушение синтаксиса.

Разработано как Open-Source инструмент для криминалистического анализа текстов (форензики) и деанонимизации.

About

Модель стилометрического анализа на базе ruBERT. Определяет авторство русскоязычных текстов по синтаксическому «почерку», пробивая маскировку и смену темы.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Contributors

Languages