Downloads · 30 days
0
0% of all-time downloads
baldic/otzovik
otzovik is a text generation model from baldic. Use it when you need the model to write or continue text. It is set up for transformers. The card lists the license as apache-2.0.
Модель для автоматической генерации ответов на отзывы клиентов, основанная на ruT5-base.
Downloads · 30 days
0
0% of all-time downloads
All-time downloads
10
Public
Repo size
—
Likes
0
Public
Click a slice to open those files.
.md9 KB · 86%
From the Hugging Face model README
Модель для автоматической генерации ответов на отзывы клиентов, основанная на ruT5-base.
Эта модель fine-tuned на основе ai-forever/ruT5-base для задачи генерации ответов на отзывы покупателей интернет-магазинов. Модель обучена на датасете из ~2.5 миллионов пар "отзыв-ответ" и способна генерировать релевантные, вежливые и профессиональные ответы на русском языке.
ai-forever/ruT5-baseLearning Rate: 1e-3
Optimizer: Adafactor
LR Scheduler: Cosine with warmup (10%)
Epochs: 3
Batch Size: 12
Gradient Accumulation: 2 steps
Label Smoothing: 0.1
Weight Decay: 0.01
Max Gradient Norm: 1.0
pip install transformers torch pandas
from transformers import T5Tokenizer, T5ForConditionalGeneration
# Загрузка модели
model_path = "path/to/your/model"
tokenizer = T5Tokenizer.from_pretrained(model_path)
model = T5ForConditionalGeneration.from_pretrained(model_path)
# Генерация ответа
review = "Товар пришёл быстро, но упаковка была повреждена"
input_text = f"Отзыв: {review}"
input_ids = tokenizer(
input_text,
max_length=128,
truncation=True,
return_tensors="pt"
).input_ids
outputs = model.generate(
input_ids,
max_length=128,
num_beams=5,
early_stopping=True,
temperature=0.7,
top_p=0.9,
no_repeat_ngram_size=3
)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(f"Ответ: {response}")
def generate_response(review, temperature=0.7, top_p=0.9, num_beams=5):
"""
Генерация ответа на отзыв
Args:
review: текст отзыва
temperature: контроль креативности (0.1-1.0)
top_p: nucleus sampling параметр
num_beams: количество лучей для beam search
"""
input_text = f"Отзыв: {review}"
input_ids = tokenizer(
input_text,
max_length=128,
truncation=True,
padding=True,
return_tensors="pt"
).input_ids.to(model.device)
outputs = model.generate(
input_ids,
max_length=128,
min_length=10,
num_beams=num_beams,
temperature=temperature,
top_p=top_p,
repetition_penalty=1.2,
length_penalty=1.0,
early_stopping=True,
no_repeat_ngram_size=3,
do_sample=True if temperature > 0 else False
)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
return response
# Примеры использования
positive_review = "Отличный товар, очень доволен покупкой!"
print(generate_response(positive_review))
negative_review = "Товар не соответствует описанию, разочарован"
print(generate_response(negative_review, temperature=0.5))
Модель обучалась с использованием:
Используйте прилагаемый скрипт train.py:
python train.py
Основные параметры можно изменить в секции main():
# Данные
DATA_FILE = "your_dataset.parquet"
BATCH_SIZE = 150000 # Размер батча для обучения
# Гиперпараметры
LR = 1e-3
EPOCHS = 3
BATCH_TRAIN = 12
GRAD_ACCUM = 2
# Оптимизации
USE_GRADIENT_CHECKPOINTING = True
USE_FP16 = True
Датасет должен быть в формате Parquet с колонками:
text_cleaned - текст отзываanswer_cleaned - текст ответаimport pandas as pd
df = pd.DataFrame({
'text_cleaned': ['Отличный товар!', 'Не пришла посылка'],
'answer_cleaned': ['Спасибо за отзыв!', 'Приносим извинения...']
})
df.to_parquet('dataset.parquet')
Модель основана на ruT5-base (Apache 2.0 License). Использование модели подразумевает соблюдение лицензии базовой модели.
Для вопросов и предложений по улучшению модели создайте issue в репозитории.
Важно: Рекомендуется тестировать ответы модели перед использованием в продакшене и настроить модерацию для обработки edge cases.