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