Убери из кода переводчик и обработку текста, добавь удаление всех изображений и текстовых файлов в которых не содержится слово solo, без подтверждения: import torch
from pathlib import Path
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
from waifutagger import WaifuTagger
from waifutagger.formatters import format_tags
import matplotlib.pyplot as plt
from PIL import Image
import re

# Установка режима работы с числами с плавающей запятой
torch.set_float32_matmul_precision("high")

# Загрузка модели для перевода
def load_translation_model(model_name: str):
    print(f"Loading translation model {model_name}...")
    translation_model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
    tokenizer = AutoTokenizer.from_pretrained(model_name)
    return translation_model, tokenizer

# Функция для обработки текста: удаление непечатаемых символов, знаков препинания и артиклей
def preprocess_text(text: str):
    # Приводим текст к нижнему регистру
    text = text.lower()

    # Удаляем непечатаемые символы с помощью регулярного выражения
    text = re.sub(r'\s+', ' ', text)  # Удаляем лишние пробелы
    text = re.sub(r'[^\w\sа-яА-ЯёЁ]', '', text)  # Оставляем только буквы и пробелы (включая кириллицу)
    
    # Определяем артикли для удаления
    articles = ['a', 'an', 'the']
    for article in articles:
        text = text.replace(f' {article} ', ' ')  # Удаляем артикли с пробелами
        text = text.replace(article + ' ', '')  # Удаляем артикли в начале
        text = text.replace(' ' + article, '')  # Удаляем артикли в конце

    return text.strip()  # Удаляем ведущие и завершающие пробелы


# Перевод текста
def translate_text(text: str, model, tokenizer):
    inputs = tokenizer(text, return_tensors="pt", padding=True).to(model.device)
    translated = model.generate(**inputs)
    translated_text = tokenizer.decode(translated[0], skip_special_tokens=True)
    return translated_text

# Настройка интерфейса для тегирования
def tag_images(tagger: WaifuTagger, image_paths: list):
    captions_dict = {}

    for img_path in image_paths:
        results = tagger.predict(str(img_path))  # Предсказать теги
        tags_string = format_tags(results)  # Форматировать теги
        output_file = img_path.with_suffix('.txt')
        with open(output_file, "w") as f:
            f.write(tags_string)  # Сохранить результаты
        captions_dict[img_path] = tags_string  # Сохраняем строки тегов в словарь

    return captions_dict

# Инициализация моделей
translation_model_name = "Helsinki-NLP/opus-mt-ru-en"  # Модель перевода
translation_model, tokenizer = load_translation_model(translation_model_name)

# Инициализация WaifuTagger для тегирования изображений
tagger = WaifuTagger("eva02-large-v3")  # Вы можете изменить модель

# Обработка изображений и сохранение тегов
folder_path = Path("input")  # Путь к папке с изображениями
image_paths = list(folder_path.glob("*.[jp][np]*g"))  # Найти изображения
captions_dict = {}

# Запрос у пользователя о перезаписи файлов тегов
tagging_needed = False

# Проверяем, существуют ли текстовые файлы
for img_path in image_paths:
    output_file = img_path.with_suffix('.txt')
    if not output_file.exists():
        tagging_needed = True
        break

if not tagging_needed:
    user_response = input("Текстовые файлы тегов уже существуют. Хотите переименовать и перезаписать их? (y/n): ")
    if user_response.lower() == 'y':
        tagging_needed = True

# Если переименование требуется, вызываем функцию тегирования
if tagging_needed:
    captions_dict = tag_images(tagger, image_paths)
else:
    # Загрузим существующие теги
    captions_dict = {path: path.read_text() for path in folder_path.rglob("*.txt")}

# Поиск изображений по запросу
def search_images_by_query(query: str, captions_dict: dict, translation_model, tokenizer):
    # Обрабатываем запрос: приводим к нижнему регистру и удаляем знаки препинания
    processed_query = preprocess_text(query)
    translated_query = translate_text(processed_query, translation_model, tokenizer)
    translated_query = preprocess_text(translated_query)
    print(f"Translated Query: {translated_query}")

    # Поиск по загруженным подписям
    matching_images = []
    for image_path, caption in captions_dict.items():
        if translated_query in caption.lower():
            matching_images.append(image_path)

    return matching_images

# Интерфейс поиска
while True:
    user_query = input("Введите поисковый запрос (или 'exit' для выхода): ")
    if user_query.lower() == 'exit':
        break

    matching_images = search_images_by_query(user_query, captions_dict, translation_model, tokenizer)

    # Отображение результатов
    if matching_images:
        print("Найденные изображения:")
        num_images = len(matching_images)
        plt.figure(figsize=(15, 5))

        for i, image_path in enumerate(matching_images):
            img = Image.open(image_path)  # Открываем изображение
            plt.subplot(1, num_images, i + 1)  # Создание подграфиков
            plt.imshow(img)
            plt.axis('off')  # Убираем оси
            plt.title(user_query)  # Заголовок с запросом

        plt.suptitle(f"Результаты поиска для: '{user_query}'", fontsize=16)
        plt.show()  # Отображаем изображения
    else:
        print("Изображения не найдены.")