|
--- |
|
language: ru |
|
tags: |
|
- spam-detection |
|
- text-classification |
|
- russian |
|
- spam-filter |
|
- ruSpamNS |
|
- ruSpam |
|
license: cc-by-nc-4.0 |
|
metrics: |
|
- F1 |
|
model-index: |
|
- name: spamNS_v9_Detector |
|
results: |
|
- task: |
|
name: Классификация текста |
|
type: text-classification |
|
metrics: |
|
- name: F1 |
|
type: F1 |
|
value: 0.9 |
|
extra_gated_prompt: Для получения доступа к модели, пожалуйста, заполните форму ниже. |
|
extra_gated_fields: |
|
Зачем вам нужна модель?: text |
|
Согласие с правилами использования (обязательно): checkbox |
|
'Я подтверждаю, что: использование модели в коммерческих целях запрещено; при использовании модели в своих проектах я обязуюсь указывать ссылку на репозиторий модели; в противном случае я могу нести юридическую ответственность, а также доступ к модели будет незамедлительно отозван': checkbox |
|
Ваше имя: text |
|
Ваша фамилия: text |
|
Ваш номер телефона: text |
|
datasets: |
|
- NeuroSpaceX/ruSpamData_v13 |
|
--- |
|
|
|
# NeuroSpaceX/ruSpamNS_v9_Detector |
|
|
|
🚨 Для всех, кто запрашивал доступ, но он был закрыт или не выдан: |
|
❗ Пожалуйста, отмените запрос и отправьте его заново, иначе доступ не будет предоставлен! |
|
|
|
## Описание |
|
Это модель первичной классификации текста на спам и не спам, основанная на архитектуре руберта. Она определяет вероятность того, что сообщение является спамом. Если вероятность попадает в диапазон от 0.5 до 0.8, рекомендуется использовать модель [NeuroSpaceX/ruSpamNS_v9_Precision](https://huggingface.co/NeuroSpaceX/ruSpamNS_v9_Precision) для уточнения результата. |
|
|
|
Модель обучена на 2,5 млн сообщений и оптимизирована для обработки русскоязычного текста, включая сложные рекламные конструкции. |
|
|
|
## Использование |
|
```python |
|
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 |
|
|