Sign inSign up

knodlang/kdlfree

By knodlang

•Updated 7 months ago

Free version of KDL (Knodl) shell allows to work with CSV and newline delimited files.

Image
0

201

knodlang/kdlfree repository overview

⁠English

⁠Using KDL DOCKER CLI

⁠Start mounting the current directory
docker run --rm -ti -v "$(pwd)":/opt/data knodlang/kdlfree:kdl

We recommend to start like this because your data will be stored locally, so you can upgrade or delete the container. Your data will stay persistent in the directory, new container versions are to use them normally.

Your data in the current dir are mounted to /opt/data in container, the cli promt is positioned there automatically.

⁠Scripts for easy work

We have developed some bash scripts to work with kdl cli:

root@5602754e3a28:/opt/data# ls -1 /usr/local/bin/s*.sh
/usr/local/bin/s0_prepare_csv.sh
/usr/local/bin/s1_import.sh
/usr/local/bin/s2_dedup.sh
/usr/local/bin/s3_match.sh
/usr/local/bin/s9_export.sh
/usr/local/bin/sh_select_dict.sh
/usr/local/bin/sh_weight_cut.sh

PATH contains /usr/local/bin, so just start printing script name to enter a command.

⁠Prepare data for import

s0_prepare_csv.sh asks for a file then processes it. It is to be CSV file with headers in the first line, UTF-8 encoding. The script tries to eliminate common CSV glitches to allow normal kdl work with this data.

IMPORTANT! kdl works with LINES format, the linebreak should only delimeter the records and not be used inside the data. LINES is not capable to process any string escaping.

You may use mlr --csv gsub -a '\n' ' ' "your_file_name" > "your_file_name.lines", it will replace linebreaks to three blanks.

⁠Import data into kdl storage

s1_import.sh will import file into kdl storage, return the number of root element to be used for operations. For your convenience the script stores those numbers along with file names so you can select them easily.

⁠Data deduplication

s2_dedup.sh will deduplicate the selected data, ask for weight cut value and produce the result.

⁠Data fuzzy match

s3_match.sh will match the two data collections finding the best match of the second collection for each element of the first collection. Also will ask for weight cut value to produce well formatted result.

⁠Русский

⁠Использование KDL DOCKER CLI

⁠Запуск с монтированием локальной текущей директории
docker run --rm -ti -v "$(pwd)":/opt/data knodlang/kdlfree:kdl

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

Ваши данные текущей директории становятся видны внутри контейнера в директории /opt/data, в которую промпт попадает сразу при входе.

⁠Скрипты для удобства работы

Для удобства ознакомления и работы с kdl cli мы разработали скрипты на bash:

root@5602754e3a28:/opt/data# ls -1 /usr/local/bin/s*.sh
/usr/local/bin/s0_prepare_csv.sh
/usr/local/bin/s1_import.sh
/usr/local/bin/s2_dedup.sh
/usr/local/bin/s3_match.sh
/usr/local/bin/s9_export.sh
/usr/local/bin/sh_select_dict.sh
/usr/local/bin/sh_weight_cut.sh

PATH уже содержит /usr/local/bin, поэтому скрипты вызываются в cli, как команды.

⁠Подготовка данных к загрузке

s0_prepare_csv.sh просит указать файл для обработки, это должен быть CSV файл с заголовками в первой строке, кодировка UTF-8. Данный скрипт попробует устранить широко распространённые в CSV неточности, мешающие дальнейшей работе kdl.

ВАЖНО! kdl работает с форматом LINES, перенос строки должен быть только в качестве разграничителя записей, но не должен содержаться в полях, т.к. формат LINES не поддерживает работу с экранированием строк.

Можно воспользоваться командой mlr --csv gsub -a '\n' ' ' "имя файла" > "имя файла.lines", которая заменит переносы строк внутри полей CSV на три пробела.

⁠Импорт данных во внутреннее хранилище

s1_import.sh загрузит файл во внутреннее хранилище kdl, выдаст номер корневого элемента, который понадобится в дальнейшем. Для Вашего удобства скрипт автоматически запомнит импортируемые "справочники" и их номера, чтобы в дальнейшем обеспечить Вам удобную навигацию без необходимости записывать внутренние номера хранилища.

⁠Дедупликация данных

s2_dedup.sh произведёт дедупликацию выбранного "справочника", задаст наводящие вопросы, выдаст результат.

⁠Фуззи матчинг, нечёткое сопоставление данных

s3_match.sh для каждого элемента первого "словаря" найдёт наиболее подходящий элемент из второго "словаря". Затем также, как при дедупликации, сможете указать вес отсечки, чтобы удобнее получить финальный вид результата соответствия.

Tag summary

Content type

Image

Digest

sha256:d0d0d78ef…

Size

218.7 MB

Last updated

7 months ago

docker pull knodlang/kdlfree:kdl