Views
No views yet
| Текст | Предсказание |
|---|---|
длина 10 мм | числовая характеристика |
цвет - красный | текстовая характеристика |
покраска есть | булевая характеристика |
температура не менее 10 гр | диапазонная характеристика |
гарантия до 20.01.2002 | характеристика с датой |
размер 10x20x30 мм | составная размерная характеристика |
Тип этой характеристики — {label}entailment → класс подходитcontradiction → класс не подходит1диапазонная характеристика
2числовая характеристика
3текстовая характеристика
4булевая характеристика
5характеристика с датой
6составная размерная характеристика1from transformers import AutoTokenizer, AutoModelForSequenceClassification, pipeline
2
3MODEL_NAME = "GreenMap/xlm-roberta-large-xnli-ru-attribute-classifier"
4
5CANDIDATE_LABELS = [
6 "диапазонная характеристика",
7 "числовая характеристика",
8 "текстовая характеристика",
9 "булевая характеристика",
10 "характеристика с датой",
11 "составная размерная характеристика"
12]
13
14tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
15model = AutoModelForSequenceClassification.from_pretrained(MODEL_NAME)
16
17classifier = pipeline(
18 task="zero-shot-classification",
19 model=model,
20 tokenizer=tokenizer
21)
22
23def get_characteristic_type(text):
24 prefix = "Тип этой характеристики — {}"
25
26 result = classifier(
27 text,
28 CANDIDATE_LABELS,
29 hypothesis_template=prefix,
30 multi_label=False
31 )
32
33 return result["labels"][0], result["scores"][0]
34
35# Рекомендуется подавать характеристику в виде {"name"} : {"characteristic"}
36# Пример: Длина : не более 80 мм
37# Но не обязательно
38label, score = get_characteristic_type("длина не более 80 мм")
39print(label, score) # диапазонная характеристикаjoeddav/xlm-roberta-large-xnliТип этой характеристики — {label}