Ivan Begtin
8.07K subscribers
1.5K photos
3 videos
100 files
4.25K links
I write about Open Data, Data Engineering, Government, Privacy and Data Preservation and other gov and tech stuff
Telegram @ibegtin
Facebook - https://facebook.com/ibegtin
Secure contacts ivan@begtin.tech

Contact @NMBabina for ads proposals
Download Telegram
Подборка полезных ссылок про данные, технологии и не только:
- Scrapegraph-ai проект с открытым кодом по интеграции языковых моделей в задачи скрейпинга данных с сайтов. Выглядит как бэкэнд для будующих и текущих проектов по скрейпингу для не-Итшников или как полезный инструмент тем кто хочет упростить себе эту работу.
- pyspread альтернатива Excel написанная на Python. Открытый код под почти все платформы. Может показаться странным, но, как минимум, идея заслуживающая внимания.
- Substrait межязыковая сериализация операций над данными. Спецификация, будет понятна всем кто делает запросы к данным в разных СУБД и не только SQL и непонятна тем кто с таким не сталкивался. Одна из попыток создать универсальный подход/язык запросов поверх десятков диалектов SQL
- Data Council 2024 видео с выступлениями спикеров конференции Data Council 2024 в Austin. Много интересного по дата инженерии, стандартам и созданию больших датасетов. Хорошая концентрация интересных докладов
- nimble новый формат хранения больших колоночных данных. Под открытой спецификацией, сделан внутри Meta. Подробнее в выступлении рассказывают про главный акцент на скорости загрузки датасетов и о том что загрузка датасетов для ML задач занимает до 30% времени.

#opensource #data #datatools
В блоге UBER история о том как они реализовали движок по автоматической категоризации данных DataK9 [1]. Выглядит интересно и очень похоже на то что я делал в опенсорсном продукте Metacrafter [2].

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

Описания правил у них в YAML что тоже очень похоже на Metacrafter

В чём сходства и отличия:
1. В их правилах есть bloom filters и value range, что является хорошей идеей, надо к ней присмотреться.
2. Кроме include patterns они используют ещё и exclude patterns что тоже весьма логично и разумно.
3. Cмешивают типы данных и правила, фактически правила детекции привязывают к типу прямо в YAML файле. В Metacrafter'е это иначе. Типы данных и правила разделены.
4. Не имеют языковых особенностей при идентификации, всё про английский язык.
5. Не используют семантические типы данных. В Metacrafter они вынесены в отдельный реестр [3]

Ключевое, конечно, в среде эксплуатации. DataK9 работает в корп среде с внутренними данными заточенными под AI/ML, а Metacrafter писался под работу с общедоступными данными на разных языках.

Ссылки:
[1] https://www.uber.com/en-DE/blog/auto-categorizing-data-through-ai-ml
[2] https://github.com/apicrafter/metacrafter
[3] https://github.com/apicrafter/metacrafter-registry

#opensource #data #datatools #semanticdatatypes
В продолжение про категоризацию данных я расскажу о том какое моё видение по развитию Metacrafter'а [1]. Напомню что это опенсорс утилита по идентификации семантических типов данных, категоризации и автодокументирования данных.

1. Это расширение числа семантических (смысловых) типов данных и правил их идентификации. Сейчас есть сотни типов и сотни правил, но далеко не для всех типов данных правила есть и добавлять там много что есть. В особенности когда это касается отраслей: медицина, биохимия, финансовые структуры, нефтянка, и много что другое. Специфики отраслевой немало, правила для них готовятся совсем не быстро.
2. Расширение видов правил идентфикации смысловых типов данных. В первую очередь определение уникальных полей, общих префиксов и других особенностей.
3. Возможно обновление языка управления правилами и добавление и переписать правила для добавления bloom filter, пространств значений для цифр и исключающих фильтров.
4. Перестройка работы metacrafter'а на работу с сервером по умолчанию. Сейчас для работы утилиты командной строки правила каждый раз загружаются и компилируются из файлов с правилами. А это небыстро, дольше чем сама работа категоризатора. Альтернатива в виде prefech и запуска локального сервера и работы через него.
5. Введение режима идентификации неизвестных типов данных. Это когда Metacrafter'у скармливаются датасеты для обучения и по определенным правилам он рекомендует разметить конкретные поля и конкретные типы данных. Это самая сложная и исследовательская задача. Вот её по настоящему интересно решить.

Ну и как не добавить что сейчас создаётся архив датасетов проиндексированных Dateno и по ним как раз идёт тестирование Metacrafter'а и будущая доработка.

Ссылки:
[1] https://github.com/apicrafter/metacrafter


#opensource #data #datatools #semanticdatatypes
Свежий доклад State of Data Engineering 2024 от команды LakeFS.

Подмечают три ключевых тренда:
1. Генеративный ИИ влияет на инструментарий в Modern Data Stack
2. Конкуренция дата продуктов растёт и, соответственно, моё дополнение, цена выхода на рынок с новым продуктом.
3. Открытые форматы создают закрытые заборы. В центре конфликт между Databricks и Snowflake.

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

Что характерно в таких обзорах State of ... так то что от 75 до 95 процентов инструментов, по разным категориям, это облачные продукты. К российским реалиям, к примеру, они не применимы. Как и ко многим особо закрытым не-российским стекам данных.

И, кстати, чтобы не забыть, составители таких State of продолжают путать открытые данные и каталоги открытых данных и корпоративные каталоги. А это очень разные продукты под очень разные задачи.

А если бы я выпускал свой State of data ... то делал бы два отдельных. Один для облака, а другой для корп оффлайна. А может быть даже и три. Ещё один для корп оффлайна открытого кода.

#datatools #opensource #stateof #dataengineering #moderndatastack #readings
Смешная картинка про российскую ГосТехИИзацию. 😂 Но вместо того чтобы говорить что не так с ГосТех'ом в РФ, я скажу что так с ГосТехом в Сингапуре. В основе ГосТеха в Сингапуре много открытого исходного кода и открытых продуктов созданных командой разработчиков их технологического государственного агентства Продукты живые, исходный код доступен https://github.com/opengovsg

Ответить на вопрос что не так с ГосТехом в РФ каждый может самостоятельно😜

#govtech #singapore #russia #opensource
Два интересных и противоположных текста. В NYTimes о том как Марк Цукерберг поднабрал кармы и репутации выбрав open-source путь для развития AI в Meta. И, в целом, текст про пользу от открытия кода LLAMA.

Второй текст авторский от John Luttig из фонда Founders Fund, финансирующего многие AI стартапы что у нас на слуху, о том что фундаментальные модели ИИ будут с закрытым кодом. Потому что дорого, потому что национальная безопасность и много разных соображений.

Где правда? Я бы предположил что правда в будущих прецедентах. Если кто-то из недружественных для США стран попадётся на применении open-source LLM в каком-нибудь военном непотребстве конфликте, то open source LLM пришибут очень быстро.

Как бы то ни было тема важная, забывать про неё нельзя.

#opensource #ai #LLM
Для тех кто работает с файлами в 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
В рубрике полезных инструментов по работе с данными:
Milvus Lite [1] безсерверная версия продукта Milvus, с открытым кодом и библиотекой для Python. Является векторной базой данных позволяющей реализовывать поиск по тексту или по изображениям. А также много примеров по применению вместе с языковыми моделями. [2]. Про движок Milvus [3] также забывать не стоит.

Относительно векторных баз данных то чуть ли не лучший их обзор - это примеры в документации LLamaindex [4] в разделе "Vector stores". Нет информации о производительности хранилищ, зато там перечислены практически все такие продукты.

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

Ссылки:
[1] https://github.com/milvus-io/milvus-lite
[2] https://github.com/milvus-io/bootcamp/tree/master/bootcamp/tutorials
[3] https://milvus.io/
[4] https://docs.llamaindex.ai/en/stable/examples/

#vectordb #opensource #databases
Собрал свои публичные презентации по нескольким темам и понял что получится большой пост если перечислять все. Вот тут самые основные:

Открытые данные
-
Раскрытие данных о госфинансах как часть государственной политики - про проекты открытости госфинансов и их значимости
- Открытые данные как основа госполитики - о том как устроены открытые данные в мире
- Как искать данные с помощью каталогов данных. Проект Datacatalogs.ru - об одном из первых каталогов-каталогов данных
- Sharing Data for Disaster Response and Recovery Programs - об открытых данных в вопросах чрезвычайных ситуаций и восстановления
- Открытость информационных систем нормотворчества - об открытости/закрытости систем нормотворчества в России

Data engineering
-
Dateno. Global Data Discovery search engine - презентация проекта поиска по данным Dateno
-
Datacrafter. Каталог и озеро данных на базе MongoDB - презентация для выступления на конференции SmartData, о внутренностях продукта Datacrafter и куча технических подробностей

Open Data Armenia
-
Open Finances. International and Armenia overview - обзор проектов по открытости госфинансов в мире и в Армении
- Open Data, Open Code, Open Licenses - о разных компонентах открытости

Открытый код
- Открытый код в других странах - Как и в каком объёме и кто именно публикует открытый код, почему это важно и почему это становится всё более популярным

Приватность
-
Слежка через государственные мобильные приложения - о том как государственные органы следят за гражданами с помощью мобильных приложений и сливают информацию о их передвижении и действиях коммерческим компаниям
- Термины и объекты регулирования: ADM-системы - о том что такое системы для автоматического принятия решения и как они описываются в разных странах
- О необходимости контроля и аудита ADM- систем - о том как регулировать ИИ используемый для автоматического принятия решений

Веб архивация
- Организация веб-архивов - о том как устроены современные интернет архивы и Национальный цифровой архив (ruarxive.org)
- Дата инженерия и цифровая гуманитаристика - о том какие большие цифровые гуманитарные проекты есть в мире и про Национальный цифровой архив

Понятный язык
- Простой и понятный русский язык - о простоте русского языка и её измерении
- Простота нормативно-правового языка - о подходах к оценке нормативно-правовых текстов

P.S. Всего у меня 200+ неразобранных презентаций за последние 15 лет, в онлайне не больше 30. Что-то устаревает, что-то нельзя публиковать, что-то бессмысленно без самого выступления, но, по мере разбора завалов, буду выкладывать дальше.

#opendata #opensource #plainlanguage #webarchives #digitalpreservation #dataengineering #armenia
Свежий open source продукт для каталогизации корпоративных данных, в этот раз от Databricks и под названием Unity Catalog [1]. Обещают что это чуть ли не единственная open source платформа для data governance для data и AI.

Бегло посмотрев его могу сказать что:
- сделан каталог по cloud-first модели, полностью ориентирован на работу через облачных провайдеров
- в основе Delta sharing protocol, для обмена структурированными и неструктурированными данными
- UI сейчас нет, можно сказать этакий headless data catalog, может быть позже добавят
- он совсем не про инвентаризацию данных и про data assets, а скорее про приведение имеющегося к стандартным/популярным форматам
- внутри всё написано на Java

Итого:
1. Если надо сделать единый каталог для нескольких дата команд работающих с разными cloud сервисами и таблицами (Iceberg, Delta, Hudi) - годится
2. Если надо систематизировать работу data science команд с разными ML моделями и данными для обучения - скорее годится
3. Если надо проинвентаризировать корпоративные базы данных и разные данные, особенно унаследованные форматы - не подходит
4. Если надо организовать работу по документированию данных внутри - не подходит

И туда же до кучи, Snowflake тоже пообещали опубликовать код своего каталога данных Polaris [2]. Исходного кода пока нет, но тоже видно что это cloud-first решение на связке Iceberg и разных клауд провайдеров.

Ссылки:
[1] https://www.unitycatalog.io/
[2] https://github.com/snowflakedb/polaris-catalog

#opensource #datacatalogs #datatools
Сугубо техническое и инструментальное. Я на днях обновил исходный код утилиты metacrafter [1] и библиотеки для Python iterabledata [2].

Metacrafter - это утилита и библиотека для Python по выявлению семантических типов данных и далее автодокументирования датасетов. Она изначально поддерживала MongoDB, базовые типы файлов вроде csv, xml, jsonl и тд, а также большую часть SQL баз данных (через SQLAlchemy). Не хватало только поддержки файлов которые могут быть разнообразно сжаты. Эту задачу получилось решить переключившись на библиотеку iterabledata которая поддерживает работу с файлами вроде .csv.bz2, .xml.xz, .jsonl.gz и так далее. Собственно к уже имеющимся алгоритмам сжатия и форматам я добавил ещё Zstandard и Brotli. Из популярных форматов не поддерживаются пока только Snappy и 7z . Но у Snappy неудобная реализация на Python, надо её переписывать, а библиотека для 7z не поддерживает режим открытия файла в контейнере, без обязательного раз сжатия .

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

А поддержку сжатых файлов в metacrafter пришлось добавлять не просто так, а потому что хранение бесконечного числа CSV'шек и других первичных файлов в Dateno сжирает очень много места, а обрабатывать их надо. И обрабатывать достаточно быстро и с достаточно небольшими ресурсами памяти, процессора и тд.

Один из способов такой экономии это обновление инструментария для поддержки сжатых файлов на всех этапах. Причём не только на этапе обработки данных, но и на этапе извлечения и загрузки. Импорт в СУБД тоже нужен не в чистых .csv или .json, файлах, а в том числе, сжатыми тоже.

Ссылки:
[1] https://github.com/apicrafter/metacrafter
[2] https://github.com/apicrafter/pyiterable

#opensource #datatools #data #metacrafter #dateno
Свежий инструмент Amphi для визуальных ETL процессов, с low-code проектированием труб данных (data pipelines) через интерфейс в Jupyter lab

Из плюсов:
- low code
- не cloud-first
- базовый набор для обработки структурированных и неструктурированных данных
- всё можно делать в UI прямо в Jupyter Lab
- открытый код

Из минусов:
- low-code (для кого-то минус)
- не cloud-first (для кого-то минус)
- мало разнообразия в источниках получения данных
- лицензия Elastic, недоопенсорс

Мне чем-то напомнило Apache Nifi, но только отчасти.

Интеграция в Jupyter Lab - хорошо,но пока что и в целом надо приглядется. Продукт явно сделан пока скорее для инвесторов чем для пользователей, но без пользователей и инвестиций не будет.

В целом из разработки дата инструментов мне нравятся не только продукты, но и команды Clickhouse и Duckdb.

Хочется дождаться ETL сделанное по аналогии с Duckdb. Удобным ядром и большим числом хорошо написанных расширений. Какое-то время назад мне казалось что Meltano на эту роль подходит, но с тех пор как они отдали свои публичные ресурсы довольно хреновым маркетологам читать их стало тяжело. Развитие продукта сложно оценивать.

#etl #opensource #datatools
Подборка ссылок на продукты публикации датасетов для API и аналитики:

С открытым кодом:
- SQLite Studio [1] быстро первращает базы SQLite в веб интерфейс. Можно смотреть структуру таблиц и делать запросы. А также есть демо [2]. По ощущениям очень простой и удобный для этой небольшой задачи.
- Datasette [3] хорошо известный в узких кругах продукт, очень быстро превращающий датасеты в веб интерфейс. Умеет в разные данные, разные API, разные интерфейсы и куча расширений. Когда хочется конструктор и разного
- CSVBase [4] простой до безобразия для превращения CSV файлов в API. Внутри всё Python, одновременно и сервис для публикации данных онлайн для тех кто очень хочет делать это за деньги
- APIReady [5] написанный мной 11 лет назад очень простой движок по превращению CSV файлов в API. Честно говоря с той поры я его даже не развивал, просто как демонстрация самой идеи.
- APICrafter [6] тоже написанная мной утилита по публикации API к базам MongoDB. Развитие APIReady и необходимость поскольку MongoDB по умолчанию не давало и не даёт приемлимое API в их Community Server. Только в облачном сервисе есть уже что-то удобное. Всё на Python, управляется развесистыми YAML конфигами которые строятся автоматически на основе просканированных баз данных [7]

Если Вы знаете другие open source инструменты для публикации датасетов, о них можно рассказать в чатике.

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

Ссылки:
[1] https://github.com/frectonz/sqlite-studio
[2] https://sqlite-studio.frectonz.io/
[3] https://datasette.io/
[4] https://github.com/calpaterson/csvbase
[5] https://github.com/ivbeg/apiready
[6] https://github.com/apicrafter/apicrafter
[7] https://github.com/apicrafter/apicrafter/blob/main/examples/rusregions/apicrafter.yml


#opensource #datatools #data #api
This media is not supported in your browser
VIEW IN TELEGRAM
Свежий любопытный инструмент для автоматизации работы аналитика: Thread [1], автоматизирует Jupyter Notebook с помощью API OpenAI, позволяет автозаполнять таблицы, генерировать код и визуализацию.

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

Автор явно создал движок под облачный стартап где такое будет из коробки.

И да, открытый код под лицензией AGPL3. Кстати явный видный тренд применения GPL/AGPL в современном исходном коде, но не от идеалов FSF, а именно для того чтобы не ограничивать себя в создании стартапа и бизнеса, но ограничивать в этом всех остальных.

Ссылки:
[1] https://github.com/squaredtechnologies/thread

#opensource #ai #analytics #dataviz #jupyter
За много лет у меня накопилось множество инструментов для командной строки которые я создавал для разных дата задач:
- undatum [1] утилита для обработки данных с акцентом на JSONl файлы
- datadiff [2] утилита для создания патчей для датасетов
- mongo2md [3] утилита по автогенрации markdown документации к коллекциям mongodb
- metacrafter [4] утилита и библиотека по идентификации семантических типов данных
- docx2csv [5] утилита по превращению таблиц в файлах DOCX в CSV
- lazyscraper [6] утилита по быстрому и автоматическому извлечению данных из HTML таблиц и другой разметки

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

Сейчас я задумался не пора ли многие из них перенести в один инструмент. Тот же undatum.

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

Вот примерно такое я хочу сделать с undatum добавив туда разные функции и поддерживая работу с NoSQL как приоритет.

Но самое интересная это думать над тем как это реализовать. Я всё чаще склоняюсь к тому что Duckdb правильнее воспринимать как data transformation движок, а не как хранилище. Можно очень многое ускорить с его помощью. Но не всё и тут важны альтернативы. Силами языка или встроенным DB движком.

А ещё у меня есть экспериментальный код mongorefine и код утилиты datacrafter которые живут несколько иначе и связать всё вместе сложнее.

В общем вот такие мысли в последнее время, и открытый код который хочется развивать. А вот код из Dateno можно раскрывать только ограниченно, потому что там много специфичного know how.

Ссылки:
[1] https://github.com/datacoon/undatum
[2] https://github.com/datacoon/datadifflib
[3] https://github.com/datacoon/mongo2md
[4] https://github.com/apicrafter/metacrafter
[5] https://github.com/ivbeg/docx2csv
[6] https://github.com/ivbeg/lazyscraper

#opensource #datatools #data
Подборка полезных инструментов для работы с данными и не только:
- GROBID [1] библиотека и набор утилит для разбора PDF научных статей. Извлекает таблицы, ссылки, заголовки, цитаты, даты и именованные сущности. Используется внутри проекта Semantic Scholar. Открытый код под Apache 2.
- sqleton [2] универсальная библиотека для Python для доступа к разным SQL СУБД. Альтернатива SQLAlchemy, но выглядит как более простая в использовании
- reladiff [3] библиотека для Python для сравнения больших таблиц, сравнительно легко её можно доработать для сравнения больших датасетов
- Daft [4] распределенная библиотека для датафреймов на Rust и Python. Внутри Apache Arrow и язык запросов в виде функций для Python

Ссылки:
[1] https://github.com/allenai/grobid
[2] https://github.com/erezsh/sqeleton
[3] https://github.com/erezsh/reladiff
[4] https://github.com/Eventual-Inc/Daft

#opensource #datatools #data #pdf #sql #dataframes