Python

Получение предложений из HTML

Довел до формата библиотеки и выложил на github - html2sent. Эта небольшая либа принимает на вход HTML и делает в нем кое-какие правки (удаление явно “неинтересных” тегов, простановка точек в некоторых местах при их отсутствии и прочее), чтобы на следующем этапе nltk tokenizer намного качественней смог разбить текст на предложения. Ну и опционально можно включить удаление таблиц, списков и т.п. Очень удобно для массового прогона HTML файлов с целью вытягивания красивого текста.

NLP: список русских стоп-слов

Решил тут немного поконтрибьютить в питоновскую библиотеку summa. Кроме того, что там в функционале извлечения ключевых слов из русского текста происходит ненужный стемминг английских слов (послал pull-request), там еще полностью отсутствует список русских стоп-слов. Вообще, само понятие стоп-слов немного размытое у людей. Некоторые используют это для фильтрации наиболее частотных слов языка в задачах классификации документов, например, если ипользуют алгоритмы, учитывающие частоту появления встречающихся слов. Но почему тогда так и не называть это словарем самых частотых слов?

TensorFlow GPU

Ох и провозился я тут с удалением/установкой TensorFLow. Со вчера был запущен один тестовый нейро-проектик, но сегодня решил его стопорнуть — закралось подозрение, что у меня все только на CPU работатает, а не на GPU. Как-то не хватает привычного громкого жужжания всех кулеров, как было тогда, когда я раньше на ноуте tensorflow гонял. Открыл System Information в “Process Hacker” - в разделе GPU нулевая активность. И это при том, что CPU дико нагружен - даже система стала не особо отзывчивая.

Программерский детектив

Итак, пока я тут доделал парсер-конвертер html-статей в набор предложений (с помощью BeautifulSoup4, различных регулярок и NLTK.tokenize - для подачи на вход нейросети на TensorFlow) и доволен чистотой результата, решил сделать паузу и, все-таки, написать эту забавную и поучительную историю. Программерский детектив Приятно наблюдать как недавно собранный компьютер “перемалывает” всеми 8(16) ядрами нужную мне задачу. Вот только я не ожидал, что придется перезапускать это так много раз. В последний раз так мозг закипал, наверное, только когда нужно было сделать динамический пересчет релокейшенов загруженного модуля win32.

Django-агрегатор

Тестирую вторую версию полностью автоматического новостного Django-агрегатора , где не только короткая выжимка “сути” новости в виде анонса, но и HTML страница со статьей (из любого источника), из которой выкушен весь мусор, но остается основное HTML форматирование. А по содержанию это 30% от оригинала. В этот раз взял для теста хайповую тематику - криптовалюты. :) bitcoin.icexp.com (udp: уже выключил). Правда, тут получаются слишком короткие “выжимки”, потому блок твиттера надо поменьше ставить.

Оживил privacy-formula.com

Наконец, спустя много лет заменил заглушку на http://privacy-formula.com/ на что-то интересное. :) Теперь там автоматический агрегатор новостей на тему “privacy”. Парсятся разные источники. Сначала одна библиотека извлекает главный контент со страницы (ищет саму статью), потом другая делает text summarizing - короткую выжимку именно значимых предложений. Ну а сам сайт на Django в виде 1 страницы в анонсами статей, где по ссылке “подробнее” отправляет на нужный ресурс. Кстати, повесил еще плагин от Google для автоперевода.

Решил сменить IDE

Решил попробовать сменить IDE. Ведь удобнее, если на всех языках можно фигачить в привычной среде. А тут оказалось, что под VS Code еще и плагинов куча полезных. Для начала сразу скачал и установил шрифт Fira Code. И включил в редакторе использование лигатур. Недавно на хабре статья просто попалась. :) А так бы и не задумывался о таком. Для Go меня приятно удивило автоматическое добавление (и ведение) импортов при упоминании в коде.

Ради эксперимента переписал один свой скрипт с Python на Go

Ради эксперимента переписал один свой скрипт с Python на Go (с использованием “горутин”). Смысла особо в этом не было, так как там узкое место - операции с диском, но захотелось немного познать Go. Замерил время выполнения на тестовых данных. Для начала запустил первый раз для того, чтобы все закешировалось. Потребовалось где-то 2 минуты. Затем уже попеременно запускал то на Python, то скопилированный exe на Go. Python 3.6 (в один поток) ~ 12 секунд

Недавно сегодня слышу - винт тарахтит

Недавно сегодня слышу - винт тарахтит (ну тот который второй, обычный HDD). Сразу поотключал все, включил Resource Monitor, Process Hacker… так и не понял. А сейчас смотрю - OneDrive сигнализирует о том, что место закончилось. Присматриваюсь к размерам папок и файлов: debug.log - 5010M 😆 Не, это не дело. :) Пора лог-файл уже выносить наружу из папки проекта. Или вообще логгирование в файл отключить, так как это лишнее дублирование все равно.

Про PyCharm

Я в Таиланд специально не взял внешнюю клавиатуру к ноутбуку, чтобы как-то привыкнуть работать за такой. Но, как оказалось, продолжать в том же стиле, как раньше, невозможно. Ну нельзя вслепую попадать всегда по стрелкам курсора, которые не отделены никак от остальных. И уж тем более никак не попасть по клавишам Home/End, которые еще нужно нажимать с зажатой Fn :) А в Python еще и отступы в коде, потому когда хочешь перенести строки выше-ниже - всегда нужно перейти на начало строки.