File size: 5,440 Bytes
86c402d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# Тестирование чанкинга и сборки документов

Скрипт `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