SMC. Руководство пользователя: различия между версиями
Материал из Флора AI
Нет описания правки |
Нет описания правки |
||
| Строка 39: | Строка 39: | ||
!Входные параметры | !Входные параметры | ||
!Ответ | !Ответ | ||
!Примечание | |||
|- | |- | ||
|/smc/ | |/smc/ | ||
| Строка 45: | Строка 46: | ||
| - | | - | ||
|<code>{ models: [model1,...,modelN] }</code> | |<code>{ models: [model1,...,modelN] }</code> | ||
|Выводит только пользовательские модели, сервисные модели, корпуса, наборы меток - не выводит. | |||
|- | |- | ||
|/smc/automark/list | |/smc/automark/list | ||
| Строка 81: | Строка 83: | ||
} | } | ||
|Метод для использования сервисом ups | |||
|- | |- | ||
|/smc/automark/result/{id} | |/smc/automark/result/{id} | ||
| Строка 101: | Строка 104: | ||
} | } | ||
|Метод для использования сервисом ups | |||
|- | |- | ||
|/smc/automark/start | |/smc/automark/start | ||
|POST | |POST | ||
|Начать автоматическую разметку корпуса | |Начать автоматическую разметку корпуса | ||
|taskname | |taskname - произвольное имя задания | ||
corpus [ | |||
corpus - json строка с размечаемым корпусом[ | |||
[ [класс1,... классН], текст ], | [ [класс1,... классН], текст ], | ||
| Строка 113: | Строка 119: | ||
] | ] | ||
marks [ | |||
marks - json строка с набором меток [ | |||
[ метка, [синоним, синоним2 ... синоним Н], порог ], | [ метка, [синоним, синоним2 ... синоним Н], порог ], | ||
| Строка 119: | Строка 127: | ||
] | ] | ||
appendMarks | |||
'''appendMarks''' - "'''yes'''" - дополнить разметку "'''no'''" -заменить разметку | |||
|{ | |{ | ||
| Строка 126: | Строка 136: | ||
"message": "success", | "message": "success", | ||
"id": " | "id": "уникальный id задания" | ||
} | } | ||
|Метод для использования сервисом ups. | |||
|- | |- | ||
|/smc/automark/status/{id} | |/smc/automark/status/{id} | ||
| Строка 134: | Строка 145: | ||
|Получить статус задания на автоматическую разметку корпуса | |Получить статус задания на автоматическую разметку корпуса | ||
|'''id''' - идентификатор задания | |'''id''' - идентификатор задания | ||
| | |{ | ||
"error": "", | |||
"status": "finished", | |||
"started": "2024-10-09 13:49:46", | |||
"finished": "2024-10-09 13:49:46", | |||
"progress": 0 | |||
} | |||
|Метод для использования сервисом ups. | |||
|- | |- | ||
|GET | |GET | ||
| Строка 144: | Строка 168: | ||
|Прервать задание на автоматическую разметку корпуса | |Прервать задание на автоматическую разметку корпуса | ||
|'''id''' - идентификатор задания | |'''id''' - идентификатор задания | ||
| | |{ | ||
"error": 0, | |||
"message": "success" | |||
} | |||
|Метод для использования сервисом ups. | |||
|- | |- | ||
|/smc/classify/{id} | |/smc/classify/{id} | ||
| Строка 219: | Строка 250: | ||
} | } | ||
| | |||
* '''classes''' - отображается название класса, к которому был отнесен текст, и вероятность его принадлежности к этому классу. | *'''classes''' - отображается название класса, к которому был отнесен текст, и вероятность его принадлежности к этому классу. | ||
* '''groups''' - название группы и число совпавших классов. Если метки совпадают с несколькими группами, они отображаются в порядке убывания числа совпавших классов (т.е. чем полнее группа, тем выше ее позиция в списке). | * '''groups''' - название группы и число совпавших классов. Если метки совпадают с несколькими группами, они отображаются в порядке убывания числа совпавших классов (т.е. чем полнее группа, тем выше ее позиция в списке). | ||
| Строка 238: | Строка 269: | ||
} | } | ||
| | |||
|- | |- | ||
|/smc/confusion/{id}/{type} | |/smc/confusion/{id}/{type} | ||
| Строка 245: | Строка 277: | ||
'''type''' - тип данных для построения матрицы, train или test | '''type''' - тип данных для построения матрицы, train или test | ||
|Возвращает PNG изображение с матрицей ошибок | |Возвращает PNG изображение с матрицей ошибок | ||
| | |||
|- | |- | ||
|/smc/correct | |/smc/correct | ||
| Строка 255: | Строка 288: | ||
} | } | ||
|Если модель коррекции не смогла предложить правильное написание текста, метод вернет текст неизменным. | |||
|- | |- | ||
|/smc/data/{id} | |/smc/data/{id} | ||
| Строка 261: | Строка 295: | ||
|'''id''' - идентификатор модели | |'''id''' - идентификатор модели | ||
|<code>ZIP-файл с моделью, либо { error: 1, message: DESCRIPTION }</code> | |<code>ZIP-файл с моделью, либо { error: 1, message: DESCRIPTION }</code> | ||
| | |||
|- | |- | ||
|/smc/data/{id} | |/smc/data/{id} | ||
| Строка 267: | Строка 302: | ||
|'''id''' - идентификатор модели | |'''id''' - идентификатор модели | ||
|<code>{ error: INT, message: DESCRIPTION }</code> | |<code>{ error: INT, message: DESCRIPTION }</code> | ||
| | |||
|- | |- | ||
|/smc/data/{id} | |/smc/data/{id} | ||
|POST | |POST | ||
|Добавление модели. | |Добавление модели. | ||
| | | | ||
| Строка 289: | Строка 314: | ||
* '''csv-file''' - текстовый файл для обучения модели | * '''csv-file''' - текстовый файл для обучения модели | ||
|<code>{ error: INT, message: DESCRIPTION }</code> | |<code>{ error: INT, message: DESCRIPTION }</code> | ||
|Окончание работы проверяется через метод /smc/info/{id}. | |||
Модель может быть добавлена следующими способами: | |||
'''файл архива модели''' | |||
'''переименование существующей модели''' если указана переменная from-existing-model. В данном случае происходит переименование модели на сервере from-existing-model -> id | |||
создание новой модели из обучающего корпуса, текстового файла со строками классов: | |||
класс,класс2,..классN<TAB>ФРАЗА<TAB><nowiki><data></nowiki> | |||
и строками групп: | |||
класс,класс2,..классN<TAB>группа<TAB><group> | |||
в переменной csv-file | |||
|- | |- | ||
|/smc/emotion | |/smc/emotion | ||
| Строка 295: | Строка 337: | ||
|'''text''' - фраза для анализа эмоций | |'''text''' - фраза для анализа эмоций | ||
|''<code>{ "emotion": "positive", "score": 0.9601 }</code>'' | |''<code>{ "emotion": "positive", "score": 0.9601 }</code>'' | ||
| | |||
|- | |- | ||
|/smc/errors/{id} | |/smc/errors/{id} | ||
| Строка 302: | Строка 345: | ||
|текстовый файл со строками вида: | |текстовый файл со строками вида: | ||
ИСТИНА<TAB>ОПРЕДЕЛЕНО<TAB>ФРАЗА | ИСТИНА<TAB>ОПРЕДЕЛЕНО<TAB>ФРАЗА | ||
| | |||
|- | |- | ||
|/smc/groups/{id} | |/smc/groups/{id} | ||
|GET | |GET | ||
|Поиск групп по ранее полученным меткам | |Поиск групп по ранее полученным меткам. | ||
|'''id''' - идентификатор модели | |'''id''' - идентификатор модели | ||
|Результат в виде json. | |Результат в виде json. | ||
| Строка 337: | Строка 380: | ||
] | ] | ||
<code>}</code> | <code>}</code> | ||
|Ищет группы по набору меток. Результат - группы (если найдены) и ближайшие группы с указанием недостающих меток. | |||
Позволяет сохранять контекст в виде меток и дозапрашивать группы с учетом контекста. | |||
|- | |- | ||
|/smc/groups/{id} | |/smc/groups/{id} | ||
| Строка 350: | Строка 395: | ||
} | } | ||
| | |||
|- | |- | ||
|/smc/handler/{id} | |/smc/handler/{id} | ||
| Строка 356: | Строка 402: | ||
|id - наименование модели | |id - наименование модели | ||
|Файл программы обработчика на python | |Файл программы обработчика на python | ||
| | |||
|- | |- | ||
|/smc/handler/{id} | |/smc/handler/{id} | ||
| Строка 368: | Строка 415: | ||
} | } | ||
| | |||
|- | |- | ||
|/smc/handler/{id} | |/smc/handler/{id} | ||
| Строка 383: | Строка 431: | ||
} | } | ||
| | |||
|- | |- | ||
|/smc/info/{id} | |/smc/info/{id} | ||
| Строка 403: | Строка 452: | ||
* '''trainConfusionMatrix''' - матрица ошибок обучения | * '''trainConfusionMatrix''' - матрица ошибок обучения | ||
* '''testConfusionMatrix''' - матрица ошибок тестирования | * '''testConfusionMatrix''' - матрица ошибок тестирования | ||
| | |||
|- | |- | ||
|/smc/log/{id} | |/smc/log/{id} | ||
| Строка 424: | Строка 474: | ||
<code>]</code> | <code>]</code> | ||
} | } | ||
| | |||
|- | |- | ||
|/smc/normalize | |/smc/normalize | ||
|GET | |GET | ||
|Обратная нормализация текста | |Обратная нормализация текста | ||
|'''text''' - текст для обработки | |'''text''' - текст для обработки | ||
|{"text": "<строка после обратной нормализации>"} | |{"text": "<строка после обратной нормализации>"} | ||
|Пример: двадцать пятого апреля в пятом часу -> 25 апреля в 5-м часу | |||
|- | |- | ||
|/smc/punctuate | |/smc/punctuate | ||
| Строка 441: | Строка 492: | ||
} | } | ||
| | |||
|- | |- | ||
|/smc/test/{id} | |/smc/test/{id} | ||
| Строка 451: | Строка 503: | ||
* '''confidence''' - уровень доверия, от 0 до 1. Порог, ниже которого класс считается неизвестным. при значении 0 происходит автоматический расчет среднего уровня доверия, которые можно потом получить методом /smc/info/{id} | * '''confidence''' - уровень доверия, от 0 до 1. Порог, ниже которого класс считается неизвестным. при значении 0 происходит автоматический расчет среднего уровня доверия, которые можно потом получить методом /smc/info/{id} | ||
|<code>{ error: INT, message: DESCRIPTION }</code> | |<code>{ error: INT, message: DESCRIPTION }</code> | ||
| | |||
|} | |} | ||
Версия от 11:55, 10 октября 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
На вход подается результат работы модели, а также начальный текст.
| Метод | Тип | Описание | Входные параметры | Ответ | Примечание |
|---|---|---|---|---|---|
| /smc/ | GET | Вывод списка моделей | - | { models: [model1,...,modelN] }
|
Выводит только пользовательские модели, сервисные модели, корпуса, наборы меток - не выводит. |
| /smc/automark/list | GET | Список заданий на автоматическую разметку корпуса | - | {
"error": 0, "message": "success", "tasks": [ { "id": "id-1", "taskname": "name1", "status": "finished" }, { "id": "id-nnnn", "taskname": "name2", "status": "finished" } ] } |
Метод для использования сервисом ups |
| /smc/automark/result/{id} | GET | Получить результат задания на автоматическую разметку корпуса | id - идентификатор задания | {
"error": 0, "message": "success", "started": "2024-10-09 18:05:51", "finished": "2024-10-09 18:05:51", "corpus": [[ [], [ ["тэг"],"фраза 1"]], [ [], [["тэг"],"фраза 2"]] ] } |
Метод для использования сервисом ups |
| /smc/automark/start | POST | Начать автоматическую разметку корпуса | taskname - произвольное имя задания
[ [класс1,... классН], текст ], [ [класс1,... классН], текст ] ]
[ метка, [синоним, синоним2 ... синоним Н], порог ], ]
|
{
"error": 0, "message": "success", "id": "уникальный id задания" } |
Метод для использования сервисом ups. |
| /smc/automark/status/{id} | GET | Получить статус задания на автоматическую разметку корпуса | id - идентификатор задания | {
"error": "", "status": "finished", "started": "2024-10-09 13:49:46", "finished": "2024-10-09 13:49:46", "progress": 0 } |
Метод для использования сервисом ups. |
| GET
/smc/automark/stop/{id} |
GET
/smc/automark/stop/{id} |
Прервать задание на автоматическую разметку корпуса | id - идентификатор задания | {
"error": 0, "message": "success" } |
Метод для использования сервисом ups. |
| /smc/classify/{id} | GET | Классификация текстовой фразы | id - идентификатор модели
text - текст, подлежащий классификации confidenceThreshold, % - минимальный порог доверия. |
{
"classes": [ { "class": "название класса", "confidence": 1 }, { "class": "название класса 2", "confidence": 1 } ], "groups": [ { "group": "название группы 1", "intersection": 2, "classes": [ "название класса", "название класса 2" ] } ], "nearest": [ { "group": "название группы 2", "percent": 0.6666666666666666, "need": "название класса которого не хватило 1" }, { "group": ""название группы 3", "percent": 0.6666666666666666, "need": "название класса которого не хватило 2" } ] } |
|
| /smc/compress | GET | Убирает из фразы слова не влияющие на ее смысл. |
|
{
"text": "сжатый текст" } |
|
| /smc/confusion/{id}/{type} | GET | Получение изображения матрицы ошибок | id - идентификатор модели
type - тип данных для построения матрицы, train или test |
Возвращает PNG изображение с матрицей ошибок | |
| /smc/correct | GET | Коррекция правописания. Изменяет неправильно написанные слова меняя их на наиболее близкие правильные (из знакомых модели). | text - текст для коррекции | {
"text": "корректный текст" } |
Если модель коррекции не смогла предложить правильное написание текста, метод вернет текст неизменным. |
| /smc/data/{id} | GET | Получение архива модели | id - идентификатор модели | ZIP-файл с моделью, либо { error: 1, message: DESCRIPTION }
|
|
| /smc/data/{id} | DELETE | Удаление модели | id - идентификатор модели | { error: INT, message: DESCRIPTION }
|
|
| /smc/data/{id} | POST | Добавление модели. |
|
{ error: INT, message: DESCRIPTION }
|
Окончание работы проверяется через метод /smc/info/{id}.
Модель может быть добавлена следующими способами: файл архива модели переименование существующей модели если указана переменная from-existing-model. В данном случае происходит переименование модели на сервере from-existing-model -> id создание новой модели из обучающего корпуса, текстового файла со строками классов: класс,класс2,..классN<TAB>ФРАЗА<TAB><data> и строками групп: класс,класс2,..классN<TAB>группа<TAB><group> в переменной csv-file |
| /smc/emotion | GET | Анализ эмоций. | text - фраза для анализа эмоций | { "emotion": "positive", "score": 0.9601 }
|
|
| /smc/errors/{id} | GET | Получение файла с ошибками модели. В случае, если производилось тестирование модели, то файл содержит ошибки тестирования. Если не производилось - ошибки после обучения. | id - идентификатор модели | текстовый файл со строками вида:
ИСТИНА<TAB>ОПРЕДЕЛЕНО<TAB>ФРАЗА |
|
| /smc/groups/{id} | GET | Поиск групп по ранее полученным меткам. | 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": "недостающая метка_о"
}
]
|
Ищет группы по набору меток. Результат - группы (если найдены) и ближайшие группы с указанием недостающих меток.
Позволяет сохранять контекст в виде меток и дозапрашивать группы с учетом контекста. |
| /smc/groups/{id} | POST | Добавляет к модели группы | id - наименование модели
csv-file - файл с группами |
{
"error": 0, "message": "string" } |
|
| /smc/handler/{id} | GET | Получает постобработчик модели | id - наименование модели | Файл программы обработчика на python | |
| /smc/handler/{id} | DELETE | Удаляет постобработчик модели | id - наименование модели | {
"error": 0, "message": "string" } |
|
| /smc/handler/{id} | POST | Устанавливает постобработчик модели |
|
{
"error": 0, "message": "string" } |
|
| /smc/info/{id} | GET | Получение информации о модели. | id - идентификатор модели | В результате выполнения будет возвращен массив с данными о модели. Матрица ошибок отдельно содержат классы, определяющие столбцы и строки матрицы, их количество может быть меньше, т.к. в матрицы попадают только те классы, по которым были ошибки.
|
|
| /smc/log/{id} | GET | Лог всех действий во время обучения/тестирования модели. | id - идентификатор модели | Лог содержится в переменной log в виде списка.
<"log": [
"training",
"normalization: 5, model size: 2",
"training",
"preparing data",
"tokenizing",
"data loaded",
"training entities",
"Warmup, corpus length 24965",
} |
|
| /smc/normalize | GET | Обратная нормализация текста | text - текст для обработки | {"text": "<строка после обратной нормализации>"} | Пример: двадцать пятого апреля в пятом часу -> 25 апреля в 5-м часу |
| /smc/punctuate | GET | Расстановка знаков препинания | text - текст для преобразования | {
"text": "string" } |
|
| /smc/test/{id} | POST | Предназначен для тестирования модели заранее подготовленным текстовым файлом со строками вида: КЛАСС<TAB>ФРАЗА
Метод асинхронный. Окончание работы проверяется через метод /smc/info/{id}. |
|
{ error: INT, message: DESCRIPTION }
|