Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для URL, имени файла, имени объекта в каком-то софте и тд. Требования совместимости простые: в тексте должны быть только допустимые символы. Обычно это a-z, 0-9 и "_" или "-". То есть, только прописные буквы латинского алфавита и цифры (как пример).
Допустим, нам нужно название статьи в блоге преобразовать в slug для добавления его в URL этой статьи. Как это лучше всего сделать?
В Django по умолчанию есть готовая функция slugify для таких случаев.
Но я её никогда не использую. Почему? Потому что её недостаточно!
Приведём пример
>>> from django.utils.text import slugify
>>> slugify('This is a Title')
'this-is-a-title'
Пока всё отлично
>>> slugify('This is a "Title!"')
'this-is-a-title'
Спец символы удалились, всё хорошо.
>>> slugify('Это заголовок статьи')
''
Вот и приехали 😢. Если текст не английский то буквы просто игнорируются. Можно это поправить
>>> slugify('Это заголовок статьи', allow_unicode=True)
'это-заголовок-статьи'
Но тогда мы не вписываемся в условие. У нас появилась кириллица в тексте.
Так как я часто пишу сайты для русскоязычных пользователей эта проблема весьма актуальна. Я не использую стандартную функцию и всегда пишу свою.
Оригинал я не беру в расчёт и пишу полностью свою функцию. И так, по порядку:
🔸1. Исходный текст:
>>> text = 'Мой заголовок №10 😁!'
Взял специально посложней со специальными символами.
🔸2. Транслит
Необходимо сделать транслит всех символов в латиницу. Здесь очень выручает библиотека unidecode. Помимо простого транслита кириллицы в латиницу она умеет преобразовывать спец символы и иероглифы в текстовые аналоги.
from unidecode import unidecode
>>> unidecode("Ñ Σ ® µ ¶ ¼ 月 山")
'N S (r) u P 1/4 Yue Shan'
Очень крутая библиотека, советую👍
В нашем случае получаем такое преобразование:
>>> text = unidecode(text)
>>> print(text)
'Moi zagolovok No. 10 !'
Отличный транслит. Смайл просто удалился, хотя я ждал что-то вроде :). Ну и ладно, всë равно невалидные символы.
А еще наш код уже поддерживает любой язык, будь то хинди или корейский.
🔸4. Фильтр символов
Unidecode не занимается фильтрацией по недопустимым символам. Это мы делаем в следующем шаге через regex. Просто заменим все символы на "_" если они вне указанного диапазона.
>>> text = re.sub(r'[^a-zA-Z0-9]+', '_', text)
>>> print(text)
'Moi_zagolovok_No_10_'
Символ "+" в паттерне выручает когда несколько недопустимых символов идут рядом. Все они заменяются на один символ "_".
🔸5. Slugify
Осталось удалить лишние символы по краям и сделать нижний регистр
>>> text = text.strip('_').lower()
>>> print(text)
'moi_zagolovok_no_10'
Получаем отличный slug! 😎
🌎 Полный код в виде функции.
______________
PS. Проверку что в строке остался хоть один допустимый символ я бы вынес в отдельную функцию.
#libs#tricks#django
Помнишь нейросеть Reve, которая отлично отрабатывала русскую эстетику — медведи, балалайки, хрущёвки, панельки? Так вот, они выкатили апдейт. Возможно, это очередной потенциальный соперник «бананы», но пока утверждать не берусь — нужно тестить.
Видео выглядит эффектно и явно скрывает интересные фишки. Видно, что есть механики с выделением, что-то в духе draw-to-edit. Если придумают реально инновационный подход — не постесняюсь стянуть себе в приложение, ха-ха.
Плюс обещают API, а если проект «выиграет гонку редактирующих нейронок», то можно будет интегрировать и в собственный софт. В целом — очень любопытная история.
👉reve.art
😂 Тестим, показываем результаты в комментах, ты мне реально помогаешь этим! Чем больше тестов тем четче вывод по нейронке на канале)🖖
#reve | AcidCrunch
🖼 Rеve — это про то, когда уже ничего нового не ждёшь от генерации изображений, а оно всё равно удивляет.
Немного о волшебстве под капотом (наблюдения частично проверены нами, частично коллегами):
🟤 Ослабленная цензура — Rеve пока не боится крови, жути и даже девушек в нижнем белье. 😂 А вот совсем топлес — не-а. За слова не ругает, но картинки выдаёт в размытии, либо совсем "плоско".
🟤 Советская эстетика и "наш вайб" — чутко ощущает атмосферу ДК, панелек, гаражей и дачного трэша.
🟤 Фотореализм и эмоции — типажи нестандартные, позы естественные и живые, группы персонажей не сливаются в одно лицо, эстетика замечательная. Иногда путается с пальцами и глазами, и это окей.
🟤 Знаменитости, бренды и логотипы — узнаёт, рисует, молодец!
Бесплатные баллы на генерации прилетают каждый день, а если затянет — есть подписка по вменяемой цене.
👍 Картинки немного детализировали в Leonardo.
#reve#leonardo
🧐 Провела эксперимент:
«Нейрогенерации за 5 минут»
🔅1️⃣ Идём в ⚛️ChatGPT и пишем ему это задание:
Привет! Помоги придумать 10 промтов для тестирования разных нейросетей по созданию изображений.
⚜️ Требования к промтам:
1️⃣ Каждый промт должен быть подробным и цельным описанием сцены в стиле визуального сторителлинга.
2️⃣ Включать:
🔘 персонажа (человек, внешний вид, эмоции, одежда, бренд),
🔘 окружение и атмосферу (локация, детали фона, время суток, погодные условия),
🔘 угол съёмки, композицию, тип камеры, объектив или плёнку,
🔘 свет (тип освещения, цветовая палитра),
🔘 художественные эффекты (grain, lens flare, bokeh и т.п., если уместно).
3️⃣ Каждый из 10 промтов должен содержать уникальные параметры (разные ракурсы, локации, свет, стиль одежды и бренды, атмосферу и пр.).
4️⃣ Все промты в эстетике fashion и lifestyle, с упором на фотореализм и ощущение настоящей фотографии (никакой иллюстрации, 3D, анимации и пр.).
5️⃣ Структура промта: единый художественный абзац, без списков, но с полной детализацией сцены.
🤖 Задача: придумай 10 таких промтов с уникальными параметрами, чтобы я мог использовать их для теста нейросетей вроде: Midjourney, FLUX, Imagen 4, Reve, Sora. Каждый промт пиши на двух языках: русском и английском.
🔅2️⃣ Берём полученные промты и пробиваем их по очереди в любимой нейросети.
Для поста я выбрала Reve (дополнительно можно включить функцию улучшенной доработки промта).
🔅3️⃣ Скачиваем картинки и выкладываем пост в Telegram-канал.
🎉 Всё! Вы восхитительны!
Собираем лайки, восторженные комментарии и продаём курсы: "Как генерировать за секунду и зарабатывать миллионы с нейорсетями"
🫢
А если серьёзно — это классное упражнение, чтобы прокачать насмотренность: учиться прописывать разные ракурсы, типажи, настройки камеры и композиционные решения (см. пункт 2 шага 1).
☝️ Все генерации — с первой попытки и без доработок.
Бесплатных кредитов Reve хватило на 2 круга промтов от ChatGPT — это 20 разноплановых картинок.
🔅🔅🔅🔅🔅🔅
⭐️👍💚🔖💬⏳
#практикаИИ#chatgpt#reve