# Тестирование чанкинга и сборки документов Скрипт `test_chunking.py` позволяет тестировать различные стратегии чанкинга документов и их последующую сборку. ## Возможности 1. **Разбивка документов** - применение различных стратегий чанкинга к документам 2. **Сохранение результатов** - сохранение чанков и метаданных в CSV 3. **Сборка документов** - загрузка чанков из CSV и сборка документа с помощью InjectionBuilder 4. **Фильтрация чанков** - возможность фильтровать чанки по индексу или ключевым словам ## Режимы работы Скрипт поддерживает три режима работы: 1. **chunk** - только разбивка документа на чанки и сохранение в CSV 2. **build** - загрузка чанков из CSV и сборка документа 3. **full** - разбивка документа, сохранение в CSV и последующая сборка ## Примеры использования ### Разбивка документа на чанки (стратегия fixed_size) ```bash python scripts/test_chunking.py --mode chunk --input test_input/test.docx --strategy fixed_size --words 50 --overlap 25 ``` ### Разбивка документа на чанки (стратегия sentence) ```bash python scripts/test_chunking.py --mode chunk --input test_input/test.docx --strategy sentence ``` ### Загрузка чанков из CSV и сборка документа (все чанки) ```bash python scripts/test_chunking.py --mode build --csv test_output/test_fixed_size_w50_o25.csv ``` ### Загрузка чанков из CSV и сборка документа (с фильтрацией по индексу) ```bash python scripts/test_chunking.py --mode build --csv test_output/test_fixed_size_w50_o25.csv --filter index --filter-value "0,2,4" ``` ### Загрузка чанков из CSV и сборка документа (с фильтрацией по ключевому слову) ```bash python scripts/test_chunking.py --mode build --csv test_output/test_fixed_size_w50_o25.csv --filter keyword --filter-value "важно" ``` ### Полный цикл: разбивка, сохранение и сборка ```bash python scripts/test_chunking.py --mode full --input test_input/test.docx --strategy fixed_size --words 50 --overlap 25 ``` ## Параметры командной строки ### Основные параметры | Параметр | Описание | Значения по умолчанию | |----------|----------|------------------------| | `--mode` | Режим работы | `chunk` | | `--input` | Путь к входному файлу | `test_input/test.docx` | | `--csv` | Путь к CSV файлу с сущностями | None | | `--output-dir` | Директория для выходных файлов | `test_output` | ### Параметры стратегии чанкинга | Параметр | Описание | Значения по умолчанию | |----------|----------|------------------------| | `--strategy` | Стратегия чанкинга | `fixed_size` | | `--words` | Количество слов в чанке (для fixed_size) | 50 | | `--overlap` | Перекрытие в словах (для fixed_size) | 25 | | `--debug` | Режим отладки (для numbered_items) | False | ### Параметры фильтрации | Параметр | Описание | Значения по умолчанию | |----------|----------|------------------------| | `--filter` | Тип фильтрации чанков | `none` | | `--filter-value` | Значение для фильтрации | None | ## Подготовка тестовых данных Для тестирования скрипта вам понадобится документ в формате docx, txt, pdf или другом поддерживаемом формате. Поместите тестовый документ в папку `test_input`. ## Результаты работы После выполнения скрипта в папке `test_output` будут созданы следующие файлы: 1. **test_{strategy}_....csv** - CSV файл с сущностями (документ, чанки, связи) 2. **rebuilt_document_{filter}_{filter_value}.txt** - собранный текст документа (при использовании режимов build или full) ## Примечания - Для различных стратегий чанкинга доступны разные параметры - При сборке документа можно использовать фильтрацию чанков по индексу или ключевому слову - Собранный документ будет отличаться от исходного, если использовалась фильтрация чанков ## Требования - Python 3.8+ - pandas - ntr_fileparser - ntr_text_fragmentation