Skip to content

Модель предсказания класса параграфа в уставе. Модель представляет из себя python-модуль, а так же сервис командной строки, запущенный на AWS сервере.

Notifications You must be signed in to change notification settings

Stepka/markup_neural_network

Repository files navigation

Ontology parser

Модель предсказания класса параграфа в уставе.

Модель представляет из себя python-модуль, а так же сервис командной строки, запущенный на AWS сервере.

Python-модуль

Для работы с моделью определения разметки на основе машинного обучения можно использовать следующие основные методы:

  • ontology.get_markup() - это основной метод для получения предсказаний от уже обученной модели. Принимает параметр texts со списком абзацев, для каждого из которых будет определен его класс и уверенность модели в этом классе. Если Параметр не передан или передано значение None, то будет запущена загрузка абзацев из документов из папки <data_root_path>/Evaluate (о параметре <data_root_path> смотри в секции Конфигурации) Возвращает словарь вида
{
    класс абзаца (int 1-23): [
        ('содержание абзаца/строки', точность определения (float 0-1)) # <--- tuple
        ...
    ]
    ...
}

По умолчанию словарь работает с конфигом словаря rusvectores.

  • ontology.init() - это метод для конфигурации модуля. С его помощью можно настроить параметры модуля по умолчанию и, самое главное, запустить обучение сети (см. параметр start_stage ниже). Параметры метода:

    • config - путь к файлу кофигурации,
    • start_stage - стадия рабочего потока, на которую надо выставить модуль. Если стадия равна 4 и выше, то модуль просто будет выполнять предсказания. Если сталия меньше, то метод init выполнит обучение и тестирование модуля Стадии:
      • 0 - обучение словаря word2vec с нуля. Можно начинать со следующей стадии при использовании уже предобученного словаря word2vec.
      • 1 - кластеризация словаря. Может занять несколько часов, требуется один раз.
      • 2 - тренировка модели-классификатора.
      • 3 - тестирование классификатора.
      • 4 - работа обученного классификатора, создание предсказаний. Это значение передается по умолчанию.

Пример:

from markup_service import get_markup

texts = [
            'Абзац 1',
            'Абзац 2',
            'Абзац 3'
        ]

result = get_markup(texts)

print(result)
# out:
# {1: [('Абзац 1', 0.995), ('Абзац 2', 0.993)], 2: [(Абзац 3', 0.984)]}

Сервис командной строки

Для работы с модулем для неподготовленного человека на AWS развернут сервис командной строки cli.py в виде отдельного python-модуля.

Подключение к AWS серверу

Для подключения к серверу удобнее всего будет использовать пакет программ PuTTY.

Порядок действий:

  • сконвертировать переданный ключ формата .pem в формат .ppk используя PUTTY Gen
  • создать подключение по адресу ubuntu@ec2-18-194-243-115.eu-central-1.compute.amazonaws.com
  • указать путь к ключу .ppk (Connection -> SSH -> Auth)

либо без использования PuTTY, напрямую вызвать команду в терминале: ssh -i "ontology-frankfurt.pem" ubuntu@ec2-18-194-243-115.eu-central-1.compute.amazonaws.com

Детали можно узнать здесь: https://docs.aws.amazon.com/en_us/AWSEC2/latest/UserGuide/putty.html

Работа с сервисом командной строки

Модель находится в папке /home/ubuntu/ontology_parser

Для работы с сервисом командной строки перейдите в папку

cd /home/ubuntu/ontology_parser

Сервис принимает в качестве аргументов два параметра:

  • --config - указывать путь к файлу с конфигурацией запуска. По умолчанию это default.config.
  • --stage - стадия, с которой запускается модель. Это может быть одна из:
    • train_word2vec - обучение словаря word2vec с нуля. Можно начинать со следующей стадии при использовании уже предобученного словаря word2vec.
    • clusterize_vocab - кластеризация словаря. Может занять несколько часов, требуется один раз.
    • train_classifier - тренировка модели-классификатора.
    • test_classifier - тестирование классификатора.
    • predict_classifier - работа обученного классификатора, создание предсказаний. Это значение передается по умолчанию.

Запуск сервиса на обработку предсказаний, с параметрами по умолчанию (с параметрами default.config и predict_classifier):

python3 cli.py

Запуск сервиса с собственными параметрами:

python3 cli.py --config rusvectores.config --stage train_classifier
Варианты использования
  • обучение собственного словаря word2vec: Допустим, у нас есть база суденбных решений и мы хотим обучить свой собственный словарь word2vec на этом корпусе. Для этого нам надо:
    • создать новую конфигурацию (см. justice.config)
    • в секции word2vec -> train_path надо указать путь к файлам для обучения словаря
    • указать отдельный пути для сохранения моделей в секциях word2vec -> saved_model, clustering -> saved_model, classifier -> saved_model.
    • запустить сервис:
    python3 cli.py --config justice.config --stage train_word2vec

Конфигурации

Для настройки рабочего процесса используется файл конфигурации.

Подготовлено два файла конфигурации:

  • default.config - конфигурация по умолчанию, работает с собственной моделью word2vec, обучает ее на корпусе документов для тренировки классификатора.
  • rusvectores.config - конфигурация для работы с предобученной моделью rusvectores.
  • justice.config - конфигурация для обучения словаря word2vec на корпусе судебных решений и работы с этим словарем.
Структура файла
  • data_root_path - путь к файлам для тренировки, предсказания и так далее. Указанный путь должен быть папкой с подпапками: Train, Testing, Evaluate, Predictions соотвственно с файлами для тренировки, места для сохранения файлов после тестирования, файлов для выдачи предсказаний и места, куда результаты предсказания сохраняются.

  • udpipe_model_url - url модели лемматизации.

  • word2vec - структура для конфигурации word2vec

    • python_trained - модель может быть обучена на питоне или на С++. Если модель обучается самостоятельно, значит она обучена на питоне. Предобученные модели rusvectores как правило обучены на С++. Соотвественно, здесь нужно указать true, если модель была обучена на питоне, и false, если была обучена на С++.
    • saved_model - путь к сохраненной или месту для сохранения суб-модели словаря.
    • train_path - путь к данным для обучения словаря.
    • algorithm - алгоритм обучения модели (при обучении с нуля). Может быть skipgram или cbow.
    • bigrams если true то при обучении с нуля модель будет искать би-граммы при составлении словаря.
    • trigrams: если true то при обучении с нуля модель будет искать три-граммы при составлении словаря.
  • clustering - структура для конфигурации кластеризатора (словаря).

    • saved_model - путь к папке для сохранения или к сохраненной суб-модели для кластеризации.
    • one_hot_size - размер one-hot вектора.
  • classifier - структура для конфигурации классификатора.

    • saved_model - путь к папке для сохранения или к сохраненной суб-модели для классификации.
    • num_classes - количество классов для обучения.
    • batch_size - размер батча .
    • steps - количество шагов обучения.

Структура файлов и папок

  • data - папка с файлами для работы модели

    • Train - файлы для обучения и/или тренировки словаря
    • Testing - папка, куда сохраняются результаты тестирования классификатора. Файлы в этой папке сохраняются с дополнительными полями Correct (правильное ли предсказание) и n_grams (найденные в абзаце н-граммы). Дополнительно в папке находится файл n_gram_classes.json В который сохраняется распределение н-рамм по классам.
    • Evaluate - папка для файлов, для которых нужно предсказать классы их абзацев.
    • Predictions - папка, куда сохраняются результаты предсказаний.
  • saved_models - папка для хранения моделей.

    • classifier - здесь хранится обученная модель классификатора.
    • kmeans - здесь хранится обученный кластеризатор для word2vec
    • custom_word2vec - здесь хранится собственная обученная с нуля модель word2vec. Название этой папки может быть изменено или таких папок может быть несколько.
    • ruwikiruscorpora_upos_skipgram_300_2_2019 - здесь хранится предобученная модель rusvectores. Название этой папки может быть изменено или таких папок может быть несколько.

About

Модель предсказания класса параграфа в уставе. Модель представляет из себя python-модуль, а так же сервис командной строки, запущенный на AWS сервере.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages