Максим Максимов // IT, AI – Telegram
Максим Максимов // IT, AI
193 subscribers
34 photos
3 videos
29 links
Активно познаю новое и стараюсь делиться со всеми!

Пишу посты на Хабр: https://habr.com/ru/users/maksimov_m

Персональный сайт: https://maksimovms.ru/

Мой профиль:
@maks_maks1
Download Telegram
📱 Инструменты для работы с текстом: nltk, spaCy, gensim

Занимаюсь написанием статьи про разведочный анализ (EDA) текстовых данных. Решил немного рассказать о популярных инструментах для обработки текста. Приведу пару фактов о каждом из них, а также пример использования.

➡️NLTK
это популярная open-source библиотека для обработки естественного языка. Чаще всего применяется для академических целей.

# pip install nltk
import nltk
nltk.download('punkt', quiet=True)
text = "This is a sample sentence for testing NLTK library."
tokens = nltk.tokenize.word_tokenize(text)
print(tokens)
# ['This', 'is', 'a', 'sample', 'sentence', 'for', 'testing', 'NLTK', 'library', '.']


➡️ spaСy
это библиотека с открытым исходным кодом, которая фокусируется на обработке больших объемов текста. Библиотека написана на Cython, что позволяет делать это достаточно быстро. Позиционируется spaСy как инструмент, используемый в производственной среде.

# pip install spacy
import spacy
nlp = spacy.load("en_core_web_sm")
text = "This is a sample sentence for testing spaCy library."
doc = nlp(text)
spacy_tokens = [token.text for token in doc]
print(spacy_tokens)
# ['This', 'is', 'a', 'sample', 'sentence', 'for', 'testing', 'spaCy', 'library', '.']


➡️ Gensim
еще одна open-source библиотека для обработки текста. Данная библиотека позволяет работать с векторным представлением документов, производить тематическое моделирование и многое другое.

# pip install gensim
import gensim
from gensim.utils import simple_preprocess
text = "This is a sample sentence for testing gensim library."
tokenized = simple_preprocess(text, deacc=True)
print(tokenized)
# ['this', 'is', 'sample', 'sentence', 'for', 'testing', 'spacy', 'library']


🔖 Для выбора библиотеки ориентируйтесь на ваши задачи: NLTK подойдет для исследовательских задач, spaCy — для быстрого анализа с лингвистическими аннотациями, а Gensim — для тематического моделирования и работы с семантическим сходством.
Инструменты можно комбинировать: например, использовать spaCy для предобработки и лемматизации текста, а затем передавать данные в Gensim для тематического моделирования.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯2👍1
Ради интереса произвел замер скорости токенизации каждого инструмента.

# Код для замера скорости токенизации библиотек
import time
import nltk
import spacy
import gensim
import matplotlib.pyplot as plt

nltk.download('punkt', quiet=True)
nlp = spacy.load("en_core_web_sm", disable=["parser", "ner", "lemmatizer", "tagger", 'tok2vec', 'attribute_ruler'])

text = "This is a sample sentence for testing speed of NLP libraries. " * 10000

# Замер NLTK
start = time.time()
tokens = nltk.tokenize.word_tokenize(text)
nltk_time = time.time() - start

# Замер spaCy
start = time.time()
doc = nlp(text)
spacy_tokens = [token.text for token in doc]
spacy_time = time.time() - start

# Замер gensim
start = time.time()
gensim_tokens = list(gensim.utils.tokenize(text))
gensim_time = time.time() - start

libraries = ["nltk", "spacy", "gensim"]
times = [nltk_time, spacy_time, gensim_time]

plt.bar(libraries, times, color=['orange', 'blue', 'green'])
plt.ylabel('Время (секунды)')
plt.noscript('Сравнение скорости токенизации')
plt.show()


Результаты видите сами.
Gensim оказался наиболее шустрым в этом деле, а NLTK самым медленным.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🤯2
🖥 Разведочный анализ текстовых данных (EDA for text data)

Опубликовал статью на Хабр, в которой рассказал про анализ текстовых данных.

➡️ Рассмотрел подходы, связанные с анализом распределения длин документов, частотности слов, и тематическое моделирование.

➡️ Также затронул методы анализа данных в таких задачах NLP, как классификация текста и извлечение сущностей NER/POS.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🤯2🔥1
Создал небольшой персональный сайт, куда добавил информацию о своей профессиональной деятельности.

Если быть честным, вдохновился сайтом Andrej Karpathy, у него же и брал референс 😁
👍4🤯3
Инструменты для поддержания качества кода на Python: isort, black, autoflake

Решил написать об интересных и простых инструментах, которые помогут держать код на Python в чистоте.

isort - это утилита для автоматической сортировки импортов в коде.

Пример работы:
Исходный код
# noscript.py
import os
from django.db import models
import sys
from myapp import utils
...

После применения isort командой:

isort noscript.py

Получаем
# noscript.py
import os
import sys

from django.db import models
from myapp import utils
...

Утилита сортирует импорты по алфавиту, а также разделяет на блоки: стандартные библиотеки, сторонние модули.

black - это инструмент, который автоматически форматирует Python-код по стандарту PEP8.

Пример работы:
Исходный код
# noscript.py
def calculate(a,b):
result = a+ b
return result
x=5
y=10
z = calculate(x,y)
print(f"Result: {z}")

После применения black командой:
black noscript.py

Получаем
# noscript.py
def calculate(a, b):
result = a + b
return result


x = 5
y = 10
z = calculate(x, y)
print(f"Result: {z}")

Код стал более читаем и удовлетворяет PEP8.

autoflake - это инструмент, который удаляет из кода неиспользуемые импорты (для модулей из стандартной библиотеки) и переменные. Также имеется настройка для удаление импортов модулей не только из стандартной библиотеки.

Пример использования:
Исходный код
# noscript.py
import os
import sys

def main():
unused_variable_1 = 42
print("Hello World!")
unused_variable_2 = "42"


После применения autoflake командой:
autoflake --in-place --remove-unused-variables noscript.py

Получаем
# noscript.py

def main():
print("Hello World!")

Были убраны неиспользуемые импорты и переменные.
👍3🤯2
ИИ в Google Colab

Узнал о том, что в Google Colab дали доступ к ИИ бесплатным пользователям.

Решил попробовать, на мой взгляд выглядит интересно. Может быть удобно для простых задач, где нужно быстро написать скрипт для эксперимента и когда лень переключаться в чат к DeepSeek, ChatGPT и тд)

Также дали возможность в ячейке обращаться к LLM (пока к google/gemini-2.5-flash и google/gemini-2.5-flash-lite) при помощи кода:
from google.colab import ai # встроенная библиотека

response = ai.generate_text("Максим в чате", model_name = 'google/gemini-2.5-flash')
print(response)
# Привет, Максим! Чем могу помочь?


Будем пользоваться!
🤯2🔥1
Максим Максимов // IT, AI
🎤 "AI в SDLC" на UFADEVCONF Почти месяц назад оставлял заявку на выступление с докладом "AI в SDLC" на конференцию UFADEVCONF, которая пройдет 15 ноября. 💥 Сегодня получил прекрасную новость, что мой доклад принят! Начинаю потихоньку структурировать имеющийся…
Мое выступление на UFADEVCONF

Сегодня побыл в роли спикера на конференции UFADEVCONF. Выступал с докладом "AI в SDLC", который состоял из частей:

Тренды

На примерах открытых исследований показал, какие сформировались основные направления и сценарии использования ИИ в разработке.

Кейсы использования AI в SDLC

Привел несколько реальных кейсов внедрения ИИ в разработку крупными компаниями.

Измерение эффективности внедрения AI в разработку

Рассказал о популярных метриках, которые используются для оценки эффективности внедрения ИИ в разработку: DORA, SPACE, DevEx.

Как и обещал, делюсь ссылками, на которые опирался при составлении доклада:
- Искусственный интеллект в разработке: тренды и реальное применение
- GenAI в промышленности
- Искусственный интеллект в жизненном цикле разработке ПО
- How generative AI can revolutionize the software development lifecycle (KPMG)
- The Anthropic Economic Index
- 2025 Developer Survey (Stack Overflow)
- big tech night (кейсы от Т-Банк, Cloud.ru)
- Ускорение разработки через LLM в BDUI AI (Яндекс Go)
- Обзор применений ИИ в программной инженерии в российских реалиях (Т-Банк)
- AI в SDLC (Korus Consulting)
- BitsAI-CR: Automated Code Review via LLM in Practice (ByteDance)
- Text2SQL в аналитике (X5 Tech)
- Building AI Agents with Real ROI in the Enterprise SDLC (Booking, Sourcegraph)
- How Uber Built AI Agents That Save 21,000 Developer Hours with LangGraph (Uber)
- DX AI Measurement Framework
🔥95🤯2👏1
Прочитал интересную книгу Роберта Мартина "Чистая Архитектура". Решил поделиться некоторыми мыслями, которые отложились у меня благодаря этой книге.

Правильно продуманная архитектура способна упростить разработку и поддержку приложения

Во время разработки бывают моменты, когда в приложение становится тяжело вносить изменения (даже при помощи ИИ). Сейчас начал понимать, что чаще всего это непродуманная архитектура, в которой имеются запутанные и неправильные зависимости компонентов.

Различные парадигмы программирования - это больше про ограничение, чем про расширение

Тема достаточно объемная, но приведу цитаты из книги:

Структурное программирование накладывает ограничение на прямую передачу управления.

Объектно-ориентированное программирование накладывает ограничение на косвенную передачу управления.

Функциональное программирование накладывает ограничение на присваивание.

Такое представление дает повод задуматься над тем, что иногда ограничение создают более удобную площадку для масштабирования и сопровождения программы.

Важно отделять бизнес-логику от реализации

Бизнес-логика - это логика, которая приносит ценность. Она является причиной существования приложения.
Бизнес-логика не должна зависеть от реализации (пользовательского интерфейса, базы данных или фреймворков). Разделение бизнес-логики от реализации позволяет гибко переносить ценность приложения на другие компоненты реализации или менять их без больших трудозатрат.

Необходимо заранее продумать требования, ограничения и границы приложения

Бывает большой соблазн делать проект сразу с написания кода, потому что "я уже знаю, как это будет на уровне классов". Однако если заранее не учесть все требования и ограничения, в какой-то момент может получится система, которую тяжело поддерживать и расширять. В итоге придется начинать заново. Чтобы избежать этого, лучше выделить время до начала написания кода на проработку всех деталей.

Это небольшая часть того, что можно почерпнуть из этой книги. Для большего понимания ее стоит перечитывать не один раз и, возможно, на разных этапах своей карьеры. Всем советую к прочтению!
👍6🤯21
Подключение по SSH с телефона

Решил поделиться своей находкой.

Мне понадобился инструмент, через который я смогу подключаться по SSH к удаленному серверу на телефоне.

Сразу в голову пришел Termux, потому что когда-то давно, вообразив себя хакером, я пытался запустить в нем Python и всякие команды вроде просмотра каталогов и проверки IP.

Скачал его и обнаружил момент, что встроенного SSH там нет и нужно поставить пакет OpenSSH. Во время его скачки стали возникать ошибки, которые не позволили мне до конца поставить OpenSSH (как я понял, ошибки подключения к репозиторию Termux).

После этого начал поиски другого инструмента и наткнулся на Termius. Это терминал, в который уже встроен SSH (а также там есть SFTP, Telnet и Mosh).

После его скачивания без каких-либо проблем подключился по SSH к нужному серверу. В целом, интерфейс выглядит дружелюбно и понятно. Мне нужные функции он выполнил, буду пользоваться)
🤯4👍1
Мой небольшой путь от идеи до релиза на примере чат-бота с ИИ

Во время чтения книги мне пришла мысль, что не все, что я изучаю откладывается в голове. Большая часть забывается, что не всегда приятно.

Немного поразмыслив, вспомнил, что хорошо усваивается та информация, которую регулярно повторяешь и применяешь на практике.
На почве этих размышлений у меня родилась идея создать простой инструмент, который помогал бы лучше запоминать информацию.

Я решил сделать небольшого бота, который позволяет сохранять и обрабатывать заметки, суммаризировать заметки, генерировать практическую рекомендацию на основе заметки, а также составлять опрос по заметке.

Естественно, у меня возникло желание сделать не просто прототип, а довести его до состояния, когда я смогу дать попробовать бота другим людям.

С этой мыслью я подошёл к созданию бота поэтапно: продумал требования и функционал бота, составил архитектуру приложения, разработал его, развернул и дал протестировать друзьям.

Весь этот процесс понравился мне с точки зрения пути, который я прошел от идеи до релиза. Я столкнулся с множеством проблем и с вариантами их решений.
Чуть позже я опубликую статью на Хабр, в которой подробнее расскажу, как проходил процесс создания этого проекта.

Если кому-то интересно, то вот краткий стек технологий:
-Telegram bot - python-telegram-boy
- Speech to text - faster whisper
- Text to speech- utrobinmv/tts_ru_free_hf_vits_low_multispeaker (Transformers)
- Database - PostgreSQL
- Worker/queue - Celery + Redis
- LLM - API OpenRouter (gemini-2.5-flash-lite)
- Deployment - Docker

Мои товарищи дали комментарий, что не очень понятно, как пользоваться ботом. Поэтому немного увлекшись, я создал небольшое видео-превью, чтобы показать, что из себя представляет инструмент)
Смотрите ниже.

Бота можно попробовать здесь:
@your_smart_notes_bot
Media is too big
VIEW IN TELEGRAM
🔥4👍3🤯2
Познакомился с таким инструментом, как Dozzle

Это open-source инструмент, который позволяет в режиме реального времени отслеживать логи Docker-контейнеров на сервере.

К положительным сторонам можно отнести то, что Dozzle является легковесным, а также простым в установке и настройке.

Чтобы поднять Dozzle на сервере, достаточно запустить его через Docker командой:
docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 8080:8080 amir20/dozzle:latest

либо же в docker-compose:
services:
dozzle:
image: amir20/dozzle:latest
volumes:
- /var/run/docker.sock:/var/run/docker.sock
ports:
- 8080:8080

После Dozzle будет доступен по адресу: http://localhost:8080/, в котором будут отображаться все запущенные контейнеры на машине.

Также имеется встроенная аутентификация, которую можно легко настроить, создав YAML-файл (с названием users.yml):
users:
# "admin" здесь — имя пользователя
admin:
name: Admin
# Генерируется с помощью: docker run -it --rm amir20/dozzle generate --name Admin --password secret admin
password: $2a$11$9ho4vY2LdJ/WBopFcsAS
filter:
roles:

В нем можно настроить роли и фильтры для конкретных пользователей.

После создания конфига, Dozzle запускается с флагом --auth-provider simple, и указывается путь к папке с файлом users.yml (в нашем случае - data).
Например:
docker run --name Dozzle -d -v /var/run/docker.sock:/var/run/docker.sock -v ./data:/data -p 8080:8080 amir20/dozzle:latest --auth-provider simple
👍2🤯2👏1