Модель для автоматической генерации ответов на отзывы клиентов, основанная на ruT5-base.
1Learning Rate: 1e-3
2Optimizer: Adafactor
3LR Scheduler: Cosine with warmup (10%)
4Epochs: 3
5Batch Size: 12
6Gradient Accumulation: 2 steps
7Label Smoothing: 0.1
8Weight Decay: 0.01
9Max Gradient Norm: 1.0
1from transformers import T5Tokenizer, T5ForConditionalGeneration
2
3# Загрузка модели
4model_path = "path/to/your/model"
5tokenizer = T5Tokenizer.from_pretrained(model_path)
6model = T5ForConditionalGeneration.from_pretrained(model_path)
7
8# Генерация ответа
9review = "Товар пришёл быстро, но упаковка была повреждена"
10input_text = f"Отзыв: {review}"
11
12input_ids = tokenizer(
13 input_text,
14 max_length=128,
15 truncation=True,
16 return_tensors="pt"
17).input_ids
18
19outputs = model.generate(
20 input_ids,
21 max_length=128,
22 num_beams=5,
23 early_stopping=True,
24 temperature=0.7,
25 top_p=0.9,
26 no_repeat_ngram_size=3
27)
28
29response = tokenizer.decode(outputs[0], skip_special_tokens=True)
30print(f"Ответ: {response}")
1def generate_response(review, temperature=0.7, top_p=0.9, num_beams=5):
2 """
3 Генерация ответа на отзыв
4
5 Args:
6 review: текст отзыва
7 temperature: контроль креативности (0.1-1.0)
8 top_p: nucleus sampling параметр
9 num_beams: количество лучей для beam search
10 """
11 input_text = f"Отзыв: {review}"
12
13 input_ids = tokenizer(
14 input_text,
15 max_length=128,
16 truncation=True,
17 padding=True,
18 return_tensors="pt"
19 ).input_ids.to(model.device)
20
21 outputs = model.generate(
22 input_ids,
23 max_length=128,
24 min_length=10,
25 num_beams=num_beams,
26 temperature=temperature,
27 top_p=top_p,
28 repetition_penalty=1.2,
29 length_penalty=1.0,
30 early_stopping=True,
31 no_repeat_ngram_size=3,
32 do_sample=True if temperature > 0 else False
33 )
34
35 response = tokenizer.decode(outputs[0], skip_special_tokens=True)
36 return response
37
38# Примеры использования
39positive_review = "Отличный товар, очень доволен покупкой!"
40print(generate_response(positive_review))
41
42negative_review = "Товар не соответствует описанию, разочарован"
43print(generate_response(negative_review, temperature=0.5))
1# Данные
2DATA_FILE = "your_dataset.parquet"
3BATCH_SIZE = 150000 # Размер батча для обучения
4
5# Гиперпараметры
6LR = 1e-3
7EPOCHS = 3
8BATCH_TRAIN = 12
9GRAD_ACCUM = 2
10
11# Оптимизации
12USE_GRADIENT_CHECKPOINTING = True
13USE_FP16 = True
1import pandas as pd
2
3df = pd.DataFrame({
4 'text_cleaned': ['Отличный товар!', 'Не пришла посылка'],
5 'answer_cleaned': ['Спасибо за отзыв!', 'Приносим извинения...']
6})
7
8df.to_parquet('dataset.parquet')
Модель основана на ruT5-base (Apache 2.0 License). Использование модели подразумевает соблюдение лицензии базовой модели.
Для вопросов и предложений по улучшению модели создайте issue в репозитории.