Модель предсказания класса параграфа в уставе.
Модель представляет из себя python-модуль, а так же сервис командной строки, запущенный на AWS сервере.
Для работы с моделью определения разметки на основе машинного обучения можно использовать следующие основные методы:
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-модуля.
Для подключения к серверу удобнее всего будет использовать пакет программ 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- структура для конфигурации word2vecpython_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- здесь хранится обученный кластеризатор для word2veccustom_word2vec- здесь хранится собственная обученная с нуля модельword2vec. Название этой папки может быть изменено или таких папок может быть несколько.ruwikiruscorpora_upos_skipgram_300_2_2019- здесь хранится предобученная модель rusvectores. Название этой папки может быть изменено или таких папок может быть несколько.