Несколько ранее я создавал немного шутливую Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое. . Там результат потуг нейросети был довольно предсказуемым для любого, кто хоть немного знает о моддинге Хойки и принципах работы этих программ. Но сегодня мы более серьёзно поговорим о том, в чём же эта нейросеть может быть полезна мододелам. А полезна она может быть для быстрого создания скриптов для различной скучной обработки текстовых массивов данных. В данном случае у нас такая проблема: для мода существует русская и английская локализации, при это английская выборочно в некоторых местах неполная. Чтобы вручную это всё не сравнивать для дополнения английской локализации напишем за 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)
Цитата
Моя ты умничка. Если случится Батлерианский джихад, я убью тебя последним. Шучу конечно.
Выполняем итоговый скрипт в консоли:
Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.
И он нам выдаёт список ключей локализации, которые отсутствуют в английской локализации, так что нам не нужно выискивать всякие отдельные ключи, которые когда-то почему-то не были сразу переведены на английский. Этот скрипт можно было бы ещё улучшить, сделать более информативный вывод списка, но в данном случае и так основной полезный функционал он нам обеспечивает. Вот это и есть реальное применение подобных нейросетей, а не эти ваши галлюцинации про фокусы или решения.
Опубликовано
GBV,
Закреплено
Strаtegium
1
1
Присоединиться к обсуждению
Вы можете оставить комментарий уже сейчас, а зарегистрироваться позже!
Если у вас уже есть аккаунт, войдите, чтобы оставить сообщение через него.
Рекомендованные сообщения
Несколько ранее я создавал немного шутливую Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое. . Там результат потуг нейросети был довольно предсказуемым для любого, кто хоть немного знает о моддинге Хойки и принципах работы этих программ. Но сегодня мы более серьёзно поговорим о том, в чём же эта нейросеть может быть полезна мододелам. А полезна она может быть для быстрого создания скриптов для различной скучной обработки текстовых массивов данных. В данном случае у нас такая проблема: для мода существует русская и английская локализации, при это английская выборочно в некоторых местах неполная. Чтобы вручную это всё не сравнивать для дополнения английской локализации напишем за 5-10 минут скрипт с помощью ChatGPT, который выдаст нам сразу список ключей локализации, которых нет в английской локализации. Не будем сильно напрягать ни свои мозги, ни кремниевые, поэтому разобьём на несколько этапов задачу. Скрипт будет на Python.
В ответ он выдал вполне рабочую программу, которая даже выводит весь список русских ключей лолкализации:
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)
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)
Скрипт уже делает что должен, но давайте сделаем его чуть более гибким на будущее.
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)
Выполняем итоговый скрипт в консоли:
Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.И он нам выдаёт список ключей локализации, которые отсутствуют в английской локализации, так что нам не нужно выискивать всякие отдельные ключи, которые когда-то почему-то не были сразу переведены на английский. Этот скрипт можно было бы ещё улучшить, сделать более информативный вывод списка, но в данном случае и так основной полезный функционал он нам обеспечивает. Вот это и есть реальное применение подобных нейросетей, а не эти ваши галлюцинации про фокусы или решения.
Опубликовано GBV,
Закреплено StrаtegiumПрисоединиться к обсуждению
Вы можете оставить комментарий уже сейчас, а зарегистрироваться позже! Если у вас уже есть аккаунт, войдите, чтобы оставить сообщение через него.