SMC. Руководство пользователя: различия между версиями
Материал из Флора AI
Нет описания правки Метка: визуальный редактор отключён |
|||
| Строка 35: | Строка 35: | ||
|+ | |+ | ||
!style="color:blue;width: 15%"|'''GET/smc/''' | !style="color:blue;width: 15%"|'''GET/smc/''' | ||
!colspan="3" style="width: 85%"|Вывод списка моделей | !colspan="3" style="width: 85%"|<small>Вывод списка моделей. Выводит только пользовательские модели, сервисные модели, корпуса, наборы меток - не выводит.</small> | ||
|- | |- | ||
|colspan="2" style="width: 50%|<small>Без входных параметров</small> | |colspan="2" style="width: 50%|<small>Без входных параметров</small> | ||
| Строка 41: | Строка 41: | ||
|- | |- | ||
!style="color:blue;width: 15%"|'''GET/smc/automark/list''' | !style="color:blue;width: 15%"|'''GET/smc/automark/list''' | ||
!colspan="3" style="width: 85%"|Список заданий на автоматическую разметку корпуса | !colspan="3" style="width: 85%"|<small>Список заданий на автоматическую разметку корпуса. Метод для использования сервисом ups.</small> | ||
|- | |- | ||
|colspan="2" style="width: 50%|<small>Без входных параметров</small> | |colspan="2" style="width: 50%|<small>Без входных параметров</small> | ||
| Строка 77: | Строка 77: | ||
|- | |- | ||
!style="color:blue;width: 15%"|'''GET/smc/automark/result/{id}''' | !style="color:blue;width: 15%"|'''GET/smc/automark/result/{id}''' | ||
!colspan="3" style="width: 85%"|Получить результат задания на автоматическую разметку корпуса | !colspan="3" style="width: 85%"|<small>Получить результат задания на автоматическую разметку корпуса. Метод для использования сервисом ups.</small> | ||
|- | |- | ||
|colspan="2" style="width: 50%| | |colspan="2" style="width: 50%| | ||
| Строка 98: | Строка 98: | ||
|- | |- | ||
!style="color:green;width: 15%"|'''POST/smc/automark/start''' | !style="color:green;width: 15%"|'''POST/smc/automark/start''' | ||
!colspan="3" style="width: 85%"|Начать автоматическую разметку корпуса | !colspan="3" style="width: 85%"|<small>Начать автоматическую разметку корпуса. Метод для использования сервисом ups.</small> | ||
|- | |- | ||
|colspan="2" style="width: 50%| | |colspan="2" style="width: 50%| | ||
| Строка 111: | Строка 111: | ||
<small>[ метка, [синоним, синоним2 ... синоним Н], порог ]]</small> | <small>[ метка, [синоним, синоним2 ... синоним Н], порог ]]</small> | ||
* <small>'''appendMarks''' - "yes" - дополнить разметку "no" -заменить разметку</small> | * <small>'''appendMarks''' - "yes" - дополнить разметку, "no" -заменить разметку</small> | ||
|colspan="2" style="width: 50%|<small>{</small> | |colspan="2" style="width: 50%|<small>{</small> | ||
| Строка 123: | Строка 123: | ||
|- | |- | ||
!style="color:blue;width: 15%"|'''GET/smc/automark/status/{id}''' | !style="color:blue;width: 15%"|'''GET/smc/automark/status/{id}''' | ||
!colspan="3" style="width: 85%"|Получить статус задания на автоматическую разметку корпуса | !colspan="3" style="width: 85%"|<small>Получить статус задания на автоматическую разметку корпуса. Метод для использования сервисом ups.</small> | ||
|- | |- | ||
|colspan="2" style="width: 50%| | |colspan="2" style="width: 50%| | ||
| Строка 142: | Строка 142: | ||
|- | |- | ||
!style="color:blue;width: 15%"|'''GET/smc/automark/stop/{id}''' | !style="color:blue;width: 15%"|'''GET/smc/automark/stop/{id}''' | ||
!colspan="3" style="width: 85%"|Прервать задание на автоматическую разметку корпуса | !colspan="3" style="width: 85%"|<small>Прервать задание на автоматическую разметку корпуса. Метод для использования сервисом ups.</small> | ||
|- | |- | ||
|colspan="2" style="width: 50%| | |colspan="2" style="width: 50%| | ||
| Строка 154: | Строка 154: | ||
|- | |- | ||
!style="color:blue;width: 15%"|'''GET/smc/classify/{id}''' | !style="color:blue;width: 15%"|'''GET/smc/classify/{id}''' | ||
!colspan="3" style="width: 85%"|Классификация текстовой фразы | !colspan="3" style="width: 85%"|<small>Классификация текстовой фразы. В случает если модель была создана из меток в ответе groups и nearest будут пустыми, а ответ будет построен без учета confidenceThreshold из запроса.</small> | ||
<small>В ответе:</small> | <small>В ответе:</small> | ||
| Строка 197: | Строка 197: | ||
<small> "group": "название группы 2",</small> | <small> "group": "название группы 2",</small> | ||
<small> "percent": 0. | <small> "percent": 0.67,</small> | ||
<small> "need": "название класса которого не хватило 1"</small><small> },</small> | <small> "need": "название класса которого не хватило 1"</small><small> },</small> | ||
| Строка 203: | Строка 203: | ||
<small> {</small><small> "group": ""название группы 3",</small> | <small> {</small><small> "group": ""название группы 3",</small> | ||
<small> "percent": 0. | <small> "percent": 0.67,</small> | ||
<small> "need": "название класса которого не хватило 2"</small><small> }</small><small> ]</small> <small>}</small> | <small> "need": "название класса которого не хватило 2"</small><small> }</small><small> ]</small> <small>}</small> | ||
|- | |- | ||
!style="color:blue;width: 15%"|'''GET/smc/compress''' | !style="color:blue;width: 15%"|'''GET/smc/compress''' | ||
!colspan="3" style="width: 85%"|Убирает из фразы слова не влияющие на ее смысл. | !colspan="3" style="width: 85%"|<small>Убирает из фразы слова не влияющие на ее смысл.</small> | ||
|- | |- | ||
|colspan="2" style="width: 50%| | |colspan="2" style="width: 50%| | ||
| Строка 221: | Строка 221: | ||
|- | |- | ||
!style="color:blue;width: 15%"|'''GET/smc/confusion/{id}/{type}''' | !style="color:blue;width: 15%"|'''GET/smc/confusion/{id}/{type}''' | ||
!colspan="3" style="width: 85%"|Получение изображения матрицы ошибок | !colspan="3" style="width: 85%"|<small>Получение изображения матрицы ошибок.</small> | ||
|- | |- | ||
|colspan="2" style="width: 50%| | |colspan="2" style="width: 50%| | ||
| Строка 230: | Строка 230: | ||
|- | |- | ||
!style="color:blue;width: 15%"|'''GET/smc/correct''' | !style="color:blue;width: 15%"|'''GET/smc/correct''' | ||
!colspan="3" style="width: 85%"|Коррекция правописания. | !colspan="3" style="width: 85%"|<small>Коррекция правописания. Изменяет неправильно написанные слова меняя их на наиболее близкие правильные (из знакомых модели). Если модель коррекции не смогла предложить правильное написание текста, метод вернет текст неизменным.</small> | ||
|- | |- | ||
|colspan="2" style="width: 50%| | |colspan="2" style="width: 50%| | ||
| Строка 240: | Строка 240: | ||
|- | |- | ||
!style="color:blue;width: 15%"|'''GET/smc/data/{id}''' | !style="color:blue;width: 15%"|'''GET/smc/data/{id}''' | ||
!colspan="3" style="width: 85%"|Получение архива модели | !colspan="3" style="width: 85%"|<small>Получение архива модели.</small> | ||
|- | |- | ||
|colspan="2" style="width: 50%| | |colspan="2" style="width: 50%| | ||
| Строка 247: | Строка 247: | ||
|- | |- | ||
!style="color:red;width: 15%"|'''DELETE/smc/data/{id}''' | !style="color:red;width: 15%"|'''DELETE/smc/data/{id}''' | ||
!colspan="3" style="width: 85%"|Удаление модели | !colspan="3" style="width: 85%"|<small>Удаление модели.</small> | ||
|- | |- | ||
|colspan="2" style="width: 50%| | |colspan="2" style="width: 50%| | ||
| Строка 254: | Строка 254: | ||
|- | |- | ||
!style="color:green;width: 15%"|'''POST/smc/data/{id}''' | !style="color:green;width: 15%"|'''POST/smc/data/{id}''' | ||
!colspan="3" style="width: 85%"|Добавление модели. | !colspan="3" style="width: 85%"|<small>Добавление модели. Окончание работы проверяется через метод /smc/info/{id}. Модель может быть добавлена следующими способами:</small> | ||
* '''<small>файл архива модели</small>''' | * '''<small>файл архива модели</small>''' | ||
* <small>'''переименование существующей модели''' | * <small>'''переименование существующей модели'''</small> | ||
<small> | * <small>'''создание новой модели из обучающего корпуса'''</small> | ||
|- | |- | ||
|colspan="2" style="width: 50%| | |colspan="2" style="width: 50%| | ||
| Строка 280: | Строка 266: | ||
* <small>'''from-existing-model''' - название модели, которое должно быть переименовано в '''id'''</small> | * <small>'''from-existing-model''' - название модели, которое должно быть переименовано в '''id'''</small> | ||
* <small>'''csv-file''' - текстовый файл для обучения модели или json файл с метками</small> | * <small>'''csv-file''' - текстовый файл для обучения модели или json файл с метками</small> | ||
* <small>'''isMarks''' - если "1" то вместо csv файла корпуса метод ожидает json файл с метками</small> | * <small>'''isMarks''' - если "1" то вместо csv файла корпуса метод ожидает json файл с меткам, формат файла '''csv-file''':</small><small>{"id": "уникальный идентификатор", "name": "имя набора", "data": [ ["метка1",["синоним1", "еще несколько синонимов через запятую"],порог достоверности],</small> <small>["еще метка",["синоним", "еще несколько синонимов через запятую"],порог достоверности]]}</small> <small>модель созданная из меток при этом не обучается, созданный файл модели используется для расчетов векторов "на лету" и выдачи результатов на основании сравнения векторов текста и синонимов из файла с метками</small> | ||
|colspan="2" style="width: 50%|<small>{ error: INT, message: DESCRIPTION }</small> | |colspan="2" style="width: 50%|<small>{ error: INT, message: DESCRIPTION }</small> | ||
|- | |- | ||
!style="color:blue;width: 15%"|'''GET/smc/emotion''' | !style="color:blue;width: 15%"|'''GET/smc/emotion''' | ||
!colspan="3" style="width: 85%"|Анализ эмоций. | !colspan="3" style="width: 85%"|<small>Анализ эмоций. На выходе один из вариантов ''positive negative neutral.''</small> | ||
|- | |- | ||
|colspan="2" style="width: 50%| | |colspan="2" style="width: 50%| | ||
| Строка 291: | Строка 277: | ||
|- | |- | ||
!style="color:blue;width: 15%"|'''GET/smc/errors/{id}''' | !style="color:blue;width: 15%"|'''GET/smc/errors/{id}''' | ||
!colspan="3" style="width: 85%"|Получение файла с ошибками модели. | !colspan="3" style="width: 85%"|<small>Получение файла с ошибками модели. В случае, если производилось тестирование модели, то файл содержит ошибки тестирования. Если не производилось - ошибки после обучения.</small> | ||
|- | |- | ||
|colspan="2" style="width: 50%| | |colspan="2" style="width: 50%| | ||
| Строка 323: | Строка 309: | ||
"group": "Группа до которой не хватило 1 метки", | "group": "Группа до которой не хватило 1 метки", | ||
"percent": 0.75, | "percent": 0.75, | ||
"need": "недостающая метка_о"}]} | "need": "недостающая метка_о"}]} | ||
|- | |- | ||
!style="color:green;width: 15%"|'''POST/smc/groups/{id}''' | !style="color:green;width: 15%"|'''POST/smc/groups/{id}''' | ||
Версия от 12:04, 21 октября 2024
Общее описание
Сервис Short Message Classifier предназначен для классификации текстовых фрагментов (фраз естественной речи). Принимает на вход текстовую строку и возвращает структурированные данные в формате JSON.
Термины и определения
Short Message Classifier (SMC) - сервис классификации текстовых фрагментов.
Модель — предварительно обученная специализированная нейронная сеть классификации коротких фраз.
Swagger UI – интерактивная веб-консоль с кратким описанием методов АPI и возможностью выполнять запросы к сервису SMC.
Описание методов API SMC
Запросы осуществляются по протоколу HTTP 1.1 на адрес сервера с доступным сервисом SMC. По умолчанию используется порт 6181/tcp.
Авторизация запросов не требуется. HTTP-запросы должны содержать заголовок "accept: application/json"
Ответ сервиса представляет собой JSON-документ в кодировке UTF-8 или двоичный файл. Содержимое документа зависит от результата выполнения запроса. При наличии ошибки в качестве ответа вернется переменная error=1 и описание в переменной message. Для удобства проверки методов по ссылке http://АДРЕС:6181 будет отображен интерфейс swagger со всеми методами с возможностью их проверки.
Постобработка
Модель может содержать постобработчик. Это стандартный файл на языке Python, который выполняет произвольные действия с результатом работы модели. Обязательным условием является наличие функции handler, которая должна возвращать данные такого же вида, как и метод GET /smc/classify/{id}.
Пример пустой функции:
def handler(classes=[],text=""):
returns classes
На вход подается результат работы модели, а также начальный текст.
| GET/smc/ | Вывод списка моделей. Выводит только пользовательские модели, сервисные модели, корпуса, наборы меток - не выводит. | ||
|---|---|---|---|
| Без входных параметров | { models: [model1,...,modelN] } | ||
| GET/smc/automark/list | Список заданий на автоматическую разметку корпуса. Метод для использования сервисом ups. | ||
| Без входных параметров | {
"error": 0, "message": "success", "tasks": [ { "id": "id-1", "taskname": "name1", "status": "finished" }, { "id": "id-nnnn", "taskname": "name2", "status": "finished" } ] } | ||
| GET/smc/automark/result/{id} | Получить результат задания на автоматическую разметку корпуса. Метод для использования сервисом ups. | ||
|
{
"error": 0, "message": "success", "started": "2024-10-09 18:05:51", "finished": "2024-10-09 18:05:51", "corpus": [[ [], [ ["тэг"],"фраза 1"]], [ [], [["тэг"],"фраза 2"]] ] } | ||
| POST/smc/automark/start | Начать автоматическую разметку корпуса. Метод для использования сервисом ups. | ||
[ [класс1,... классН], текст ]]
[ метка, [синоним, синоним2 ... синоним Н], порог ]]
|
{
"error": 0, "message": "success", "id": "уникальный id задания" } | ||
| GET/smc/automark/status/{id} | Получить статус задания на автоматическую разметку корпуса. Метод для использования сервисом ups. | ||
|
{
"error": "", "status": "finished", "started": "2024-10-09 13:49:46", "finished": "2024-10-09 13:49:46", "progress": 0 } | ||
| GET/smc/automark/stop/{id} | Прервать задание на автоматическую разметку корпуса. Метод для использования сервисом ups. | ||
|
{
"error": 0, "message": "success" } | ||
| GET/smc/classify/{id} | Классификация текстовой фразы. В случает если модель была создана из меток в ответе groups и nearest будут пустыми, а ответ будет построен без учета confidenceThreshold из запроса.
В ответе:
| ||
|
{
"classes": [{ "class": "название класса", "confidence": 1 }, { "class": "название класса 2", "confidence": 1 } ], "groups": [ { "group": "название группы 1", "intersection": 2, "classes": [ "название класса", "название класса 2" ] } ], "nearest": [ { "group": "название группы 2", "percent": 0.67, "need": "название класса которого не хватило 1" }, { "group": ""название группы 3", "percent": 0.67, "need": "название класса которого не хватило 2" } ] } | ||
| GET/smc/compress | Убирает из фразы слова не влияющие на ее смысл. | ||
|
{
"text": "сжатый текст" } | ||
| GET/smc/confusion/{id}/{type} | Получение изображения матрицы ошибок. | ||
|
Возвращает PNG изображение с матрицей ошибок | ||
| GET/smc/correct | Коррекция правописания. Изменяет неправильно написанные слова меняя их на наиболее близкие правильные (из знакомых модели). Если модель коррекции не смогла предложить правильное написание текста, метод вернет текст неизменным. | ||
|
{
"text": "корректный текст" } | ||
| GET/smc/data/{id} | Получение архива модели. | ||
|
ZIP-файл с моделью, либо { error: 1, message: DESCRIPTION } | ||
| DELETE/smc/data/{id} | Удаление модели. | ||
|
{ error: INT, message: DESCRIPTION } | ||
| POST/smc/data/{id} | Добавление модели. Окончание работы проверяется через метод /smc/info/{id}. Модель может быть добавлена следующими способами:
| ||
|
{ error: INT, message: DESCRIPTION } | ||
| GET/smc/emotion | Анализ эмоций. На выходе один из вариантов positive negative neutral. | ||
|
{ "emotion": "positive", "score": 0.9601 }
| ||
| GET/smc/errors/{id} | Получение файла с ошибками модели. В случае, если производилось тестирование модели, то файл содержит ошибки тестирования. Если не производилось - ошибки после обучения. | ||
|
текстовый файл со строками вида:
ИСТИНА<TAB>ОПРЕДЕЛЕНО<TAB>ФРАЗА | ||
| GET/smc/groups/{id} | Поиск групп по ранее полученным меткам. Ищет группы по набору меток. Результат - группы (если найдены) и ближайшие группы с указанием недостающих меток. Позволяет сохранять контекст в виде меток и дозапрашивать группы с учетом контекста. | ||
|
Результат в виде json.
<<"groups": [
{
"group": "Группа 1",
"intersection": 3,
"classes": [
"метка1_о",
"метка2_о",
"метка3_о"]},
{
"group": "Группа 2",
"intersection": 2,
"classes": [
"метка1_о",
"метка5_о"
]}],
"nearest": [{
"group": "Группа до которой не хватило 1 метки",
"percent": 0.75,
"need": "недостающая метка_о"}]}
| ||
| POST/smc/groups/{id} | Добавляет к модели группы | ||
|
{ "error": 0,
"message": "string" } | ||
| GET/smc/handler/{id} | Получает постобработчик модели | ||
|
Файл программы обработчика на python | ||
| DELETE/smc/handler/{id} | Удаляет постобработчик модели | ||
|
{ "error": 0,
"message": "string"} | ||
| POST/smc/handler/{id} | Устанавливает постобработчик модели | ||
|
{ "error": 0,
"message": "string"} | ||
| GET/smc/info/{id} | Получение информации о модели. В результате выполнения будет возвращен массив с данными о модели. Матрица ошибок отдельно содержат классы, определяющие столбцы и строки матрицы, их количество может быть меньше, т.к. в матрицы попадают только те классы, по которым были ошибки. | ||
|
На выходе будут следующие параметры:
id - идентификатор status - статус classes - список классов в модели confidenceLevel - средний уровень достоверности определения класса, рассчитывается при тестировании sequenceLength - максимальная длина последовательности при обучении normalization, nerCrossLimit, nerRareLimit, modelSize - параметры, использованные при обучении модели trainCorpusName, testCorpusName - названия файлов, использованных при обучении и тестировании trainAccuracy, testAccuracy - точность обучения и тестирования initCorpusLength - начальный размер корпуса обучения trainCorpusLength - размер корпуса после нормализации и синтеза данных testCorpusLength - размер тестового корпуса trainConfusionMatrix - матрица ошибок обучения testConfusionMatrix - матрица ошибок тестирования | ||
| GET/smc/log/{id} | Лог всех действий во время обучения/тестирования модели. | ||
|
Лог содержится в переменной log в виде списка.
{ "log": [ "training", "normalization: 5, model size: 2", "training", "preparing data", "tokenizing", "data loaded", "training entities", "Warmup, corpus length 24965", ... ]} | ||
| GET/smc/normalize | Обратная нормализация текста Пример: двадцать пятого апреля в пятом часу -> 25 апреля в 5-м часу | ||
|
{"text": "<строка после обратной нормализации>"} | ||
| GET/smc/punctuate | Расстановка знаков препинания | ||
|
{ "text": "string" } | ||
| POST/smc/search | Поиск фразы в тексте | ||
|
{ "error": 0,
"message": "success", "similarity": 1, "fragment": "найденная фраза" } | ||
| POST/smc/test/{id} | Тестирование модели. Тестируется заранее подготовленным текстовым файлом со строками вида: КЛАСС<TAB>ФРАЗА
Метод асинхронный. Окончание работы проверяется через метод /smc/info/{id}. | ||
|
{ error: INT, message: DESCRIPTION } | ||
| GET/smc/toxicity | Определение токсичности высказывания Высказывание анализируется по 4 параметрам, по каждому выдается вероятность от 0 до 1:
"оскорбление": 0.13, "непристойность": 0, "угроза": 0, "вежливость": 0.53 | ||
|
{ "insult": 0.13,
"obscenity": 0, "threat": 0, "politeness": 0.53 } | ||