Spaces:
Runtime error
Runtime error
| # Экстрактор сокращений (Abbreviation Extractor) | |
| > ВАЖНО!!! README.md сгенерировано автоматически, поэтому может содержать неточности. | |
| Модуль для извлечения сокращений и их полных форм из текстовых документов. | |
| ## Принцип работы | |
| Экстрактор ищет в тексте конструкции вида: | |
| - "полная форма (далее - сокращение)" | |
| - "полная форма (далее – сокращение)" | |
| и подобные варианты. | |
| ### Основные этапы обработки: | |
| 1. **Разбиение на предложения** | |
| - Текст разбивается на предложения с учетом специальных случаев | |
| - Учитываются особые сокращения, после которых точка не является концом предложения | |
| 2. **Поиск сокращений** | |
| - В каждом предложении ищутся конструкции с маркером "далее" | |
| - Извлекается короткая форма (сокращение) после маркера | |
| - Определяется полная форма до маркера | |
| 3. **Обработка сокращений** | |
| - Поддерживается два типа сокращений: | |
| - Однословные (например, "*БЖВРК*") | |
| - Многословные (например, "Мы великая нация великих обезьян (далее - *нация обезьян*)") | |
| - Для каждого сокращения определяется его полная форма | |
| 4. **Лемматизация** | |
| - Используется библиотека Natasha для лемматизации текста | |
| - Помогает находить соответствия между полной и короткой формами | |
| ## Использование | |
| ```python | |
| from components.parser.abbreviations.abbreviation_extractor import AbbreviationExtractor | |
| from components.parser.xml.structures import ParsedXMLs | |
| # Создание экстрактора | |
| extractor = AbbreviationExtractor() | |
| # Обработка XML-файлов | |
| result = extractor.process_parsed_xmls(parsed_xmls) | |
| # Обработка одного файла | |
| file_abbreviations = extractor.process_file(text, filename) | |
| # Извлечение сокращений из текста | |
| abbreviations = extractor.extract_abbreviations_from_text(text) | |
| ``` | |
| ## Структура результатов | |
| Результаты представляются в виде структур данных: | |
| - `AllFilesAbbreviations` - коллекция сокращений из всех файлов | |
| - `OneFileAbbreviations` - сокращения из одного файла | |
| - `Abbreviation` - отдельное сокращение с полной и короткой формами | |
| ## Особенности | |
| - Учитываются различные варианты разделителей между полной и короткой формами | |
| - Поддерживается обработка специальных сокращений, не являющихся концом предложения | |
| - Используется лемматизация для улучшения поиска соответствий | |
| - Возможна обработка как одиночных файлов, так и наборов файлов | |
| # Обработка сокращений и аббревиатур | |
| Модуль `abbreviation.py` отвечает за обработку и нормализацию сокращений и аббревиатур в тексте. | |
| ## Основные типы сокращений | |
| - `ABBREVIATION` - аббревиатуры (например, "ОКС НН") | |
| - `SHORTENING` - сокращения (например, "Компания") | |
| - `UNKNOWN` - неопределенный тип | |
| ## Процесс обработки | |
| Класс `Abbreviation` выполняет следующие этапы обработки: | |
| 1. **Определение типа сокращения** (`_define_abbreviation_type`): | |
| - Проверяет, является ли строка аббревиатурой (содержит более одной заглавной буквы в каждом слове) | |
| - Проверяет, является ли строка сокращением (одно слово, начинающееся с заглавной буквы) | |
| 2. **Очистка префиксов** (`_remove_prefix`): | |
| - Удаляет такие префиксы как "далее", различные виды тире | |
| - Убирает лишние пробелы | |
| 3. **Очистка от мусора** (`_remove_trash`): | |
| - Удаляет такие подстроки как "ПАО", "ОАО", "№", "(" | |
| - Обрезает строку с начала до первого вхождения "мусорной" подстроки | |
| 4. **Специальная обработка для аббревиатур** (`_process_abbreviation`): | |
| - Извлекает заглавные буквы из короткой формы | |
| - Проверяет соответствие заглавных букв началам слов в полной форме | |
| - Обрезает полную форму до релевантной части | |
| 5. **Специальная обработка для сокращений** (`_process_shortening`): | |
| - Применяет стемминг (с помощью алгоритма Портера) к короткой форме | |
| - Обрезает полную форму до релевантной части | |
| ## Валидация | |
| - Проверяет длину полной формы (должна быть меньше MAX_LENGTH) | |
| - Проверяет, что полная форма длиннее короткой | |
| - Проверяет отсутствие полной формы в черном списке (BLACKLIST) | |
| - Для аббревиатур проверяет соответствие заглавных букв началам слов | |
| - Для сокращений проверяет корректность регистра букв и отсутствие специальных случаев | |
| Если какая-либо проверка не проходит, тип сокращения устанавливается как `UNKNOWN`. | |
| # Применение сокращений и аббревиатур | |
| Класс `Abbreviation` имеет метод `apply`, который принимает текст и возвращает текст с примененными сокращениями и аббревиатурами. | |
| Класс | |