Repository navigation
Expand file tree
/
Copy pathexample_usage.py
More file actions
55 lines (47 loc) · 4.24 KB
/
Copy pathexample_usage.py
File metadata and controls
55 lines (47 loc) · 4.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import torch
from sentence_transformers import SentenceTransformer, util
print("⏳ Загрузка стилометрической модели с Hugging Face...")
# Модель скачается автоматически и закешируется при первом запуске
model = SentenceTransformer('NullCoreDeveloper/stylometric-rubert-v5')
def get_similarity(text1, text2):
"""
Сравнивает два текста и возвращает процент сходства (от -1.0 до 1.0).
Чем ближе к 1.0, тем выше вероятность, что это один и тот же человек.
> 0.85 — Точно один человек (Твинк).
> 0.70 — Подозрение.
< 0.70 — Разные люди.
"""
# Превращаем тексты в векторы
emb1 = model.encode(text1, convert_to_tensor=True)
emb2 = model.encode(text2, convert_to_tensor=True)
# Считаем косинусное сходство
similarity = util.pytorch_cos_sim(emb1, emb2).item()
return similarity
# --- ПРИМЕР ИСПОЛЬЗОВАНИЯ ---
if __name__ == "__main__":
# Один и тот же человек, но совершенно другая тема (Смысловой сдвиг)
text_user_a_topic1 = """
Слушай, если мы реально хотим интегрировать эту нейросеть в телеграм-бота, нам нужно продумать архитектуру.
Текущий вариант работает слишком медленно и часто падает из-за нехватки памяти на сервере.
Я предлагаю поднять отдельный микросервис на FastAPI, который будет держать веса модели в оперативной памяти.
Тогда бот сможет просто кидать туда тексты по HTTP и мгновенно получать ответ, не перезапуская модель каждый раз.
"""
text_user_a_topic2 = """
Я вчера ходил в тот новый ресторан на набережной, про который все говорят.
Если честно, цены там вообще не соответствуют качеству, потому что порции крошечные, а еда пресная.
Я предлагаю в следующий раз пойти в проверенное место, которое мы обсуждали на прошлой неделе.
Тогда мы сможем нормально посидеть и пообщаться, не переплачивая за красивый интерьер.
"""
# Совершенно другой человек (другой стиль и лексика)
text_user_b = """
Короче, я посмотрел ваш код для бота и это полный кринж.
Вы зачем-то загружаете модель при каждом сообщении, от этого у вас сервак и ложится постоянно.
Сделайте нормально через вебхуки и вынесите инференс в отдельный докер контейнер.
Иначе оно у вас будет жрать гигабайты оперативки и лагать по 10 секунд на каждое сообщение от юзера.
"""
print("\n--- ТЕСТ 1: РАЗНЫЕ ЛЮДИ (Смысл один, стиль разный) ---")
sim_diff = get_similarity(text_user_a_topic1, text_user_b)
print(f"Сходство: {sim_diff:.3f} -> {'🚨 ОДИН ЧЕЛОВЕК' if sim_diff > 0.85 else '⚠️ ПОДОЗРЕНИЕ' if sim_diff > 0.70 else '✅ РАЗНЫЕ ЛЮДИ'}")
print("\n--- ТЕСТ 2: ОДИН ЧЕЛОВЕК (Стиль один, темы абсолютно разные) ---")
sim_same = get_similarity(text_user_a_topic1, text_user_a_topic2)
print(f"Сходство: {sim_same:.3f} -> {'🚨 ОДИН ЧЕЛОВЕК' if sim_same > 0.85 else '⚠️ ПОДОЗРЕНИЕ' if sim_same > 0.70 else '✅ РАЗНЫЕ ЛЮДИ'}")