ИИ-модель для пересказа текста на Python
Разработка программного обеспечения для пересказа текста с использованием Python и Hugging Face Transformers
Пересказ текста с использованием искусственного интеллекта (ИИ) - это процесс автоматического создания краткого пересказа длинного текста. Такой софт может быть полезен в различных областях, включая журналистику, образование и автоматизацию контента. В этой статье мы рассмотрим, как создать такую программу, используя Python и библиотеку Hugging Face Transformers. Мы пройдем через все этапы, начиная с установки необходимых инструментов и заканчивая обучением модели и её использованием для пересказа текста.
Шаги создания софта для пересказа текста:
1. Установка необходимых библиотек. 2. Загрузка и предобработка данных. 3. Настройка и обучение модели. 4. Использование обученной модели для пересказа текста. 5. Развертывание модели и создание API.
1. Установка необходимых библиотек
Для начала необходимо установить библиотеки `transformers` и `datasets`. Библиотека `transformers` предоставляет доступ к множеству моделей для обработки естественного языка, а `datasets` облегчает работу с различными наборами данных.
pip install transformers datasets
2. Загрузка и предобработка данных
Для обучения модели нам потребуется набор данных, содержащий статьи и их краткие пересказы. В данном примере мы будем использовать датасет CNN/DailyMail.
from datasets import load_dataset
# Загрузка датасета CNN/DailyMail
dataset = load_dataset("cnn_dailymail", "3.0.0")
train_data = dataset['train']
validation_data = dataset['validation']
test_data = dataset['test']
После загрузки данных необходимо их предобработать. Это включает в себя подготовку входных данных и меток для обучения модели.
from transformers import T5Tokenizer
# Загрузка токенайзера
tokenizer = T5Tokenizer.from_pretrained('t5-small')
# Функция для предобработки данных
def preprocess_data(batch):
inputs = ["summarize: " + doc for doc in batch['article']]
model_inputs = tokenizer(inputs, max_length=512, truncation=True, padding="max_length", return_tensors="pt")
with tokenizer.as_target_tokenizer():
labels = tokenizer(batch['highlights'], max_length=150, truncation=True, padding="max_length", return_tensors="pt")
model_inputs['labels'] = labels['input_ids']
return model_inputs
# Применение предобработки к датасету
train_data = train_data.map(preprocess_data, batched=True, remove_columns=["article", "highlights", "id"])
validation_data = validation_data.map(preprocess_data, batched=True, remove_columns=["article", "highlights", "id"])
3. Настройка и обучение модели
Мы будем использовать модель T5 (Text-To-Text Transfer Transformer), которая специально разработана для задач преобразования текста.
from transformers import T5ForConditionalGeneration, Trainer, TrainingArguments
# Загрузка модели
model = T5ForConditionalGeneration.from_pretrained('t5-small')
# Настройка параметров обучения
training_args = TrainingArguments(
output_dir="./results",
evaluation_strategy="epoch",
learning_rate=2e-5,
per_device_train_batch_size=4,
per_device_eval_batch_size=4,
num_train_epochs=1,
weight_decay=0.01,
save_total_limit=3,
remove_unused_columns=False,
logging_dir='./logs',
)
# Создание тренера
trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_data,
eval_dataset=validation_data
)
# Обучение модели
trainer.train()
4. Использование обученной модели для пересказа текста
После завершения обучения модели, мы можем использовать её для пересказа текста. Вот пример функции для пересказа текста:
# Функция для пересказа текста
def summarize(text):
inputs = tokenizer.encode("summarize: " + text, return_tensors="pt", max_length=512, truncation=True)
summary_ids = model.generate(inputs, max_length=150, min_length=40, length_penalty=2.0, num_beams=4, early_stopping=True)
summary = tokenizer.decode(summary_ids[0], skip_special_tokens=True)
return summary
# Пример использования
example_text = """
Your example article text goes here. It should be a longer piece of text that you want the model to summarize.
"""
summary = summarize(example_text)
print("Summary:", summary)
5. Развертывание модели и создание API
Для того чтобы другие пользователи могли использовать вашу модель, нужно развернуть её и создать API. Для этого можно использовать фреймворки, такие как Flask или FastAPI.
Создание API с использованием FastAPI
from fastapi import FastAPI
from pydantic import BaseModel
class TextRequest(BaseModel):
text: str
@app.post("/summarize/")
def summarize_text(request: TextRequest):
summary = summarize(request.text)
return {"summary": summary}
# Запуск приложения
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)
Теперь вы можете запустить сервер и использовать API для получения пересказа текста.
uvicorn your_script_name:app --reload
В этой статье мы подробно рассмотрели процесс создания программного обеспечения для пересказа текста, начиная с установки необходимых библиотек и заканчивая развертыванием модели и созданием API. Этот подход можно адаптировать и улучшить в зависимости от ваших конкретных потребностей и требований.
Создание такого софта включает несколько ключевых этапов:
1. Установка и настройка необходимых инструментов.
2. Загрузка и предобработка данных.
3. Обучение модели.
4. Использование модели для пересказа текста.
5. Развертывание модели и создание API.
Следуя этим шагам, вы сможете создать эффективное решение для автоматического пересказа текста, которое можно использовать в различных приложениях.