Ivan Begtin
8.03K subscribers
1.75K photos
3 videos
101 files
4.45K 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
Как обещал, я буду стараться чаще писать про технологические инструменты которые делаются в рамках проекта APICrafter, в том числе тот о котором я пишу часто в последнее время - metacrafter про распознавание семантических типов данных.

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

Так вот, здесь про пользу государственных порталов открытых данных вроде российского data.gov.ru, британского data.gov.uk и др. Польза эта в многообразии. Например, по data.gov.ru я обучаю распознавалку семантических типов данных.

Для тех кто интересуется как это работает, в репозитории metacrafter-datacatalogs-raw собраны метаданные с разных порталов и опубликован результат распознавания семантических типов данных по data.gov.ru. Желающие могут скачать нефильтрованный результат распознаваний в файле datagovru_semantictypes.jsonl.xz

В цифрах:
- 18+ тысяч обработанных наборов данных
- 198 660 полей полей структурированных файлах
- 66 921 полей у которых автоматически определен семантический тип (примерно 34%)
- наиболее успешно идентифицируются: уникальные идентификаторы, булевые значения, наименования, ФИО, дата и время, номер телефона, url, год и тд
- самые частые ошибки в полях когда название поля используется как булевое значение, а не как содержащие сущность. Например, если поле называется "passport", а не "hasPassport" и по факту является словарем в значениях "имеется" и "отсутствует"
- распознавание можно улучшить зная контекст, источник данных, дополнительные метаданные и тд., но это какое-то дополнительное направление исследований, скорее научное чем практическое.

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

Но даже для такой задачи есть ключевая проблема - это качество данных. Я не просто так пишу про то что госданные, в целом, это мусор.
Вот лишь несколько характеристик именно низкого качества данных:
- CSV файлы публикуются в разных кодировках и с разными разделителями (это, отчасти, преодолимо)
- CSV файлы очень часто публикуются без заголовков, например, многие данные из ХМАО (это реальная проблема)
- многие расширения файлов не соответствуют содержанию. CSV или ZIP вместо XML, HTML вместо CSV и так далее
- многие ссылки на файлы на других сайтах давно протухли, например, ссылки на сайт fstrf.ru давно ведут на какой-то левый сайт.
- вместо настоящих XML файлов с данными публикуются файлы разметки. Я об этом писал ранее, это вообще напоминает какой-то подлог
- многие CSV файлы это кривой экспорт из Excel с многострочтными заголовками и строками ИТОГО нарушающими разбор файла
- огромное число файлов просто пустые

Делать полную оценку причин и проблем с качеством открытых гос данных долго, я пишу о том насколько они влияют на возможность их автоматизированного анализа. Собственно по причинам выше и из 26+ тысяч наборов данных удалось обработать около 18+ тысяч и среди обработанных есть ошибки связанные с неверными заголовками у CSV файлов.

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

Но всё постепенно меняется и я про качество данных расскажу ещё не раз.

#opendata #datasets #metadata #metacrafter #apicrafter
Я довольно давно не рассказывал про развитие инструментов metacrafter для выявления семантических типов данных и реестра семантических типов данных metacrafter-registry которыми давно занимаюсь.

Изменений там много, в основном в части постепенно улучшения списка типов данных, связанности с базами Schema.org и Wikidata. А есть одно изменение важное именно для инженерии данных - это экспорт реестра в формат бизнес глоссария (Business Glossary) используемого в каталоге данных Datahub.

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

Datahub - это опенсорсный каталог корпоративных данных [1] созданный некогда в LinkedIn и развиваемый сейчас компанией Acryl. Среди его достоинств есть импорт данных, в том числе, для бизнес глоссария.

И вот для тех кто хочет загрузить туда типы данных из Metacrafter'а теперь это можно сделать воспользовавшись файлом metacrafter.yml [2] из репозитория проекта. Выглядит результат примерно как на вот этом скриншоте.

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

Ссылки:
[1] https://datahubproject.io
[2] https://github.com/apicrafter/metacrafter-registry/tree/main/data/datahub

#opensource #semanticdatatypes #dataengineering #apicrafter #metacrafter
Я всё забыл написать, ещё пару месяцев начал и почти доделал небольшую программную библиотеку для Python для чтения данных из файлов в любых форматах с данными։ csv, json, json lines, xml, parquet, orc, xls, xlsx и в перспективе других. Называется pyiterable [1] и воспроизводит и улучшает код который был в утилите командной строки undatum [2] и в ETL движке datacrafter [3].

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

Аналогично, для ряда форматов, поддерживается не только чтение, но и запись, опять же в виде записей в виде python dict.

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

На картинке изначальная модель библиотеки, сейчас реализовано около 70% возможностей. Ошибки, предложения можно отправлять в issues, исправления в код в pull request

Ссылки։
[1] https://github.com/apicrafter/pyiterable
[2] https://github.com/datacoon/undatum
[3] https://github.com/apicrafter/datacrafter

#datatools #opensource #apicrafter #data