/ Модель

Характеристики

Контекст
512 токенов
Лицензия
Apache 2.0
Опубликована
23 июл 2026

property-pilot-triage

Классификация текстаТекст → label

Англоязычная модель PropertyPilot на базе DistilBERT классифицирует заявки по обслуживанию недвижимости по категории проблемы и срочности.

0скачиваний за 30 дней0лайковвеса обновлены30 июл 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

PropertyPilot Triage Classifier — англоязычный классификатор обращений по обслуживанию недвижимости, разработанный в рамках проекта PropertyPilot. Модель DistilBERT на базе distilbert-base-uncased дообучена на синтетических заявках и использует две классификационные головы: определяет одну из 10 категорий неисправностей и один из 4 уровней срочности с рекомендуемым сроком реакции.

Модель предназначена для первичной сортировки заявок жильцов и распределения их по типу проблемы и приоритету. В README сообщаются macro F1 0,972 для категории и 0,761 для срочности; метки срочности сформированы по ключевым словам и тесно связаны с содержанием сценария, поэтому эти результаты не гарантируют качество на реальных заявках. Обучение проводилось на синтетических данных, максимальная длина входа — 128 токенов. Репозиторий содержит PyTorch state dict. Лицензия — Apache-2.0.

Сценарии применения

  • сортировка заявок жильцов по типу неисправности
  • определение срочности обращения по тексту заявки
  • выделение аварийных заявок для быстрой эскалации
  • автоматическая маршрутизация заявок в службу эксплуатации

Ограничения

Модель обучена на синтетических заявках, поэтому её качество на реальных обращениях может отличаться. Качество классификации срочности ограничено тем, что обучающие метки получены по ключевым словам; максимальная длина входа — 128 токенов.

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

PropertyPilot Triage Classifier

DistilBERT finetuned on 10,980 synthetic property maintenance tickets with two classification heads:

  • Category (10 classes): Appliances, Common Areas, Electrical, Elevator, HVAC, Noise, Pests, Plumbing, Security, Structural
  • Urgency (4 classes): P1 Emergency (4h), P2 Urgent (24h), P3 Standard (3-5d), P4 Scheduled (7-14d)

Part of the PropertyPilot project — an AI-powered property maintenance triage system.

Performance

TaskZero-shot F1Finetuned F1Improvement
Category (macro)0.0320.972+0.939
Urgency (macro)0.0620.761+0.700

Urgency labels are derived from ticket text content (keyword-based rule classifier), making them strongly correlated with the actual maintenance scenario described.

Dataset

Trained on propertypilot/property-pilot-tickets:

  • 13,726 clean rows, 10 categories, 4 urgency tiers
  • Brackets/template placeholders stripped, ispers corruption fixed
  • 80/10/10 stratified train/val/test split

Model Architecture

DistilBertModel (distilbert-base-uncased)
  -> CLS token -> Dropout(0.1)
  -> Linear(768, 10)  # category head
  -> Linear(768, 4)   # urgency head

Training

  • Epochs: 5, LR: 2e-5, Batch: 32, Max seq len: 128
  • AdamW + linear warmup (10%) + gradient clipping
  • Joint loss: CrossEntropy(category) + CrossEntropy(urgency)

Files

FileDescription
model.ptPyTorch state dict (best checkpoint by combined val F1)
label_map.jsonid2label / label2id for both heads
tokenizer_config.jsonTokenizer config (distilbert-base-uncased fast tokenizer)
tokenizer.jsonFast tokenizer file
distilbert_config.jsonBase DistilBERT config
eval_results.jsonFull training history + test metrics
confusion_cat.pngCategory confusion matrix
confusion_urg.pngUrgency confusion matrix

Inference

import torch, json
from transformers import DistilBertModel, DistilBertTokenizerFast
import torch.nn as nn

class TriageClassifier(nn.Module):
    def __init__(self, n_cat, n_urg):
        super().__init__()
        self.bert = DistilBertModel.from_pretrained("distilbert-base-uncased")
        self.dropout = nn.Dropout(0.1)
        self.cat_head = nn.Linear(768, n_cat)
        self.urg_head = nn.Linear(768, n_urg)

    def forward(self, input_ids, attention_mask):
        out = self.bert(input_ids=input_ids, attention_mask=attention_mask)
        cls = self.dropout(out.last_hidden_state[:, 0])
        return self.cat_head(cls), self.urg_head(cls)

# Load
label_map = json.load(open("label_map.json"))
tokenizer = DistilBertTokenizerFast.from_pretrained("distilbert-base-uncased")
model = TriageClassifier(n_cat=10, n_urg=4)
model.load_state_dict(torch.load("model.pt", map_location="cpu"))
model.eval()

# Predict
text = "gas leak in kitchen, can smell it strongly"
enc = tokenizer(text, return_tensors="pt", max_length=128, truncation=True, padding="max_length")
with torch.no_grad():
    cat_logits, urg_logits = model(enc["input_ids"], enc["attention_mask"])

cat = label_map["category_id2label"][str(cat_logits.argmax(-1).item())]
urg = label_map["urgency_id2label"][str(urg_logits.argmax(-1).item())]
print(f"Category: {cat} | Urgency: {urg}")

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм

Нельзя запустить

В репозитории нет config.json: не понять архитектуру модели.

Ревизия весов
20e6214

0 моделей