You need to agree to share your contact information to access this model
This repository is publicly accessible, but you have to accept the conditions to access its files and content.
Для получения доступа к модели, пожалуйста, заполните форму ниже.
Log in or Sign Up to review the conditions and access this model content.
NeuroSpaceX/ruSpamNS_v9_Detector
🚨 Для всех, кто запрашивал доступ, но он был закрыт или не выдан: ❗ Пожалуйста, отмените запрос и отправьте его заново, иначе доступ не будет предоставлен!
Описание
Это модель первичной классификации текста на спам и не спам, основанная на архитектуре руберта. Она определяет вероятность того, что сообщение является спамом. Если вероятность попадает в диапазон от 0.5 до 0.8, рекомендуется использовать модель NeuroSpaceX/ruSpamNS_v9_Precision для уточнения результата.
Модель обучена на 2,5 млн сообщений и оптимизирована для обработки русскоязычного текста, включая сложные рекламные конструкции.
Использование
import re
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
model_detector = 'NeuroSpaceX/ruSpamNS_v9_Detector'
model_precision = 'NeuroSpaceX/ruSpamNS_v9_Precision'
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
# Загрузка моделей
model_detector = AutoModelForSequenceClassification.from_pretrained(model_detector, num_labels=1).to(device).eval()
model_precision = AutoModelForSequenceClassification.from_pretrained(model_precision, num_labels=1).to(device).eval()
tokenizer = AutoTokenizer.from_pretrained(model_detector)
def clean_text(text):
# Также очищайте текст от эмодзи!
text = text.strip()
text = text.replace('\n', ' ')
text = re.sub(r'[^\w\s,.!?]', '', text, flags=re.UNICODE)
text = re.sub(r'[!?]', '', text)
return text.lower()
def classify_message(message):
message = clean_text(message)
encoding = tokenizer(message, padding='max_length', truncation=True, max_length=128, return_tensors='pt')
input_ids = encoding['input_ids'].to(device)
attention_mask = encoding['attention_mask'].to(device)
with torch.no_grad():
# Предсказание через Detector
outputs_detector = model_detector(input_ids, attention_mask=attention_mask).logits
pred_detector = torch.sigmoid(outputs_detector).cpu().numpy()[0][0]
if 0.5 <= pred_detector <= 0.8:
# Если вероятность сомнительная, уточняем через Precision
with torch.no_grad():
outputs_precision = model_precision(input_ids, attention_mask=attention_mask).logits
pred_precision = torch.sigmoid(outputs_precision).cpu().numpy()[0][0]
is_spam = int(pred_precision >= 0.5)
else:
is_spam = int(pred_detector >= 0.5)
return is_spam
if __name__ == '__main__':
while True:
message = input("Введите сообщение для классификации (или 'exit' для выхода): ")
if message.lower() == 'exit':
break
is_spam = classify_message(message)
print(f"Сообщение {'является спамом' if is_spam else 'не является спамом'}")
Просьба при использовании данной модели указывать ссылку на данный репозиторий!
Цитирование
@MISC{NeuroSpaceX/ruSpamNS_v9,
author = {Kirill Fedko (NeuroSpaceX), Andrey Tolstóy},
title = {Russian Spam Classification Model},
url = {https://huggingface.co/NeuroSpaceX/ruSpamNS_v9_Detector},
year = 2024
}
Телеграм канал автора: https://t.me/spaceneuro
Бот, работающий на базе модели: https://t.me/ruSpamNS_bot
- Downloads last month
- 63