Ivan Begtin
7.99K subscribers
1.82K photos
3 videos
101 files
4.53K links
I write about Open Data, Data Engineering, Government, Privacy, Digital Preservation and other gov related and tech stuff.

Founder of Dateno https://dateno.io

Telegram @ibegtin
Facebook - https://facebook.com/ibegtin
Secure contacts ivan@begtin.tech
Download Telegram
В рубрике полезных инструментов для работы с данными несколько обновлений
- spcrawler [1] утилита командной строки для выгрузки данных и файлов из открытых сайтов Sharepoint к которой я наконец-то нашёл время дописать документацию и выложил как открытый код. Предистория: в открытом доступе много сайтов на Sharepoint, некоторые государственные системы/сайты тоже сделаны нём. Эта утилита выгружает все данные доступные через API "/_api/web" для тех случаев когда такое API есть. Похоже на другую утилиту wparc - по архивации данных через API Wordpress, которую я ранее выкладывал.
- у утилиты undatum появилась команда query использующая mistql как язык запросов. Удобно при необходимости потоковой фильтрации данных при работе с JSON lines. Пока в экспериментальном режиме, функции незавершённые. Одна из идей в том чтобы реализовать полноценную команду запросов на многих языках, не только mistql, но и dictquery и ещё нескольких вариантах.
- у меня в планах написать гайд по apibackuper, утилите по архивации данных внутри API. Очень много примеров API по России и оказывается мало по миру, не могу быстро найти зарубежные недокументированные API.
- добавлены новые общедоступные правила к утилите идентфикации типов данных metacrafter, добавлены правила: intcodes.yaml - международные коды, boolean.yaml - булевые значения, orgs.yaml - организации, science.yaml - научные идентификаторы, vehicles.yaml - автомобили. Все они в категории common в репозитории. Напомню, что утилита является открытой и общедоступной как и базовые правила, а у нас внутри проходит бета тестирование сервис с расширенными правилами. Желающие могут использовать открытый код и сами писать правила под свои данные или привлечь нашу команду и мы применим расширенный свод правил + напишем под Ваши данные.

В ближайших планах собрать вместе открытый код + наработки по APICrafter'у и Datacrafter՛у и собрать продукт + сервис на международную и русскоязычную аудитории.

Ссылки:
[1] https://github.com/ruarxive/spcrawler

#opensource #tools #data
Я продолжаю писать на английском языке о инструментах для работы с данными которые делал последние несколько лет. Написал заметку [1] про утилиту APIBackuper используемую для извлечению данных из API. Не открою большого секрета если скажу что большая часть данных в DataCrafter[2] собрана с её помощью. Слишком многие данные в России доступны только как API.

Но в заметке пример сбора данных с недокументированного API аэропорта Берлина.

Ссылки:
[1] https://medium.com/@ibegtin/apibackuper-a-command-line-tool-to-archive-backup-data-api-calls-3eb0e98e1a3b

#tools #datatools #opensource #articles
Из свежего полезного чтения про оптимизацию работы с данными, заметка How to Build a Lossless Data Compression and Data Decompression Pipeline [1] о построении многопоточного компрессора bz2 на Python. Статья полезная, но лично мне так и хочется ехидно прокомментировать про то что "хипстеры обнаружили для себя многопоточность". Многопоточное сжатие и другие многопоточные операции это один из многих трюков отличающих общедоступные и коммерческие продукты по обработке данных. При правильно подобранном железе и иных оптимизациях оно даёт многократное ускорение.

При этом придумывать что-то своё совершенно необязательно. Есть реализация многопоточного Gzip на Python - pgzip [2] . Есть реализация многопоточности в python-zstandard [3] и это если только говорить про компрессию, а есть и другие многопоточные задачи используемые при обработке данных.

Другое чтение, про Software defined assets [4] про новый декларативный подход управления данными и оркестрацией от команды Dagster. Не могу сказать что с лёту мне удалось понять принципиальные преимущества подхода, но почитать точно стоит

Ссылки:
[1] https://python.plainenglish.io/lossless-data-compression-and-data-decompression-pipeline-2f5391a6b7e7
[2] https://github.com/pgzip/pgzip
[3] https://python-zstandard.readthedocs.io/en/latest/multithreaded.html
[4] https://dagster.io/blog/software-defined-assets

#readings #tools #datatools
Интересные продукты для работы с данными и не только

- PostgresML [1] реализация системы машинного обучения внутри Postgres, только через SQL. Для настоящих фанатов Postgres
- PyScript [2] реализация языка Python на Javascript
- HARI - The First Annotation And Dataset Analytics Platform [3] - интересный коммерческий продукт для визуализации и анализа алгоритмов распознвания видео. К сожалению описания маловато
- tinypandas [4] для тех кто привык к pandas, но хочет инструмент попроще. Не знаю кому такое может пригодится, но вдруг
- Metabase 0.43 [5] новая версия Metabase, самое интересное, на мой взгляд, поддержка JSON записей в Postgres, но много чего другого тоже есть
- Reconcilation [6] инструмент для создания сервисов обогащения данных для OpenRefine, написан на Python + Flask. Нужен для тех кто пользуется OpenRefine и хочет его расширять
- Squirel [7] свежая ETL на базе Python позиционируемая как инструмент для ML.

Ссылки:
[1] https://postgresml.org/
[2] https://pyscript.net/
[3] https://www.quality-match.com/hari
[4] https://talegari.github.io/tidypandas/_build/html/index.html
[5] https://github.com/metabase/metabase/releases/tag/v0.43.0
[6] https://github.com/preftech/reconciliation
[7] https://squirrel-core.readthedocs.io/en/latest/

#opensource #tools #datatools
Для тех кто любит сжатие данных также как это люблю я, подборка полезных ссылок:
- про сжатие CSV файла в 22 ГБ в 1.5 ГБ файла Parquet [1] включает преобразование структур данных, сжатие zstd внутри файла parquet и тд. Для сравнения оригинальный сжатый файл был около 12GB. Для работы на ноутбуках и десктопах может быть значимо.
- Bzip3 [2] автор позиционирует как замену Bzip2. Сжимает существенно лучше чем Bzip2, немного лучше чем Xz и 7Zip (LZMA2), при этом не существенно теряет в скорости. В общем надо измерять.
- PLZip [3] и LZTurbo [4] два особо быстрых декомпрессора для lzip и lz77 соответственно, важно когда скорость сжатия некритична, а скорость распаковки важна

Ссылки:
[1] https://medium.com/@deephavendatalabs/the-r-place-dataset-bf4b0d70ce72
[2] https://github.com/kspalaiologos/bzip3
[3] https://www.nongnu.org/lzip/plzip.html
[4] https://sites.google.com/site/powturbo/home

#compression #tools #opensource
Low code добралось и до инженерии данных. Стартап Prophecy.io [1] поднял в общей сложности $38.5M за 5 раундов инвестиций создавая платформу с минимальным программированием на базе Apache Spark и Apache Airlow. Эдакий подход - антихардкор, никакой командной строки, только работа мышкой.

Интересно до чего ещё докатится волна создания low-code продуктов?

Ссылки:
[1] https://www.prophecy.io/

#startups #dataengineering #tools
Те кто ищет продукты по работе с базами данных и при этом больше похожие на MS Access, но в облаке, обычно быстро находят Airtable, но это совсем далеко не единственный low-code и no-code продукт в этой области. О некоторых я ранее писал, а других ещё нет:
- NocoDB [1] альтернатива Airtable с открытым кодом.
- Rows [2] позиционируют себя как "переизобретение таблиц", стартап и онлайн сервис
- Clay [3] стартап с интеграцией с кучей онлайн сервисов, CRM, аналитики и т.д.
- Dataland [4] стартап и онлайн сервис ориентированный на удобство разработчиков, как универсальный фронтенд над базами данных. Пока в бета по запросу
- Tulr [5] бесплатная альтернатива Airtable. Платные тарифы тоже есть. Стартап, онлайн сервис
- StackBy [6] сервис ориентированный на маркетологов, с кучей шаблонов под их работу
- Basedash [7] ещё один сервис упрощения редактирования баз данных, словно не база, а таблица в Excel.
- Grist [8] довольно продвинутый инструмент с открытым кодом и облачный стартап.
- Smartsheet [9] корпоративный продукт, вернее продукт с корпоративной версией.
- Actiondesk [10] позволяет подключаться к СУБД и ещё и создавать аналитические интерфейсы.

А также большая подборка инструментов в списке Awesome NoCode/LowCode [11]

Ссылки:
[1] https://nocodb.com
[2] https://rows.com
[3] https://www.clay.com
[4] https://dataland.io/
[5] https://tulr.io/
[6] https://stackby.com/
[7] https://www.basedash.com/
[8] https://www.getgrist.com/
[9] https://www.smartsheet.com/
[10] https://www.actiondesk.io/
[11] https://github.com/kairichard/awesome-nocode-lowcode#database

#nocode #lowcode #tools #data
В рубрике инструментов работы с данными ArangoDb [1] NoSQL СУБД для хранения документов, с акцентом на графовые данные и собственный язык запросов AQL [2].

Довольно развитый продукт, сравнимый с MongoDB по многим возможностям, со своими плюсами и ограничениями.

Из плюсов:
- JSON Native
- поддержка графовых данных
- реально свободная лицензия Apache 2 в сравнении с ограниченной SSPL у MongoDB
- поддержка JOIN՛ов (редкость для NoSQL)

Из ограничений:
- поскольку внутри JSON, то нет родных типов date и datetime, работа с датами через функции
- значительно меньшее сообщество чем у MongoDB
- по некоторым тестам ArangoDB работает медленнее чем MongoDB или OrientDB [3]

Ссылки:
[1] https://www.arangodb.com
[2] https://www.arangodb.com/docs/stable/aql/
[3] https://www.diva-portal.org/smash/get/diva2:1567918/FULLTEXT01.pdf

#tools #opensource
Может ли ИИ лишить работы журналистов и писателей? Может быть, когда-нибудь. А вот что он может уже сейчас - это выступить соавтором текста.

ИИ мой соавтор [1] в рассылке Stories by AI о сервисе Sudowrite использующем языковую модель GPT-3 для сонаписания текстов.

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

Страшная штука, если задуматься, но, пока ещё, поддерживает только английский язык.

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

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

Но это вопрос, относительно, далекого будущего. А в нашем настоящем творческие профессии могут меняться уже в самом ближайшем будущем.

Ссылки:
[1] https://storiesby.ai/p/ai-is-my-co-writer
[2] https://www.sudowrite.com

#ai #tools #writing
В рубрике регулярных напоминаний не могу не рассказать про сервис оценки простоты языка Простой язык (plainrussian.ru) [1] который я много лет назад сделал и передал в Инфокультуру при её создании.

Это очень простой сервис который на вход получает текст на русском языке и на выходе выдает его сложность в баллах где баллы - это число лет учёбы которые необходимо пройти чтобы понимать этот текст. Например, 11.97 баллов - это, примерно, 1-3 курс ВУЗа, а то есть около 12 лет учебы.

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

У сервиса есть API [2] и открытый код [3]. Код не обновлялся примерно лет 10, во всяком случае та его часть которая использовалась для расчета формул.

И вот в формулах и было самое сложное и интересное. Алгоритмы сервиса работают на тех же принципах что формулы читабельности текста созданные изначально для английского языка: Flesch-Kincaid, SMOG, Automatic Readability Index и другие. В их основе подсчет числа слов на предложение, среднее число слогов на слово, среднее число букв на слово, число редких слов и так далее.

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

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

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

По прежнему сайт остаётся одним из тех проектов которым регулярно пользуются несмотря на его неизменность в последние годы.

Ссылки:
[1] https://plainrussian.ru/
[2] https://github.com/ivbeg/readability.io/wiki/API
[3] https://github.com/infoculture/plainrussian/tree/master/textmetric

#plainrussian #russian #language #api #tools
Forwarded from Open Data Armenia (Kseniia Orlova)
[EN] Awesome list: a toolkit for text analyzis Armenian language

- Eastern Armenian National Corpus Electronic Library provides a full view of works by classical authors (these books are in the public domain because their authors died more than 70 years ago). The corpus contains 4547379 words from 104 books by 12 authors. 

- Named entity recognition. pioNer — trained data for Armenian NER using Wikipedia. This corpus provides the gold standard for automatically generated annotated datasets using GloVe models for Armenian. Along with the datasets, 50-, 100-, 200-, and 300-dimensional GloVe word embeddings trained on a collection of Armenian texts from Wikipedia, news, blogs, and encyclopedias have been released.

- The Polyglot library for Python supports language detection, named entity extraction (using Wikipedia data), morphological analysis, transliteration, and sentiment analysis for Armenian.

- Kevin Bougé Stopword Lists Page includes th Armenian language.

- Ranks NL Stopword Lists Page includes the Armenian language.

If you know of new usefull tools and guides, please share that knowledge with us!

Image author Aparna Melaput

#opendata #armenia #language #tools #digitalhumanities
Свежий инструмент Hashnode Rix [1] по модели компаньёна разработчика. Умеет отвечать на вопросы относительно написания кода, На сложные вопросы ответить не может, а на вот такие простые легко.

Уже просто таки даже интересно, когда от supportive AI придёт мода на proactive AI. Пишешь код, к примеру, а тут тебе AI помощник и пишет "Йоу, чувак, да у тебя веб приложение. А кинь мне список страниц что тебе нужны, я сейчас сгенерю" и тд.

Ссылки:
[1] https://hashnode.com/rix

#ai #tools
В качестве регулярного напоминания, кроме всего прочего я за последние лет 15 занимался тем публиковал довольно много кода как открытый код. В основном с надеждой на вовлечение сообщества и, где-то, это получалось, а где-то не очень. Случаев когда получалось и появлялись контрибьюторы довольно много, так что почему бы и не напомнить, на случай если возникнуть желающие воспользоваться и помочь в разработке:

- newsworker - библиотека для Python для извлечения новостей из веб страниц. Один из моих экспериментов с автоматизацией парсинга HTML закончился написанием этой библиотеки которая умеет распознавать даты в любом написании, ссылки и заголовки и текст новости.
- docx2csv - библиотека для Python и утилита командной строки по извлечению таблиц внутри файлов Microsoft Word (.DOCX).
- qddate - библиотека для идентификации дат в любом написании для условно любых языков. Изначально писалась как часть newsworker, потом была отделена. Поддерживает более 300 шаблонов написания дат.
- lazyscraper - утилита командной строки для превращения массивов HTML тэгов и HTML таблиц в таблицы CSV
- russiannames - на удивление оказавшаяся востребованной библиотека для Python и база данных для имён на русском языке и распознаванию стилей их написания. Создавалась из многих открытых источников, полезна, например, для задач когда надо понять в каком формате написано ФИО и что в нём есть что
- undatum - утилита командной строки для работы с разными структурированными данными, в первую очередь JSON lines. Фактически делалось как аналог csvkit для JSON lines, лично я ей пользуюсь ежедневно хотя и её ещё надо и надо допиливать.
- govdomains - база российских госдоменов и ассоциированного с этим кода, да, да, это не только зона .gov.ru, но и многое другое. Делалось изначально для проекта Ruarxive для понимания того что надо архивировать. Список большой, но с 2022 года развиваемый в закрытую по объективным причинам, чтобы не помогать хакерам находить уязвимости.
- metacrafter - утилита и библиотека идентификации семантических типов данных. Поддерживает десятки типов данных собранных в специальном реестре, изначально это был один из внутренних инструментов в продукте Datacrafter
- apibackuper - тоже утилита которой я пользуюсь регулярно, она создавалась для того чтобы архивировать данные предоставляемые через API. Причём всё это делается через простой конфиг файл. До сих пор многие датасеты из API я генерирую с её помощью.
- wparc - утилита архивации содержания Wordpress сайтов через API Wordpress если оно не отключено.
- ydiskarc - утилита архивирования материалов на Яндекс Диске, использует, по большей части документированное официальное API, но не требует к нему токенов или авторизации
- pyiterable - попытка унифицировать работу с данными в разных форматах: CSV, JSON, JSON lines, BSON, в том числе внутри контейнеров архивов. Регулярно сам этим пользуюсь. Изначально был план переписать undatum с использованием этой библиотеки, но руки не доходят.
- datacrafter - облегчённая ETL на Python для работы с открытыми данными, используется в одноимённом проекте datacrafter.ru, аналогично я ей сам регулярно пользуюсь когда надо систематизировать извлечение данных из открытых источников. К ней множество примеров для работы с данными на российских госсайтах.

#opensource #tools #data #datatools
Для тех кто работает с файлами в WARC формате (большая часть сайтов в ruarxive хранятся в нём) ещё одна утилита по работе с ними. Warchaeology [1]. Утилита создана в Национальной библиотеке Норвегии и позволяет:
- конвертировать форматы ARC, WARC и Nedlib
- листать WARC файлы
- удалять дубликаты файлов
- валидировать содержание WARC файлов
- предоставлять оболочку по работе с WARC файлами

Инструмент полезный, может пригодится тем кто любит работать в командной строке. Я также напомню про библиотеку и утилиту командной строки WarcIO [2] с функциями извлечения и пересжатия содержимого WARC файлов и разработанную мной когда-то утилиту MetaWARC [3] которая тоже умеет извлекать контент из WARC файлов и ещё индексировать их в sqlite и считать статистику и даже извлекать метаданные из вложенных файлов.

Больше инструментов полезных и разных! Если Вы знаете хорошие инструменты с открытым кодом для цифровой архивации, пишите нам, будем делать их обзоры.

Ссылки:
[1] https://github.com/nlnwa/warchaeology
[2] https://github.com/webrecorder/warcio
[3] https://github.com/datacoon/metawarc

#tools #opensource #digitalpreservation #webarchives #WARC #software
Забавная утилита для командной строки ai-renamer [1] переименует фотографии в зависимости от их содержимого. Бывает полезно, но... очень многие хранят десятки фотографий одного и того же места или объекта и потом выбирают лучшую фотографию из многих.

Очень полезным инструментом был бы такой локальный органайзер который сканировал фото по наличию того что на них есть и давал бы возможность фасетного поиска с новыми тегами и атрибутами. Кстати и для корпоративных банков документов такое было бы полезно.


Ссылки:
[1] https://github.com/ozgrozer/ai-renamer

#ai #commandline #tools
Свежий симпатичный поисковик по смыслам слов semantic grep [1] использует Word2Vec для выборки связанных по смыслу слов и уже их ищет по тексту.

Выглядит просто, симпатично, удобно для простого использования и под лицензией MIT. Опубликовано совсем недавно и аналогов такого я нигде не видел.

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

Лично я большой любитель командной строки и инструментов работы в ней, хороших поисковиков по текстовым файлам всегда нехватает (и всегда много!)

Ссылки:
[1] https://github.com/arunsupe/semantic-grep

#opensource #ai #commandline #tools #data
Полезные ссылки про данные, технологии и не только:
- FOR-species20K dataset [1] датасет результатов лазерного сканирования более 20 тысяч деревьев и идентификация их видов на основе этих данных
- DuckDB Tricks – Part 1 [2] полезные трюки по работе с данными с помощью DuckDB.
- ncWMS Guide [3] руководство по серверу WMS ncWMS, активно используется вместе с серверами Thredds в метеорологии. Начал их активно добавлять в реестр каталогов данных, скоро проиндексируются в Dateno
- Mapbender 4.0 [4] вышла 4-я версия Mapbender, популярного open source геопортала используемого в ЕС во многих странах.
- SuperMap [5] популярный в Китае геосервер, альтернатива ArcGIS. Используется во многих китайских госорганах, компаниях и активно распространяется в южной, восточной и юго-восточной азии. Имеет частичную совместимость с ArcGIS
- Mealie [6] сервер для ведения рецептов, открытый код и импорт из разных источников. Локализован на многие языки включая русский.
- Slackdump [7] архиватор публичных и личных сообщений из Slack'а. Не требует админских привилегий, открытый код.

Ссылки:
[1] https://zenodo.org/records/13255198
[2] https://duckdb.org/2024/08/19/duckdb-tricks-part-1
[3] https://reading-escience-centre.gitbooks.io/ncwms-user-guide/content/
[4] https://mapbender.org/aktuelles/details/mapbender-version-400-released/
[5] https://www.supermap.com/en-us/
[6] https://github.com/mealie-recipes/mealie
[7] https://github.com/rusq/slackdump

#opensource #data #datatools #geodata #geoportals #tools #datasets
Для тех кто любит заниматься дата сторителлингом (журналисты, аналитики) новый полезный инструмент Closeread [1] позволяющий рассказывать истории внутри HTML документов open source системы документирования Quarto [2].

Quarto сама по себе удобная система и я лично давно смотрю на неё с разных сторон и хочу применить в деле. А Closeread ещё и приближает её к задачам рассказывания историй.

И всё это в Markdown, расширяемо, и тд.

А ещё интересно для публикации научных статей, уже есть примеры их подготовки в Quarto и множество шаблонов [3].

Куда ни посмотри, отличный инструмент.

Ссылки:
[1] https://closeread.netlify.app
[2] https://quarto.org
[3] https://github.com/quarto-journals

#opensource #datajournalism #analytics #datadocs #tools
Про уход Notion из России, это, увы, неизбежное и в большинстве уходов хуже всего то по каким критериям большая часть сервисов определяют российскую аффиляцию. Какое-то время назад я переписывался с JetBrains по поводу использования их продукта и задавал им вопросы по поводу использования их продукта не в РФ и может ли компания использовать продукт если кто-то из команды будет иметь доступ к нему из РФ. Ответ был - нет, не может.

То есть даже если компания зарегистрирована в Казахстане или Армении, если даже там работает большая часть команды, в команде есть кто-то кто даже если изредка, но работает из РФ, например, приезжая к родственникам, это может рассматриваться как нарушение условий использования сервиса. Потому что дословно "ни один сотрудник не имеет права использовать продукт из России".

В этом проблема и с Notion, в этом могут быть будущие проблемы с использованием Google Workspace и других популярных сервисов, хостинга и тд, просто по критериям блокировки использования по подключению из сетей аффилированных с РФ.

У практически всех популярных онлайн сервисов много альтернатив, лично я надеюсь что больше развития получат open source продукты по модели local-first.

#tools #sanctions #opensource
Ещё один полезный/любопытный инструмент ChartDB по проектированию баз данных [1]. Умеет быстро делать структуру из нескольких SQL СУБД, выглядит простым и удобным. Открытый код AGPL-3.0 [2].

Ссылки:
[1] https://chartdb.io
[2] https://github.com/chartdb/chartdb

#opensource #tools #databases