May 30

ИИ-модель для пересказа текста на 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.

Установка FastAPI и Uvicorn


pip install fastapi uvicorn

Создание API с использованием FastAPI


from fastapi import FastAPI from pydantic import BaseModel

app = FastAPI()

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.

Следуя этим шагам, вы сможете создать эффективное решение для автоматического пересказа текста, которое можно использовать в различных приложениях.

До встречи на полях сражений!

🥷🏻💻