нашла на Хабре интересную статью Как решить 90% задач NLP: пошаговое руководство по обработке естественного языка. Не думаю, что сегодня материал покрывает все 90%, но основу основ точно да.
Особенно мне нравится подход, сформулированный авторами в конце:
1. начинаем с быстрой и простой модели;Читать полностью…
2. объясняем ее предсказания;
3. понимаем, какие разновидности ошибок она делает;
4. используем полученные знания для принятия решения о следующем шаге — будь то работа над данными, или над более сложной моделью.
больше примеров и немного подробностей про модель: https://habr.com/ru/companies/sberbank/articles/586926/
Читать полностью…Если вы, как и я, слышали о моделях text-to-image, но еще не пробовали, то вот ссылка. Регистрироваться не нужно, генерация занимает примерно минуту
https://rudalle.ru/kandinsky30
Эффективное чтение текстовых файлов с помощью функции read_text()
Функция read_text() входит в состав модуля pathlib (из стандартной библиотеки Python) и предоставляет удобный способ чтения содержимого текстового файла. Этот метод специально предназначен для чтения всего содержимого текстового файла за один раз.
Ключевые особенности read_text():
Простота: при использовании read_text() не нужно вручную открывать или закрывать файл - метод обрабатывает эти операции внутренними средствами.
Считывание всего содержимого: функция считывает все содержимое файла и возвращает его в виде строки.
Обработка исключений: если файл не существует или возникают проблемы с его чтением, read_text() вызовет ошибку FileNotFoundError или OSError.
Только текстовые файлы: Следует помнить, что read_text() предназначена именно для чтения текстовых файлов.
В данном примере для объекта file_path вызывается метод read_text().
Метод считывает все содержимое файла и возвращает его в виде строки, которая затем выводится на печать.
Время от времени меня спрашивают
Помогает ли опыт в программировании изучать английский?
Конечно, да. Конечно, нет.
1. У вас 100% появится лексическая база. Это все упрощает, хотя художественную литературу читать все равно трудно
2. Эта лексическая база будет заточена под ИТ, само собой. Например, я знала слово even в значении "четное число", хотя оно гораздо чаще используется в значении "даже". Как понимаете, в питоне никто не пишет "даже если это условие не работает..."
3. Грамматика все равно боль. Лично я понимаю, о каких объектах речь, но вообще не понимаю в каком времени все происходит и как слова между собой связаны
Я это к чему - к методологии обучения
У начинающих занятия должны занимать 10% теории и 90% практики. Никак нельзя обойтись без семинаров
Когда путь решения бессмысленных задач на набивание руки пройден, нужно переворачивать все с ног на голову и почти полностью вычеркивать семинары
Утро вечера мудренее
Это подход в обучении, который я эмпирическим путем вычислила как оптимальный. Он заключается в том, что любую задачу нужно решать поэтапно и между этапами обязательно должно пройти некоторое время, от пары часов до нескольких дней/месяцев и даже лет
Например, у меня сейчас есть домашнее задание. Этапы его выполнения
- 0. Лично мне всегда нужно смириться с фактом, что нужно сесть и поработать. Я обдумываю, когда смогу этим заняться, какие примерно усилия приложить и просто прокрастинирую
- 1. Читаю задание. Обдумываю план решения и какие есть пробелы, чего я еще не знаю и где об этом почитать. Ранжирую задачи от самой простой к самой сложной. Ухожу думать.....
- 2. Сажусь за самые простые задачи, параллельно закладывая фундамент для решения сложных
- 3. Дальше два варианта: решение сложной задачи само собой вытекает из решения простых либо начинается хаос, потому что задача оказалась точкой роста и решение предстоит изобрести
Кажется, что этот способ еще можно назвать "тянуть резину" и в чем-то это справедливо. Но также опытным путем я узнала, что мозг каким-то невероятным образом со временем усваивает информацию и то, что не решается наскоком чаще всего хорошо решается, если есть время подумать
вау, библиотека на python, с помощью которой можно измерять выбросы CO2 при обучении моделей. Называется codecarbon
Читать полностью…Как изучать Data Science?
Можно оттачивать навыки в одиночку или купить курс и пойти учиться. А можно присоединиться к комьюнити и изучать DS вместе с единомышленниками. Нашла одно классное - Data Drive
Помимо канала ребята собираются каждую неделю в дискорде и там можно:
🟣Послушать как проходит мок интервью
🟣Послушать доклады по машинному обучению (сейчас для каждого пишут порог вхождения)
🟣Почитать и обсудить литературу из области (хочу попасть на доклад по Вероятностному машинному обучению Мэрфи)
Подписывайтесь, если вам нравится изучать DS в хорошей компании
Я вас услышала 😁
Скидка 600 руб до 16 июля по промокоду JULE
Покупать по этой ссылке: https://stepik.org/a/113585
Parquet
С какими типами файлов мы чаще всего работаем в pandas? В моем случае до недавнего времени это был csv, на втором месте Excel. Csv прост, как дважды два, поэтому он всем нравится. Однако для реальности не подходит, потому что реальность - это ежедневная передача-обработка-хранение больших объемов данных. Pandas в таком случае тоже не очень подходит, но это отдельный разговор
На работе мне открыли новый крутой формат - .parquet. Он:
✅Колоночный, как и clickhouse, и считывается в этой СУДБ даже проще csv
✅Данные сжимаются так хорошо, что их нет смысла архивировать
✅Открытый и бесплатный. А так как все хорошее с такими характеристиками рано или поздно распространяется далеко за пределы изначального замысла, то сейчас parquet можно обрабатывать на C++, Java и конечно же на python. Хотя изначально разработан Apache для своей экосистемы Hadoop
Есть пара особенностей:
▪️Всего 7 типов данных, 3 из которых хранят целые числа, 2 - вещественные
▪️Странная обработка null-значений. Например, если я преобразую строковую колонку с null-значениями в parquet, а затем обратно, то на месте пустых значений увижу вполне себе строковые значения ‘nan’
Как работать в pandas
Чтобы считать из parquet в датафрейм пандаса
df = pd.read_parquet(path_to_parquet_file)Cохранить датафрейм в parquet
df.to_parquet(path_to_parquet_file)Понадобится дополнительная библиотека (pyarrow или fastparquet):
pip install pyarrow
pip install fastparquet
Читать полностью…
СОРО
На первом-втором курсе наша команда студентов-энтузиастов занималась разработкой СОРО (Социально Образованный Робот-Официант). Мы хотели сделать работа, который будет принимать заказы, возить еду по ресторану и поддерживать вежливые беседы с посетителями. У нас даже был инвестор и 20 тыс.руб. инвестиций. Помню, мы долго рассуждали, как именно робот должен передвигаться по залу. На колесиках? Железная дорога? Сколько рельс 1 или 2? Куда крепить - на пол или на стену? Ребята даже сделали в итоге 2-рельсную железную дорогу, по которой что-то ездило
На мне была задача наладить коммуникацию через телеграмм-бота. Бота я написала, но о поддержании адекватного диалога не шло никакой речи. По трем причинам:
🔺 Мы не умели ставить задачи я села писать какого-нибудь бота
🔺 Нехватка навыков. Я еще училась программировать, даже функции были диковинкой, а добавлять ML-модели или нейросети вообще было заоблачно
🔺Нейросети тоже были другими. Помню, мир технологий тогда только разворачивался в сторону ИИ. Яндекс в то время выпустил статью с сообщением, что берет курс на нейросети, они вроде бы неплохо себя зарекомендовали. Задачу speech-to-text тот же Яндекс тогда еще в основном еще решал марковскими моделями (воспоминания участников могут отличаться)
Чем все закончилось и почему
Ну так что же наш СОРО? Проект ожидаемо провалился не был закончен. Почему? У меня есть ответ из 2017 года и 2023 (edited)
В 2017 мне казалось, что дело в плохой идее, отсутствии конкурентных преимуществ. Ну кому в нашем городе нужен такой сложный ресторан?
В 2023, глядя на сервисы аренды самокатов и робототизированной доставки, сильно сомневаюсь, что идея была плохой. Дело было в нас и наших ресурсах. Размер инвестиций я уже озвучила. Яндекс, подозреваю, сильно больше потратил на своих доставщиков
Была проблема в понимании сроков. Мне казалось, что в проекте дел на месяц, может быть, на полтора, а мы почти сеньоры. Ну еще две недели на самое легкое - открытие ресторана (ха-ха). Только представьте степень моей самоуверенности, я только что узнала, что такое elif. Эх, юность
Резюме
В итоге это был классный проект и классное время. Я поняла, что написать программу и запустить продукт совсем не одно и тоже, что работы (почти) всегда ~в полтора раза больше, чем кажется. И осознала степень хаоса в мыслях, когда тебе нужно продумать продукт, даже самый простой
⚡️И еще с тех пор что такое API и как с ним работать я знаю вдоль и поперек
Почитать о проекте
Вот здесь можно посмотреть презентацию нашей задумки и нашу лабораторию https://docs.google.com/presentation/d/1gtk77_ZXr74yjS-136y1p7iC-QFMPAWG4tLksiDGhlo/edit#slide=id.g26c418abad_1_0
А ниже эскиз СОРО
вау, модели pytorch можно автоматически визуализировать!
Модуль называется tensorboard, в документации примеры с графиками, меня привела в восторг вот такая визуализация модели 🔥🔥🔥
я долгие годы читала текстовые файлы с помощью
file_name = 'text.txt'
with open(file_name) as f:
content = f.read()
Гриб моральной поддержки — канал о том, как беречь себя. Захожу, когда забываю простой факт (на видео)
Читать полностью…Программирование - практическая штука
Мало толку от теоретического знания, как работают if/for/def, нужно решать задачи. Однако эти задачи чаще всего воображаемые и уже давно решенные. И этот этап никак нельзя пропустить, каждый ИТ-шник потратил тысячи часов на "верните тридесятый элемент массива"
Дальше наступает второй этап, когда для написания чего-то практического и классного становится необходимым большую часть времени тратить на теорию. Это в самой практической сфере, которую я знаю
Неожиданное осознание элементарного
Второй год магистратуры
хотела после первого года обучения в онлайн магистратуре рассказать, что в общем и целом это выброс денег на ветер и как плохо все организовано. Рада, что не стала торопиться (кто не знает, я учусь в физтехе по этой программе)
Недавно сходила на первую пару по анализу естественного языка и практически все там было для меня новым и интересным. И это при том, что я не раз со своими учениками разбирала nlp. Смотрим, что будет дальше
В последние дни появилось немного времени и я отправилась читать свои любимые айтишные блоги. Оказалось, пока я этого не делала мой словарный запас программиста устарел и я не всегда понимаю коллег. Делюсь новыми словами (некоторые очевидны, но по какой-то причине все равно обратила на них внимание)
Перевод писала сама, либо брала у авторов, специально ничего не гуглила. Так что пояснения могут быть некорректны, давайте обсуждать и дополнять
Итак,
• бойлерплейт - повторяющийся код, который приходится писать из-за особенностей языка, а не ради описания логики. В целом любой код, который не несет смысла относительно задачи, которая решается
• плейсхолдер - по сути переменная. Например, у нас есть html-страница и мы говорим вот здесь на месте текста должна быть информация о кошке, а здесь на месте картинки - фотография кошки
• промпт - текстовая инструкция для chat gpt или других нейронок
• файнтюнить - Тренировать модель? Улучшать модель?? Так и не поняла до конца. Из комментариев: дообучать модель; предполагается что есть обученная модель для каких-то задач, а мы хотим её адаптировать для своих, под свои данные
• токен - слово (или другая атомарная сущность), за которую нужно платить chat gpt
• атомарная сущность - нечто неделимое. В С++ атомарной называется операция, которую нельзя распараллелить. Например, сложение - нет смысла увеличивать одно число на другое в разных потоках
• LLM / LLMка - новые, модные, хайповые и классные NLP модели/нейросети. Насколько понимаю Chat gpt - это LLM-модель
Пишите, что интересного встречалось вам 👇
Как работает list(map(int, input().split()))?
Вчера возник такой вопрос, давайте попробую рассказать на примере
Идея в чем
Имеется список lst = ["1", "2", "3"]. Числа в кавычках, а значит, это строки. И мы хотим к каждому элементу применить функцию. Здесь логично применить int(), чтобы строки превратились в числа. Есть два способа это сделать:
🍃 через цикл
for i in range(len(lst)):
lst[i] = int(lst[i])
🍃через map
lst = map(int, lst)
Чтобы на выходе получился снова список, еще применяют list() и получается: list(map(int, lst))
💘💘💘💘💘💘💘💘💘💘💘
А что же input().split()? А эта конструкция всегда возвращает список, останется только ввести в консоль числа через пробел, чтобы получился такой же lst
Судя по вашим сообщениям, я не одна прекрасными летними вечерами люблю учиться. Здо́рово! Думаю сделать скидку на курс, поставьте реакции, если вам актуально. Чем больше реакций, тем больше скидка 🔥
Читать полностью…Ненасильственное общение «Язык жизни», М. Розенберг
Обзор на книгу
Не знаю, насколько честно делать обзоры на недочитанные книги, но решила, раз мнение есть, то и поделиться им можно
Мне кажется, раньше советы из книжки "Язык жизни" обитали в основном в психологических пабликах и блогах, а сейчас все чаще замечаю их в профессиональной среде. Например, в прошлом посте упоминала, что в магистратуре нас учили 4 элементам ненасильственного общения (наблюдение, чувство, потребность, просьба)
О чем книга
О том, как очистить входящие и исходящие сообщения от упреков, гнева, обиды и вести конструктивные диалоги
Мое мнение
Думаю, книга рассказывает дельные вещи о межличностной коммуникации. Но… В ней около 280 страниц и за несколько лет я едва осилила половину. Этому есть две причины:
1. Книгу нужно не только читать, но и рефлексировать, и учиться применять новые знания. И это действительно занимает время
2. Тяжело читается. Книга была написана в середине прошлого века и стиль написания соответствующий. Картонные примеры, чересчур поучительный тон. Через 10 страниц я устала читать о том, как абсолютно все проблемы в мире решаются с помощью грамотно построенных предложений
Что главное в ненасильственном общении
Чаще всего пересказывают выше упомянутые 4 элемента, но я этого делать не буду, можно почитать здесь
Главное из усвоенного мной:
1. Снизить градус оценочных суждений и обобщений в своей речи
2. Не брать на себя слишком много. Не додумывать причины, по которым (не)было сказано то или это. Не пытаться читать между строк. Переспросить, если непонятно
Читать или нет
Это может быть сложно, но я бы рекомендовала попробовать
Давно меня не было на канале. Заметила, что количество подписчиков убавилось, спасибо всем, кто остался. Канал жив и будет жить, но он создан для развлечения, а с конца апреля времени на развлечения было критически мало. Из обновлений - немножко научилась писать нейросети (а знать, как их писать и писать не одно и то же!) и поняла, что читать ИТ-статьи на английском классно
Еще в начале мая мне исполнилось 25. Наконец осознала себя домоседом, так что не пыталась устроить грандиозное торжество, день получился самым спокойным из всех 25. Остаемся на связи ✌🏻
Разбор. В обоих языках есть возможность подключать дополнительные модули - библиотеки
В С++ для этого нужно написать #include
В python - import
а писать просто include или #import - это на что-то на python++