File size: 5,270 Bytes
57cf043
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# Pipeline Module

> ВАЖНО!!! README.md сгенерировано автоматически, поэтому может содержать неточности.

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

## Основные этапы обработки

### 1. Парсинг XML файлов
- Чтение XML файлов из указанной директории
- Извлечение текстового и табличного контента
- Сохранение метаданных документов

### 2. Обработка аббревиатур
- Извлечение аббревиатур из текста документов
- Объединение с предварительно подготовленными аббревиатурами
- Применение аббревиатур к текстовому и табличному контенту
- Сохранение списка обнаруженных аббревиатур

### 3. Извлечение иерархической структуры
- Парсинг структуры текстового контента
- Парсинг структуры табличного контента
- Создание иерархического представления документов

### 4. Создание датасета
- Формирование структурированного датасета
- Векторизация текстов
- Сохранение результатов

## Использование

```python
from components.embedding_extraction import EmbeddingExtractor
from components.parser.pipeline import DatasetCreationPipeline
from components.parser.abbreviations.abbreviation import Abbreviation

# Инициализация пайплайна
pipeline = DatasetCreationPipeline(
    dataset_id="my_dataset",
    vectorizer=EmbeddingExtractor(),
    prepared_abbreviations=[],  # список предварительно подготовленных аббревиатур
    xml_ids=["doc1", "doc2"],  # список идентификаторов XML файлов
    save_intermediate_files=True  # сохранять ли промежуточные файлы
)

# Запуск пайплайна
dataset = pipeline.run()
```

## Структура выходных данных

### Основные файлы
- `dataset.csv` - финальный датасет с векторизованными текстами
- `abbreviations.csv` - извлеченные аббревиатуры
- `xml_info.csv` - метаданные XML документов

### Промежуточные файлы (опционально)
- `txt/*.txt` - извлеченный текстовый контент
- `txt_abbr/*.txt` - текстовый контент после применения аббревиатур
- `jsons/*.json` - иерархическая структура документов

## Параметры конфигурации

### DatasetCreationPipeline
- `dataset_id: str` - идентификатор создаваемого датасета
- `vectorizer: EmbeddingExtractor` - векторизатор для создания эмбеддингов
- `prepared_abbreviations: list[Abbreviation]` - предварительно подготовленные аббревиатуры
- `xml_ids: list[str]` - список идентификаторов XML файлов для обработки
- `save_intermediate_files: bool` - сохранять ли промежуточные файлы

## Зависимости

### Внутренние компоненты
- `components.embedding_extraction.EmbeddingExtractor`
- `components.parser.abbreviations.AbbreviationExtractor`
- `components.parser.features.HierarchyParser`
- `components.parser.features.DatasetCreator`
- `components.parser.xml.XMLParser`

### Внешние библиотеки
- pandas
- numpy
- pathlib

## Структура директорий

```
data/
└── regulation_datasets/
    └── {dataset_id}/
        ├── abbreviations.csv
        ├── xml_info.csv
        ├── dataset.csv
        ├── embeddings.pt
        ├── txt/                # (опционально)
        ├── txt_abbr/          # (опционально)
        └── jsons/             # (опционально)
```

## Примечания

- Все промежуточные файлы сохраняются только если установлен флаг `save_intermediate_files=True`
- Векторизация выполняется после создания датасета
- Аббревиатуры применяются как к текстовому, так и к табличному контенту
- Иерархическая структура извлекается отдельно для текста и таблиц