GBV 713 13.09.2023, 17:35:29 Поделиться #1 13.09.2023, 17:35:29 Несколько ранее я создавал немного шутливую Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое. . Там результат потуг нейросети был довольно предсказуемым для любого, кто хоть немного знает о моддинге Хойки и принципах работы этих программ. Но сегодня мы более серьёзно поговорим о том, в чём же эта нейросеть может быть полезна мододелам. А полезна она может быть для быстрого создания скриптов для различной скучной обработки текстовых массивов данных. В данном случае у нас такая проблема: для мода существует русская и английская локализации, при это английская выборочно в некоторых местах неполная. Чтобы вручную это всё не сравнивать для дополнения английской локализации напишем за 5-10 минут скрипт с помощью ChatGPT, который выдаст нам сразу список ключей локализации, которых нет в английской локализации. Не будем сильно напрягать ни свои мозги, ни кремниевые, поэтому разобьём на несколько этапов задачу. Скрипт будет на Python. Цитата В директории программы есть две папки, russian и english, внутри которых есть текстовые файлы с расширением yml. Для начала напиши скрипт на Питоне, который бы просмотрел все yml-файлы в папке russian и сохранил бы в массив все ключи локализации из них. Ключ локализации - это подстрока в начале непустой строки, идущая до первого двоеточия (не включающая само двоеточие). Нужно обрезать все пробелы в начале и в конце каждой строки, а также игнорировать те строки, которые начинаются со знака # В ответ он выдал вполне рабочую программу, которая даже выводит весь список русских ключей лолкализации: Спойлер import os # Путь к директории с yml-файлами directory_path = "./russian/" # Функция для извлечения ключей из yml-файлов def extract_keys_from_yml(directory_path): localization_keys = [] # Перебираем все файлы в директории for filename in os.listdir(directory_path): if filename.endswith(".yml"): file_path = os.path.join(directory_path, filename) # Открываем файл для чтения with open(file_path, "r", encoding="utf-8") as file: lines = file.readlines() # Извлекаем ключи из строк for line in lines: # Игнорируем строки, начинающиеся с # if not line.strip().startswith("#"): # Извлекаем ключ локализации (подстроку до первого двоеточия) key = line.split(":")[0].strip() # Добавляем ключ в массив, если он не пустой if key: localization_keys.append(key) return localization_keys # Вызываем функцию и выводим ключи keys = extract_keys_from_yml(directory_path) for key in keys: print(key) Цитата хорошо, а теперь добавь в скрипт аналогичную обработку соседней директории english, где также есть yml-файлы, сохрани их во второй, отдельный массив Спойлер import os # Путь к директориям с yml-файлами russian_directory_path = "./russian/" english_directory_path = "./english/" # Функция для извлечения ключей из yml-файлов def extract_keys_from_yml(directory_path): localization_keys = [] # Перебираем все файлы в директории for filename in os.listdir(directory_path): if filename.endswith(".yml"): file_path = os.path.join(directory_path, filename) # Открываем файл для чтения with open(file_path, "r", encoding="utf-8") as file: lines = file.readlines() # Извлекаем ключи из строк for line in lines: # Игнорируем строки, начинающиеся с # if not line.strip().startswith("#"): # Извлекаем ключ локализации (подстроку до первого двоеточия) key = line.split(":")[0].strip() # Добавляем ключ в массив, если он не пустой if key: localization_keys.append(key) return localization_keys # Вызываем функции для обеих директорий и сохраняем ключи russian_keys = extract_keys_from_yml(russian_directory_path) english_keys = extract_keys_from_yml(english_directory_path) # Выводим ключи для русской версии print("Russian Localization Keys:") for key in russian_keys: print(key) # Выводим ключи для английской версии print("\nEnglish Localization Keys:") for key in english_keys: print(key) Цитата молодец, а теперь добавь ещё сравнение этих двух полученных массивов. В результате сравнения нужно вывести только те ключи локализации, которые есть в массиве с русскими ключами, но которых нет в английском массиве Спойлер import os # Путь к директориям с yml-файлами russian_directory_path = "./russian/" english_directory_path = "./english/" # Функция для извлечения ключей из yml-файлов def extract_keys_from_yml(directory_path): localization_keys = [] # Перебираем все файлы в директории for filename in os.listdir(directory_path): if filename.endswith(".yml"): file_path = os.path.join(directory_path, filename) # Открываем файл для чтения with open(file_path, "r", encoding="utf-8") as file: lines = file.readlines() # Извлекаем ключи из строк for line in lines: # Игнорируем строки, начинающиеся с # if not line.strip().startswith("#"): # Извлекаем ключ локализации (подстроку до первого двоеточия) key = line.split(":")[0].strip() # Добавляем ключ в массив, если он не пустой if key: localization_keys.append(key) return localization_keys # Вызываем функции для обеих директорий и сохраняем ключи russian_keys = extract_keys_from_yml(russian_directory_path) english_keys = extract_keys_from_yml(english_directory_path) # Находим ключи, которые есть в русской версии, но отсутствуют в английской unique_russian_keys = set(russian_keys) - set(english_keys) # Выводим только уникальные ключи print("Уникальные ключи локализации в русской версии:") for key in unique_russian_keys: print(key) Скрипт уже делает что должен, но давайте сделаем его чуть более гибким на будущее. Цитата почти закончили. Давай сделаем скрипт чуть более универсальным. Пусть он ещё принимает в два параметра в командной строке. Первый параметр будет названием первой директории (в данном случае у нас это была директория russian), а второй - второй директории (у нас это была english) Спойлер import os import sys # Функция для извлечения ключей из yml-файлов def extract_keys_from_yml(directory_path): localization_keys = [] # Перебираем все файлы в директории for filename in os.listdir(directory_path): if filename.endswith(".yml"): file_path = os.path.join(directory_path, filename) # Открываем файл для чтения with open(file_path, "r", encoding="utf-8") as file: lines = file.readlines() # Извлекаем ключи из строк for line in lines: # Игнорируем строки, начинающиеся с # if not line.strip().startswith("#"): # Извлекаем ключ локализации (подстроку до первого двоеточия) key = line.split(":")[0].strip() # Добавляем ключ в массив, если он не пустой if key: localization_keys.append(key) return localization_keys # Проверяем, что есть два аргумента командной строки if len(sys.argv) != 3: print("Использование: python script.py <первая_директория> <вторая_директория>") sys.exit(1) # Получаем пути к директориям из аргументов командной строки directory1 = sys.argv[1] directory2 = sys.argv[2] # Вызываем функции для обеих директорий и сохраняем ключи keys1 = extract_keys_from_yml(directory1) keys2 = extract_keys_from_yml(directory2) # Находим ключи, которые есть в первой директории, но отсутствуют во второй unique_keys = set(keys1) - set(keys2) # Выводим только уникальные ключи print("Уникальные ключи локализации в", directory1 + ":") for key in unique_keys: print(key) Цитата Моя ты умничка. Если случится Батлерианский джихад, я убью тебя последним. Шучу конечно. Выполняем итоговый скрипт в консоли: Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое. И он нам выдаёт список ключей локализации, которые отсутствуют в английской локализации, так что нам не нужно выискивать всякие отдельные ключи, которые когда-то почему-то не были сразу переведены на английский. Этот скрипт можно было бы ещё улучшить, сделать более информативный вывод списка, но в данном случае и так основной полезный функционал он нам обеспечивает. Вот это и есть реальное применение подобных нейросетей, а не эти ваши галлюцинации про фокусы или решения. Изменено 15.09.2023, 18:29:32 пользователем GBV -опечатки 1 1 Цитата Ссылка на комментарий
Рекомендованные сообщения
Присоединиться к обсуждению
Вы можете оставить комментарий уже сейчас, а зарегистрироваться позже! Если у вас уже есть аккаунт, войдите, чтобы оставить сообщение через него.