generic-chatbot-backend / lib /extractor /scripts /README_test_chunking.md
muryshev's picture
update
86c402d
|
raw
history blame
5.44 kB
# Тестирование чанкинга и сборки документов
Скрипт `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