Всем data-привет! 🚀
Мотивации пост. Посвящается всем начинающим специалистам, особенно в сфере Data Science.
Последнее время я много размышлял о мотивации в работе и учёбе и понял, что для нас, специалистов в области DS, можно провести интересную аналогию с алгоритмами, которые мы регулярно используем.
Недавно я опубликовал лонгрид на habr, где более подробно поделился своими мыслями на эту тему. А для вас подготовил короткую авторскую выжимку – всё самое важное и ценное, без лишней воды.
Читай, вдохновляйся и помни: каждый специалист когда-то был начинающим. Главное – не останавливаться и двигаться вперед!
⬇️ ⬇️ ⬇️
На ошибках учатся, и это не просто слова. Учатся все, и люди, и алгоритмы. Вот топ 5 общих паттернов обработки ошибок и усвоению знаний между человеком и ML-алгоритмами:
1️⃣ «Fail fast» — быстро учитесь на ошибках, как байесовская оптимизация.
Быстрое тестирование гипотез и анализ неудач позволяют находить оптимальные пути к успеху. Ошибки становятся не преградой, а важным шагом на пути к цели.
2️⃣ Развивайте широкую экспертизу, как градиентный спуск.
Этот алгоритм «пробует» множество решений, прежде чем найти оптимальное. Развивая междисциплинарные навыки и широкий кругозор, вы сможете находить нестандартные, но эффективные подходы.
3️⃣ Измеряйте свои ошибки, как это делает линейная регрессия.
Регулярная оценка своих действий и их последствий помогает расставлять приоритеты и лучше понимать, как ваши усилия влияют на результаты.
4️⃣ Будьте упорны, как градиентный бустинг.
Этот алгоритм строит мощные модели, поэтапно исправляя ошибки и улучшая прогнозы. Аналогично, настойчивое изучение нового и поэтапная работа над своими слабостями помогут вам стать экспертом и достигать амбициозных целей.
А про пятый пример предлагаю почитать на habr🏃♂️ 🏃♂️ 🏃♂️ (https://habr.com/ru/companies/ru_mts/articles/867710/)
Мотивации пост. Посвящается всем начинающим специалистам, особенно в сфере Data Science.
Последнее время я много размышлял о мотивации в работе и учёбе и понял, что для нас, специалистов в области DS, можно провести интересную аналогию с алгоритмами, которые мы регулярно используем.
Недавно я опубликовал лонгрид на habr, где более подробно поделился своими мыслями на эту тему. А для вас подготовил короткую авторскую выжимку – всё самое важное и ценное, без лишней воды.
Читай, вдохновляйся и помни: каждый специалист когда-то был начинающим. Главное – не останавливаться и двигаться вперед!
⬇️ ⬇️ ⬇️
На ошибках учатся, и это не просто слова. Учатся все, и люди, и алгоритмы. Вот топ 5 общих паттернов обработки ошибок и усвоению знаний между человеком и ML-алгоритмами:
Быстрое тестирование гипотез и анализ неудач позволяют находить оптимальные пути к успеху. Ошибки становятся не преградой, а важным шагом на пути к цели.
Этот алгоритм «пробует» множество решений, прежде чем найти оптимальное. Развивая междисциплинарные навыки и широкий кругозор, вы сможете находить нестандартные, но эффективные подходы.
Регулярная оценка своих действий и их последствий помогает расставлять приоритеты и лучше понимать, как ваши усилия влияют на результаты.
Этот алгоритм строит мощные модели, поэтапно исправляя ошибки и улучшая прогнозы. Аналогично, настойчивое изучение нового и поэтапная работа над своими слабостями помогут вам стать экспертом и достигать амбициозных целей.
А про пятый пример предлагаю почитать на habr
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤1
Наверняка у каждого на работе бывают моменты, когда нужно просто сесть и подождать чего-либо ☕️ . Это может быть долгий запуск программы, долгий расчёт чего-либо, или просто неоптимальная работа не на вашей стороне, а на стороне коллеги, который сделал какой-то кривой процесс, который долго работает⌛️ .
Вот и у меня был один такой кейс, который удалось успешно решить. Он был связан с расчётом популярной метрики в машинном обучении в задаче классификации: ROC AUC. Ниже гайд, как можно оптимизировать и ваши расчеты тоже.
Вот и у меня был один такой кейс, который удалось успешно решить. Он был связан с расчётом популярной метрики в машинном обучении в задаче классификации: ROC AUC. Ниже гайд, как можно оптимизировать и ваши расчеты тоже.
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegraph
Ускоряем расчет метрики ROC AUC: оптимизация для максимальной эффективности
Как ускорить расчет метрики ROC AUC, понятный гайд Наверняка у каждого на работе бывают моменты, когда нужно просто сесть и подождать чего-либо. Это может быть долгий запуск программы, долгий расчёт чего-либо, или просто неоптимальная работа не на вашей стороне…
🔥8
#пятничная_визуализация
Я сторонник качественной визуализации данных📊 . Один хороший график может заменить десяток сказанных слов. Наверное, поэтому различные визуализации, объясняющие работу нейронных сетей, привлекают так много внимания:
(ссылки на крутые визуализации)
1️⃣ https://poloclub.github.io/transformer-explainer/
2️⃣ https://bbycroft.net/llm
3️⃣ https://playground.tensorflow.org/
Информация с хорошей визуальной составляющей воспринимается и запоминается сильно лучше. Поэтому считаю своим долгом поделиться своими наработками в визуализации на python, которые были признаны моими коллегами.
Эта публикация - первая в своей серии, в новом году будет еще больше! Всех с наступающим Новым годом!🎁
---
Здесь я визуализирую жизненный цикл ML модели. Про это понятие у меня есть отдельная публикация: (https://habr.com/ru/companies/citymobil/articles/572184/)
На графике показана зависимость качества модели от объема обучающей выборки, распределенная во времени. Вторая картинка была построена на реальных данных.
Я сторонник качественной визуализации данных
(ссылки на крутые визуализации)
Информация с хорошей визуальной составляющей воспринимается и запоминается сильно лучше. Поэтому считаю своим долгом поделиться своими наработками в визуализации на python, которые были признаны моими коллегами.
Эта публикация - первая в своей серии, в новом году будет еще больше! Всех с наступающим Новым годом!
---
Здесь я визуализирую жизненный цикл ML модели. Про это понятие у меня есть отдельная публикация: (https://habr.com/ru/companies/citymobil/articles/572184/)
На графике показана зависимость качества модели от объема обучающей выборки, распределенная во времени. Вторая картинка была построена на реальных данных.
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
def foo_y(theta, k=0.5, s=1.5):
return - (theta**2 - s)**2 - k * theta
plt.rcParams["figure.facecolor"] = "#DBF1E4"
plt.rcParams["axes.facecolor"] = "#DBF1E4"
plt.rcParams['savefig.facecolor'] = "#DBF1E4"
custom_cmap = mcolors.LinearSegmentedColormap.from_list(
'my_cmap', ["#BA2A1D", "#62C361"]
)
theta_vals = np.linspace(-1., 2, 400)
coef_pairs = [
(0.1, 0.05),
(2, 0.05),
(0.2, 0.1),
(0.5, 0.9),
(1.1, 1.1),
(1.4, 1.5),
(2, 2),
]
plt.figure(figsize=(10, 5))
for idx, one_pair in enumerate(coef_pairs):
plt.plot(
theta_vals,
[foo_y(i, *one_pair) for i in theta_vals]
, color=custom_cmap(idx / len(coef_pairs))
, linewidth=3
, label=f'модель {idx+1}'
)
plt.yticks(
ticks=np.linspace(-20, 1, 10)
, labels=np.round(np.linspace(0.6, 0.8, 10), 2)
)
plt.xticks(
ticks=theta_vals[:: 40]
, labels=[f'неделя {i+1}' for i in range(len(theta_vals[:: 40]))]
, rotation=25
)
plt.gca().set_frame_on(False)
plt.grid()
plt.ylabel('метрика ROC AUC', fontsize=12)
plt.title('стабильность модели', fontsize=15)
plt.legend()
plt.tight_layout()
plt.savefig(
'Downloads/stability_2.png',
dpi=150, format='png', bbox_inches='tight', pad_inches=0,
transparent=False
)
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3❤1
Подготовил для вас актуальные идеи pet-проектов в ML на 2025 год
Всем data-привет! 🚀
Новый 2025 год уже начался, а значит самое время взяться за реализацию (и довести до конца😬 ) крутого pet-проекта, который бустанёт ваши навыки и карьеру в сфере ML.
На карточках ниже перечислил проекты, за которые я и сам бы взялся, честно говоря, настолько они интересные и актуальные. Все они, очевидно, связаны с использованием нейронных сетей, а большинство - с большими языковыми моделями.
Выберите один проект, и начните его прорабатывать. Уверяю вас, что навыки, которые вы приобретете в процессе создания проекта, вам пригодятся для текущей или будущей работы.
Чуть более детальное описание можно найти на habr
#pet_проект
#карьера
Всем data-привет! 🚀
Новый 2025 год уже начался, а значит самое время взяться за реализацию (и довести до конца
На карточках ниже перечислил проекты, за которые я и сам бы взялся, честно говоря, настолько они интересные и актуальные. Все они, очевидно, связаны с использованием нейронных сетей, а большинство - с большими языковыми моделями.
Выберите один проект, и начните его прорабатывать. Уверяю вас, что навыки, которые вы приобретете в процессе создания проекта, вам пригодятся для текущей или будущей работы.
Чуть более детальное описание можно найти на habr
#pet_проект
#карьера
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7
Вчера я выступил с докладом на тему того, как мы начали применять агентов в финтехе. В ближайшее время мы подготовим статью на Habr, где расскажем о всех нюансах этой темы — так что следите за обновлениями. А пока держите самые яркие мемы из презентации — они точно подняли настроение у всех слушателей
🔥18
Прочитал очень интересные мысли автора из этой публикации. Очень верно подмечено, я и сам замечаю то же самое. Поэтому далее мои мысли по состоянию IT-рынка в целом и про ML в частности.
Автор написал про то, что, несмотря на сокращения, спрос на IT-специалистов остается высоким, но требования к навыкам растут. Их важно постоянно совершенствовать, потому что наблюдается «шринкфляция навыков» — повышение требований к навыкам кандидатов даже на младшие позиции.
От себя хочу добавить следующее:
За тот же ценник от вас будут ждать не только роста качества ваших навыков, но и роста их количества.
Почему? Вот три примера.
Пример1️⃣ : сложное становится простым.
Ещё два-три года назад уметь обучать модели машинного обучения, ставить их в продакшен, подключать к ним разные источники данных и записывать предсказания — это было чем-то вроде магии. Я помню времена, когда наличие знаний о DS / ML / MLOps / DE / DA у одного человека вызывало восхищение у коллег. Но сейчас? Это просто базовые навыки. Даже я лично спрашиваю их на собеседованиях на junior-позиции.
В чём причина? Знания стали доступнее. Материалов о том, как всё это сделать, сейчас море. Но не только знания — современные инструменты делают процесс проще и эффективнее. И поэтому компании уже не хотят платить за одного специалиста, который умеет делать что-то одно. Они хотят, чтобы вы были «универсалом»: обучили модель, наладили поставку данных, поставили её в продакшен, настроили мониторинг, запланировали и запустили АБ-тест, и всё это объяснили бизнесу.
Пример2️⃣ : удивлять всё сложнее.
Помните времена, когда Data Scientist просто занимался обучением моделей? А теперь? Нам приходится не только создавать модели, но и разрабатывать корпоративные приложения с бэкендом, добавлять фронтенд — словом, быть полноценным разработчиком. Всё это, чтобы оставаться в парадигме outperforming в рамках корпоративного роста и развития. И знаете что? Год назад мы в команде вызывали у коллег удивление: «Ого, вы этим занимаетесь?» А сейчас я вижу, что такое восхищение пропало. Почему?
Думаю, всё дело в том, что знания перестали быть сакральными. Теперь их можно получить относительно легко — курсы, статьи, мастер-классы. Также и использование больших языковых моделей позволяет делать больше за меньшее время.
Возьмите вакансии: теперь они требуют, чтобы вы могли охватывать сразу несколько областей. Хочу вам сказать — если вы хотите остановиться на том, что делали два года назад, то рынок вас не простит. Сегодня компании ждут от вас гораздо больше.
Пример3️⃣ : а что остается делать менеджеру?
Смогли представить себе команду специалистов из пункта 1 и 2? А теперь представьте, что вся вышеописанная команда уходит одним днем в другую компанию. Сколько ценных навыков будет потеряно? Что будет делать менеджер? Если раньше в его команде было 3 человека и 12 уникальных скилов (backend, frontend, DS, MLOps, LLMOPs и так далее), то теперь ни одного.
➖ Вариант первый: менеджер просто набирает новых специалистов — по одному на каждый навык. Но это дорого, никто не будет так раздувать штат специалистов.
➖ Вариант второй: гораздо дешевле, но дольше, найти одного человека, который охватывает сразу несколько навыков. Лучше найти одного универсала, чем целую команду узких специалистов. Это не только проще, но и дешевле.
🧮 Короче говоря, в интересное время живём! Знания доступны всем, и те, кто научится их эффективно использовать, будут выигрывать. Это не шутки — это реальность, которую уже видят компании и формируют ожидания от специалистов.
Когда все могут реально научиться делать всё. И это уже заложено в ожидание рынка. Так что, если вы хотите быть востребованным на рынке, работайте над собой, расширяйте свои горизонты и не бойтесь учиться новому. Время для этого самое подходящее
Автор написал про то, что, несмотря на сокращения, спрос на IT-специалистов остается высоким, но требования к навыкам растут. Их важно постоянно совершенствовать, потому что наблюдается «шринкфляция навыков» — повышение требований к навыкам кандидатов даже на младшие позиции.
От себя хочу добавить следующее:
За тот же ценник от вас будут ждать не только роста качества ваших навыков, но и роста их количества.
Почему? Вот три примера.
Пример
Ещё два-три года назад уметь обучать модели машинного обучения, ставить их в продакшен, подключать к ним разные источники данных и записывать предсказания — это было чем-то вроде магии. Я помню времена, когда наличие знаний о DS / ML / MLOps / DE / DA у одного человека вызывало восхищение у коллег. Но сейчас? Это просто базовые навыки. Даже я лично спрашиваю их на собеседованиях на junior-позиции.
В чём причина? Знания стали доступнее. Материалов о том, как всё это сделать, сейчас море. Но не только знания — современные инструменты делают процесс проще и эффективнее. И поэтому компании уже не хотят платить за одного специалиста, который умеет делать что-то одно. Они хотят, чтобы вы были «универсалом»: обучили модель, наладили поставку данных, поставили её в продакшен, настроили мониторинг, запланировали и запустили АБ-тест, и всё это объяснили бизнесу.
Пример
Помните времена, когда Data Scientist просто занимался обучением моделей? А теперь? Нам приходится не только создавать модели, но и разрабатывать корпоративные приложения с бэкендом, добавлять фронтенд — словом, быть полноценным разработчиком. Всё это, чтобы оставаться в парадигме outperforming в рамках корпоративного роста и развития. И знаете что? Год назад мы в команде вызывали у коллег удивление: «Ого, вы этим занимаетесь?» А сейчас я вижу, что такое восхищение пропало. Почему?
Думаю, всё дело в том, что знания перестали быть сакральными. Теперь их можно получить относительно легко — курсы, статьи, мастер-классы. Также и использование больших языковых моделей позволяет делать больше за меньшее время.
Возьмите вакансии: теперь они требуют, чтобы вы могли охватывать сразу несколько областей. Хочу вам сказать — если вы хотите остановиться на том, что делали два года назад, то рынок вас не простит. Сегодня компании ждут от вас гораздо больше.
Пример
Смогли представить себе команду специалистов из пункта 1 и 2? А теперь представьте, что вся вышеописанная команда уходит одним днем в другую компанию. Сколько ценных навыков будет потеряно? Что будет делать менеджер? Если раньше в его команде было 3 человека и 12 уникальных скилов (backend, frontend, DS, MLOps, LLMOPs и так далее), то теперь ни одного.
Когда все могут реально научиться делать всё. И это уже заложено в ожидание рынка. Так что, если вы хотите быть востребованным на рынке, работайте над собой, расширяйте свои горизонты и не бойтесь учиться новому. Время для этого самое подходящее
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤2👀2👍1💯1
Forwarded from ML for Value / Ваня Максимов (Ivan Maksimov)
Что там с рынком IT-вакансий в 2025?
Со всех сторон слышны новости о сокращениях (Самолет, Vk, МТС, Сбер, Альфа и не только). Казалось бы, сейчас сотни кандидатов выйдут на рынок + онлайн-школы выпустят еще пару тысяч -- и да здравствует кровавый океан, где компании диктуют условия, и найм совершается за 1 месяц? Не тут-то было
Если вы сами искали кандидатов за последние полгода, то знаете, что поиск наоборот стал дольше / найма меньше. Но и зарплаты ничуть не снизились. В общем, какой-то парадокс. Далее будет сугубое имхо из анализа рынка и сплетен / новостей от знакомых - все, как мы любим 😊
На рынке джуниор-миддл
Спрос (кол-во вакансий) падает, а предложение (число кандидатов) растет -- по идее, должна снижаться зарплата для уравновешивания рынка. Но зарплаты снижать не вариант: конкуренция со стороны гос it, зарубежа. Также в отдельной команде может быть единственная вакансия за полгода, а не 3-4, как раньше. Поэтому важно найти "идеального" кандидата
Поэтому идет шринкфляция навыков. Помните молоко по той же цене, но за 900 мл вместо литра? Тут то же самое.
Шринкфляция навыков — на вакансию junior ищут кандидата с навыками middle-
В общем, тут советов 2:
- Прокачивайте свои навыки. Теперь недостаточно знать только pandas и catboost даже для стажировки(
- Расширяйте воронку поиска = подавайтесь на бОльшее число вакансий. Только не забывайте все же смотреть на релевантность ваших навыков роли, составлять приличное резюме и сопроводительное -- про конверсию воронки тоже надо помнить
P.S. Год учебы на курсах вписать в качестве года "работы" в резюме - ред флаг🚩
А вот приличный (!) пет проект за опыт работы - вполне вариант
На рынке синьор и выше
Тут ситуация, когда и вакансий мало, но и кандидатов тоже мало! За идеальный мэтч готовы платить много (вакансия синьера от 700k). Поэтому тут рынок превратился в executive search с очень точечным наймом, проверкой бэкграунда и буквально "охотой" за крутыми сотрудниками
Тут вы меня может и не просили советов, но куда ж без них)
- Качайте личный бренд, чтобы быть узнаваемым внутри своей компании и на рынке
- Выступление на конференциях, статьи на Хабре, тг-каналы теперь must have. Но опять же, помните про качество: стать узнаваемым с плохой стороны сотрудником - не очень удачная идея)
Embrace yourself, IT winter has come 🥶
Со всех сторон слышны новости о сокращениях (Самолет, Vk, МТС, Сбер, Альфа и не только). Казалось бы, сейчас сотни кандидатов выйдут на рынок + онлайн-школы выпустят еще пару тысяч -- и да здравствует кровавый океан, где компании диктуют условия, и найм совершается за 1 месяц? Не тут-то было
Если вы сами искали кандидатов за последние полгода, то знаете, что поиск наоборот стал дольше / найма меньше. Но и зарплаты ничуть не снизились. В общем, какой-то парадокс. Далее будет сугубое имхо из анализа рынка и сплетен / новостей от знакомых - все, как мы любим 😊
На рынке джуниор-миддл
Спрос (кол-во вакансий) падает, а предложение (число кандидатов) растет -- по идее, должна снижаться зарплата для уравновешивания рынка. Но зарплаты снижать не вариант: конкуренция со стороны гос it, зарубежа. Также в отдельной команде может быть единственная вакансия за полгода, а не 3-4, как раньше. Поэтому важно найти "идеального" кандидата
Поэтому идет шринкфляция навыков. Помните молоко по той же цене, но за 900 мл вместо литра? Тут то же самое.
Шринкфляция навыков — на вакансию junior ищут кандидата с навыками middle-
В общем, тут советов 2:
- Прокачивайте свои навыки. Теперь недостаточно знать только pandas и catboost даже для стажировки(
- Расширяйте воронку поиска = подавайтесь на бОльшее число вакансий. Только не забывайте все же смотреть на релевантность ваших навыков роли, составлять приличное резюме и сопроводительное -- про конверсию воронки тоже надо помнить
P.S. Год учебы на курсах вписать в качестве года "работы" в резюме - ред флаг
А вот приличный (!) пет проект за опыт работы - вполне вариант
На рынке синьор и выше
Тут ситуация, когда и вакансий мало, но и кандидатов тоже мало! За идеальный мэтч готовы платить много (вакансия синьера от 700k). Поэтому тут рынок превратился в executive search с очень точечным наймом, проверкой бэкграунда и буквально "охотой" за крутыми сотрудниками
Тут вы меня может и не просили советов, но куда ж без них)
- Качайте личный бренд, чтобы быть узнаваемым внутри своей компании и на рынке
- Выступление на конференциях, статьи на Хабре, тг-каналы теперь must have. Но опять же, помните про качество: стать узнаваемым с плохой стороны сотрудником - не очень удачная идея)
Embrace yourself, IT winter has come 🥶
Please open Telegram to view this post
VIEW IN TELEGRAM
hh.ru
Вакансия Senior Machine Learning Engineer (Computer Vision) в Москве, работа в компании Gradient (вакансия в архиве c 10 февраля…
Зарплата: от 700000 ₽ за месяц. Москва. Требуемый опыт: 3–6 лет. Полная. Дата публикации: 11.01.2025.
❤4
В последние 10 месяцев я активно использую нейросети для решения повседневных рабочих задач. Кейсов накопилось много, и я хочу начать делиться ими.
Сегодня будет первая публикация из цикла, а найти все можно будет по этим тегам:
➡️ #llm_для_работы - кейсы из моей рабочей практики, как LLM были полезны в команде ML-разработчиков и на продуктах финтеха
➡️ #llm_для_жизни - кейсы из жизни, когда использование помогало решать личные вопросы
Следующий кейс будет полезен всем, кто связан с разработкой. Речь пойдет о написании юнит-тестов на Python⚙️ .
Одна из задач, с которой я столкнулся, — написание регулярных выражений (регулярок) и тестов к ним. Если вы хоть раз пытались написать сложную регулярку, то знаете, что это может быть настоящим квестом. Нужно учесть множество нюансов, синтаксис, а еще убедиться, что выражение работает на всех возможных входных данных.
Я решил доверить эту задачу нейросети — Claude 3.5 Sonnet. После нескольких итераций и уточнений получил рабочую регулярку, которая делала именно то, что нужно. Но на этом история не закончилась.
Даже если регулярка работает на первых тестовых данных, это не гарантирует, что она справится со всеми возможными сценариями. Здесь на помощь приходят юнит-тесты. Они помогают проверить, что ваш код (или регулярка) работает корректно в разных ситуациях, включая краевые случаи (edge cases).
Однако придумывать такие тесты вручную — это долго и не всегда эффективно. Можно что-то упустить, особенно если проект большой и сложный. И тут я подумал: а почему бы не поручить это нейросети?
Я начал с того, что написал три базовых теста (используя few-shot технику), чтобы задать контекст. Затем попросил Claude сгенерировать дополнительные тесты. Результат меня впечатлил: нейросеть не только предложила еще десяток тестов, но и добавила краевые случаи, которые я сам мог бы и не учесть.
Вот несколько ключевых выводов, которые я для себя сделал:
1. Экономия времени: нейросети позволяют быстро генерировать большое количество тестов, что особенно полезно при работе с большими проектами.
2. Улучшение качества тестов: нейросети предлагают краевые случаи, которые разработчик может упустить.
3. Дополнительная проверка: даже если тесты от нейросети не всегда идеальны, они служат хорошей отправной точкой для дальнейшей доработки.
✏️ Этот опыт очень интересен, особенно на фоне новостей о появлении различных коробочных решений, которые работают схожим образом, но с большей автономностью. (тык 1, тык 2)
Сегодня будет первая публикация из цикла, а найти все можно будет по этим тегам:
Следующий кейс будет полезен всем, кто связан с разработкой. Речь пойдет о написании юнит-тестов на Python
Одна из задач, с которой я столкнулся, — написание регулярных выражений (регулярок) и тестов к ним. Если вы хоть раз пытались написать сложную регулярку, то знаете, что это может быть настоящим квестом. Нужно учесть множество нюансов, синтаксис, а еще убедиться, что выражение работает на всех возможных входных данных.
Я решил доверить эту задачу нейросети — Claude 3.5 Sonnet. После нескольких итераций и уточнений получил рабочую регулярку, которая делала именно то, что нужно. Но на этом история не закончилась.
# что я хотел найти:
# из строки: "последовательность запуска алгоритмов: [(1, 2) >> 3]"
# выделить: [(1, 2) >> 3]
# Регулярка по мнению Claude 3.5 sonnet
pattern = r'\[(?:\s*\((?:\d+(?:\s*,\s*\(\s*\d+(?:\s*,\s*\d+)*\s*\))*(?:\s*,\s*\d+)*)\)|\s*\d+)(?:\s*>>\s*(?:\((?:\d+(?:\s*,\s*\(\s*\d+(?:\s*,\s*\d+)*\s*\))*(?:\s*,\s*\d+)*)\)|\d+))*\s*\]'
Даже если регулярка работает на первых тестовых данных, это не гарантирует, что она справится со всеми возможными сценариями. Здесь на помощь приходят юнит-тесты. Они помогают проверить, что ваш код (или регулярка) работает корректно в разных ситуациях, включая краевые случаи (edge cases).
Однако придумывать такие тесты вручную — это долго и не всегда эффективно. Можно что-то упустить, особенно если проект большой и сложный. И тут я подумал: а почему бы не поручить это нейросети?
Я начал с того, что написал три базовых теста (используя few-shot технику), чтобы задать контекст. Затем попросил Claude сгенерировать дополнительные тесты. Результат меня впечатлил: нейросеть не только предложила еще десяток тестов, но и добавила краевые случаи, которые я сам мог бы и не учесть.
# мои few-shot примеры
test_cases_user = [
["алгоритмов: [1 >> 2 >> 3] этом", "1 >> 2 >> 3"],
["алгоритмов: [(1, 2) >> 3] этом", "(1, 2) >> 3"],
["алгоритмов: [(1, 2) >> (3, 4)] этом", "(1, 2) >> (3, 4)"],
["алгоритмов: [(1, 2, 3) >> (5, 6) >> 7] этом", "(1, 2, 3) >> (5, 6) >> 7"],
]
# ответ Claude 3.5 sonnet
test_cases_gpt = [
["[(1) >> (2)]", "(1) >> (2)"],
["[(1, 2)]", "(1, 2)"],
["[1 >> 2]", "1 >> 2"],
["[(1,2,3)>>4>> (5,6)]", "(1,2,3)>>4>> (5,6)"],
["[1 >> (2, 3) >> (4, 5, 6)]", "1 >> (2, 3) >> (4, 5, 6)"],
["алгоритмов: [(100, 200, 300) >> 400 >> (500, 600)] этом", "(100, 200, 300) >> 400 >> (500, 600)"],
["алгоритмов: [1000 >> (2000, 3000) >> 4000 >> (5000, 6000, 7000)] этом", "1000 >> (2000, 3000) >> 4000 >> (5000, 6000, 7000)"],
["алгоритмов: [(1) >> (2) >> (3) >> (4)] этом", "(1) >> (2) >> (3) >> (4)"],
["алгоритмов: [1 >> 2] этом", "1 >> 2"],
["алгоритмов: [(1, 2)] этом", "(1, 2)"],
["алгоритмов: [1] этом", "1"],
["алгоритмов: [(1,2,3,4,5,6,7,8,9,10) >> 11] этом", "(1,2,3,4,5,6,7,8,9,10) >> 11"],
["алгоритмов: [(1, 2) >> (3, (3, 3))] этом", "(1, 2) >> (3, (3, 3))"],
]
Вот несколько ключевых выводов, которые я для себя сделал:
1. Экономия времени: нейросети позволяют быстро генерировать большое количество тестов, что особенно полезно при работе с большими проектами.
2. Улучшение качества тестов: нейросети предлагают краевые случаи, которые разработчик может упустить.
3. Дополнительная проверка: даже если тесты от нейросети не всегда идеальны, они служат хорошей отправной точкой для дальнейшей доработки.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥3
Визуализация данных — это навык, на который часто забивают, а зря.
В своей серии публикаций я показываю, почему его стоит прокачивать и как это сделать.
📊 И да, сегодня — первая в этом году #пятничная_визуализация
p.s. Код на питоне есть по ссылке из поста
В своей серии публикаций я показываю, почему его стоит прокачивать и как это сделать.
p.s. Код на питоне есть по ссылке из поста
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegraph
barplot: между хаосом и ясностью
Maxim.ML Почему одни графики мгновенно доносят суть, а другие заставляют зрителя страдать? Ответ кроется в деталях. Возьмем пример двух барплотов, которые я недавно встретил в аналитике рынка труда. Оба пытались показать распределение мнений респондентов…
🔥7❤1