Edit model card
YAML Metadata Warning: empty or missing yaml metadata in repo card (https://huggingface.co/docs/hub/model-cards#model-card-metadata)

Описание

Модель для классификации сметных строительных ресурсов по группам классификатора, публикуемого Минстроем РФ. За основу классификатора приняты классификаторы 2017-2020 гг. Базовая модель - BERT for Sequence Classification.

Использование

tokenizer = AutoTokenizer.from_pretrained('Gigon/ruBert_for_construction_resourse_classification')
model = BertForSequenceClassification.from_pretrained('Gigon/ruBert_for_construction_resourse_classification', num_labels=2893)

def evaluate(text, model, tokenizer, device):
    with torch.no_grad():
        model.eval()
        model.to(device)
        text_tokenized = tokenizer(text, return_tensors='pt')
        output = model(text_tokenized['input_ids'], attention_mask=text_tokenized['attention_mask'], token_type_ids=text_tokenized['token_type_ids'])
    return output

def classify(text, n, KSR, model, tokenizer, device):
    output = evaluate(text, model, tokenizer, device)
    output = torch.nn.functional.normalize(output.logits)
    result = sorted(list(zip(KSR['code_KSR'], KSR['name_KSR'], output.numpy()[0][1:])), key=lambda item: -item[2])[:n]
    return result

def cousine_sim(sentence, candidate, model, tokenizer, device):
    output_sentence = evaluate(sentence, model.bert, tokenizer, device)
    sentence_emb = torch.nn.functional.normalize(output_sentence.last_hidden_state[:,0,:])
    output_candidate = evaluate(candidate, model.bert, tokenizer, device)
    candidate_emb = torch.nn.functional.normalize(output_candidate.last_hidden_state[:,0,:])
    result = torch.matmul(sentence_emb[0], candidate_emb[0])
    return result

print(classify('мастика из битума', 3, KSR, model, tokenizer, 'cpu'))

[('01.2.03.03', 'Группа 01.2.03.03: Мастики битумосодержащие',            0.19304055),
 ('14.5.04.08', 'Группа 14.5.04.08: Мастики, не включенные в группы',     0.14259844),
 ('01.5.01.01', 'Группа 01.5.01.01: Краски разметочные дорожные',         0.046304163)]

print(classify('армокаркас из арматурной стали класса А500', 3, KSR, model, tokenizer, 'cpu'))

[('08.4.02.03', 'Группа 08.4.02.03: Каркасы арматурные',                  0.102737375),
 ('08.4.02.04', 'Группа 08.4.02.04: Каркасы металлические',               0.055409335),
 ('07.2.07.04', 'Группа 07.2.07.04: Конструкции индивидуальные сварные',  0.048963238)]

print(cousine_sim('бетон класса B40', 'смесь бетонная тяжелая', model, tokenizer, 'cpu').item())

0.6447

license: apache-2.0 language: - ru pipeline_tag: text-classification

Downloads last month
0
Safetensors
Model size
131M params
Tensor type
F32
·
Inference API
Unable to determine this model's library. Check the docs .