SMC. Руководство пользователя: различия между версиями
Материал из Флора AI
KorolkovS (обсуждение | вклад) Нет описания правки |
|||
| (не показано 14 промежуточных версий 3 участников) | |||
| Строка 32: | Строка 32: | ||
<onlyinclude> | |||
{| class="wikitable" style="width: 110%" | {| class="wikitable" style="width: 110%" | ||
|+ | |+ | ||
!style="color:blue;width: 15%"|GET/smc/ | </onlyinclude> | ||
!colspan="3" style="width: 85%"|Вывод списка моделей | !style="color:blue;width: 15%"|'''GET/smc/''' | ||
!colspan="3" style="width: 85%"|<small>Вывод списка моделей. Выводит только пользовательские модели. Сервисные модели, корпуса, наборы меток не выводит.</small> | |||
|- | |- | ||
|colspan="2" style="width: 50%|<small>Без входных параметров</small> | |colspan="2" style="width: 50%|<small>Без входных параметров</small> | ||
|colspan="2" style="width: 50%|<small>{ models: [model1,...,modelN] }</small> | |colspan="2" style="width: 50%|<small><code>{ models: [model1,...,modelN] }</code></small> | ||
|- | |- | ||
!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> | ||
|colspan="2" style="width: 50%|<small>{</small> | |colspan="2" style="width: 50%|<small><code>{</code></small> | ||
<small> "error": 0,</small> | <small><code> "error": 0,</code></small> | ||
<small> "message": "success",</small> | <small><code> "message": "success",</code></small> | ||
<small> "tasks": [</small> | <small><code> "tasks": [</code></small> | ||
<small> {</small> | <small><code> {</code></small> | ||
<small> "id": "id-1",</small> | <small><code> "id": "id-1",</code></small> | ||
<small> "taskname": "name1",</small> | <small><code> "taskname": "name1",</code></small> | ||
<small> "status": "finished"</small> | <small><code> "status": "finished"</code></small> | ||
<small> },</small> | <small><code> },</code></small> | ||
<small> {</small> | <small><code> {</code></small> | ||
<small> "id": "id-nnnn",</small> | <small><code> "id": "id-nnnn",</code></small> | ||
<small> "taskname": "name2",</small> | <small><code> "taskname": "name2",</code></small> | ||
<small> "status": "finished"</small> | <small><code> "status": "finished"</code></small> | ||
<small> }</small> | <small><code> }</code></small> | ||
<small> ]</small> | <small><code> ]</code></small> | ||
<small>}</small> | <small><code>}</code></small> | ||
|- | |- | ||
!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%| | ||
* <small>'''id''' - идентификатор задания</small> | * <small>'''id''' - идентификатор задания</small> | ||
|colspan="2" style="width: 50%|<small>{</small> | |colspan="2" style="width: 50%|<small><code>{</code></small> | ||
<small> "error": 0,</small> | <small><code> "error": 0,</code></small> | ||
<small> "message": "success",</small> | <small><code> "message": "success",</code></small> | ||
<small> "started": "2024-10-09 18:05:51",</small> | <small><code> "started": "2024-10-09 18:05:51",</code></small> | ||
<small> "finished": "2024-10-09 18:05:51",</small> | <small><code> "finished": "2024-10-09 18:05:51",</code></small> | ||
<small> "corpus": [[ [], [ ["тэг"],"фраза 1"]],</small> | <small><code> "corpus": [[ [], [ ["тэг"],"фраза 1"]],</code></small> | ||
<small> [ [], [["тэг"],"фраза 2"]] ]</small> | <small><code> [ [], [["тэг"],"фраза 2"]] ]</code></small> | ||
<small>}</small> | <small><code>}</code></small> | ||
|- | |- | ||
!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: | Строка 113: | ||
<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><code>{</code></small> | ||
<small> "error": 0,</small> | <small><code> "error": 0,</code></small> | ||
<small> "message": "success",</small> | <small><code> "message": "success",</code></small> | ||
<small> "id": "уникальный id задания"</small> | <small><code> "id": "уникальный id задания"</code></small> | ||
<small>}</small> | <small><code>}</code></small> | ||
|- | |- | ||
!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%| | ||
* <small>'''id''' - идентификатор задания</small> | * <small>'''id''' - идентификатор задания</small> | ||
|colspan="2" style="width: 50%|<small>{</small> | |colspan="2" style="width: 50%|<small><code>{</code></small> | ||
<small> "error": "",</small> | <small><code> "error": "",</code></small> | ||
<small> "status": "finished",</small> | <small><code> "status": "finished",</code></small> | ||
<small> "started": "2024-10-09 13:49:46",</small> | <small><code> "started": "2024-10-09 13:49:46",</code></small> | ||
<small> "finished": "2024-10-09 13:49:46",</small> | <small><code> "finished": "2024-10-09 13:49:46",</code></small> | ||
<small> "progress": 0</small> | <small><code> "progress": 0</code></small> | ||
<small>}</small> | <small><code>}</code></small> | ||
|- | |- | ||
!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%| | ||
* <small>'''id''' - идентификатор задания</small> | * <small>'''id''' - идентификатор задания</small> | ||
|colspan="2" style="width: 50%|<small>{</small> | |colspan="2" style="width: 50%|<small><code>{</code></small> | ||
<small> "error": 0,</small> | <small><code> "error": 0,</code></small> | ||
<small> "message": "success"</small> | <small><code> "message": "success"</code></small> | ||
<small>}</small> | <small><code>}</code></small> | ||
|- | |- | ||
!style="color:blue;width: 15%"|GET/smc/classify/{id} | <onlyinclude> | ||
!colspan="3" style="width: 85%"|Классификация текстовой фразы | !style="color:blue;width: 15%"|'''GET/smc/classify/{id}''' | ||
!colspan="3" style="width: 85%"|<small>Классификация текстовой фразы. В случает если модель была создана из меток в ответе groups и nearest будут пустыми, а ответ будет построен без учета confidenceThreshold из запроса.</small> | |||
<small>В ответе:</small> | |||
<small> | * <small>'''classes''' - список , для каждого класса которого отображается название класса, к которому был отнесен текст, и вероятность его принадлежности к этому классу.</small> | ||
* <small>'''groups''' - название группы и число совпавших классов. Если метки совпадают с несколькими группами, они отображаются в порядке убывания числа совпавших классов (т.е. чем полнее группа, тем выше ее позиция в списке).</small> | |||
* <small>'''nearest''' - отображаются группы, до которых не хватает всего одной метки, с указанием процента заполненности и сортировкой по убыванию этого процента.</small> | |||
|- | |- | ||
| | |colspan="2" style="width: 50%| | ||
| | * <small>'''id''' - идентификатор модели</small> | ||
* <small>'''text''' - текст, подлежащий классификации</small> | |||
* <small>'''correction''' - проверять правописание слов и исправлять ошибки</small> | |||
* <small>'''confidenceThreshold''', % - минимальный порог доверия.</small> | |||
|colspan="2" style="width: 50%|<small><code>{</code></small> | |||
<small><code> "classes": [</code></small> | |||
<small><code> {</code></small> | |||
<small><code> "class": "название класса",</code></small> | |||
" | <small><code> "confidence": 1</code></small> | ||
<small><code> },</code></small> | |||
<small><code> {</code></small> | |||
<small><code> "class": "название класса 2",</code></small> | |||
<small><code> "confidence": 1</code></small> | |||
<small><code> }</code></small> | |||
<small><code> ],</code></small> | |||
<small><code> "groups": [</code></small> | |||
<small><code> {</code></small> | |||
<small><code> "group": "название группы 1",</code></small> | |||
<small><code> "intersection": 2,</code></small> | |||
" | <small><code> "classes": [ "название класса", "название класса 2" ]</code></small> | ||
<small><code> }</code></small> | |||
<small><code> ],</code></small> | |||
" | <small><code> "nearest": [</code></small> | ||
<small><code> {</code></small> | |||
<small><code> "group": "название группы 2",</code></small> | |||
<small><code> "percent": 0.67,</code></small> | |||
<small><code> "need": "название класса которого не хватило 1"</code></small> | |||
<small><code> },</code></small> | |||
<small><code> {</code></small> | |||
<small><code> "group": ""название группы 3",</code></small> | |||
<small><code> "percent": 0.67,</code></small> | |||
<small><code> "need": "название класса которого не хватило 2"</code></small> | |||
<small><code> }</code></small> | |||
<small><code> ]</code></small> | |||
<small><code>}</code></small> | |||
|- | |||
</onlyinclude> | |||
!style="color:blue;width: 15%"|'''GET/smc/compress''' | |||
!colspan="3" style="width: 85%"|<small>Убирает из фразы слова не влияющие на ее смысл.</small> | |||
|- | |||
|colspan="2" style="width: 50%| | |||
* <small>'''text''' - текст для сжатия</small> | |||
* <small>'''threshold''' - уровень компрессии от 1 до 100. Чем меньше число тем меньше слов будет в итоговой фразе</small> | |||
|colspan="2" style="width: 50%|<small><code>{</code></small> | |||
<small><code> "text": "сжатый текст"</code></small> | |||
<small><code>}</code></small> | |||
|- | |||
!style="color:blue;width: 15%"|'''GET/smc/confusion/{id}/{type}''' | |||
!colspan="3" style="width: 85%"|<small>Получение изображения матрицы ошибок.</small> | |||
|- | |||
|colspan="2" style="width: 50%| | |||
* <small>'''id''' - идентификатор модели</small> | |||
" | * <small>'''type''' - тип данных для построения матрицы, train или test</small> | ||
|colspan="2" style="width: 50%|<small>Возвращает PNG изображение с матрицей ошибок</small> | |||
|- | |||
!style="color:blue;width: 15%"|'''GET/smc/correct''' | |||
!colspan="3" style="width: 85%"|<small>Коррекция правописания. Изменяет неправильно написанные слова меняя их на наиболее близкие правильные (из знакомых модели). Если модель коррекции не смогла предложить правильное написание текста, метод вернет текст неизменным.</small> | |||
|- | |||
|colspan="2" style="width: 50%| | |||
* <small>'''text''' - текст для коррекции</small> | |||
* <small>'''correction''' - уровень коррекции, от 1 до 3. По умолчанию 1.</small> | |||
* <small>'''model''' - если указано, то при коррекции дополнительно используется словарь модели</small> | |||
|colspan="2" style="width: 50%|<small><code>{</code></small> | |||
<small><code> "text": "корректный текст"</code></small> | |||
<small><code>}</code></small> | |||
|- | |||
!style="color:blue;width: 15%"|'''GET/smc/data/{id}''' | |||
!colspan="3" style="width: 85%"|<small>Получение архива модели.</small> | |||
|- | |||
|colspan="2" style="width: 50%| | |||
* <small>'''id''' - идентификатор модели</small> | |||
|colspan="2" style="width: 50%|<small>ZIP-файл с моделью, либо { error: 1, message: DESCRIPTION }</small> | |||
|- | |||
!style="color:red;width: 15%"|'''DELETE/smc/data/{id}''' | |||
!colspan="3" style="width: 85%"|<small>Удаление модели.</small> | |||
|- | |||
|colspan="2" style="width: 50%| | |||
* <small>'''id''' - идентификатор модели</small> | |||
|colspan="2" style="width: 50%|<small><code>{ error: INT, message: DESCRIPTION }</code></small> | |||
|- | |||
!style="color:green;width: 15%"|'''POST/smc/data/{id}''' | |||
!colspan="3" style="width: 85%"|<small>Добавление модели. Окончание работы проверяется через метод /smc/info/{id}. Модель может быть добавлена следующими способами:</small> | |||
* '''<small>файл архива модели</small>''' | |||
* <small>'''переименование существующей модели'''</small> | |||
} | * <small>'''создание новой модели из обучающего корпуса'''</small> | ||
| | |- | ||
|colspan="2" style="width: 50%| | |||
* <small>'''id''' - идентификатор модели</small> | |||
* <small>'''zip-model''' - zip-архив с файлами модели</small> | |||
* <small>'''from-existing-model''' - название модели, которое должно быть переименовано в '''id'''</small> | |||
* <small>'''csv-file''' - текстовый файл для обучения модели или 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><code>{ error: INT, message: DESCRIPTION }</code></small> | |||
|- | |||
!style="color:blue;width: 15%"|'''GET/smc/emotion''' | |||
!colspan="3" style="width: 85%"|<small>Анализ эмоций. На выходе один из вариантов ''positive negative neutral.''</small> | |||
|- | |- | ||
| | |colspan="2" style="width: 50%| | ||
| | * <small>'''text''' - фраза для анализа эмоций</small> | ||
|colspan="2" style="width: 50%|<small><code>{ "emotion": "positive", "score": 0.9601 }</code></small> | |||
|- | |||
|{ | !style="color:blue;width: 15%"|'''GET/smc/errors/{id}''' | ||
!colspan="3" style="width: 85%"|<small>Получение файла с ошибками модели.</small> | |||
|- | |||
|colspan="2" style="width: 50%| | |||
* <small>'''id''' - идентификатор модели</small> | |||
* <small>'''type''' - тип ошибок, возможные варианты:</small> | |||
<small>'''train''' - ошибки обучения</small> | |||
<small>'''test''' - ошибки тестирования</small> | |||
<small>'''mark''' - ошибки создания модели из меток</small> | |||
| | |colspan="2" style="width: 50%|<small>текстовый файл со строками вида:</small> | ||
<small>ИСТИНА<TAB>ОПРЕДЕЛЕНО<TAB>ФРАЗА</small> | |||
|- | |- | ||
|GET | !style="color:blue;width: 15%"|'''GET/smc/groups/{id}''' | ||
!colspan="3" style="width: 85%"|<small>Поиск групп по ранее полученным меткам. Ищет группы по набору меток. Результат - группы (если найдены) и ближайшие группы с указанием недостающих меток. Позволяет сохранять контекст в виде меток и дозапрашивать группы с учетом контекста.</small> | |||
/smc/ | |||
| | |||
|- | |- | ||
| | |colspan="2" style="width: 50%| | ||
| | * <small>'''id''' - идентификатор модели</small> | ||
* <small>'''classes''' — набор меток через запятую</small> | |||
|colspan="2" style="width: 50%|<small>Результат в виде json.</small><small><code>{</code></small> | |||
''' | |||
<small><code> "groups": [</code></small> | |||
" | |||
{ | <small><code> {</code></small> | ||
" | <small><code> "group": "Группа 1",</code></small> | ||
" | <small><code> "intersection": 3,</code></small> | ||
<small><code> "classes": [ "метка1_о", "метка2_о", "метка3_о"]</code></small> | |||
<small><code> },</code></small> | |||
<small><code> {</code></small> | |||
" | <small><code> "group": "Группа 2",</code></small> | ||
<small><code> "intersection": 2,</code></small> | |||
] | <small><code> "classes": [ "метка1_о", "метка5_о" ]</code></small> | ||
<small><code> }</code></small> | |||
<small><code> ],</code></small> | |||
<small><code> "nearest": [</code></small> | |||
<small><code> {</code></small> | |||
" | <small><code> "group": "Группа до которой не хватило 1 метки",</code></small> | ||
<small><code> "percent": 0.75,</code></small> | |||
<small><code> "need": "недостающая метка_о"</code></small> | |||
<small><code> }</code></small> | |||
<small><code> ]</code></small> | |||
<small><code>}</code></small> | |||
|- | |||
!style="color:green;width: 15%"|'''POST/smc/groups/{id}''' | |||
!colspan="3" style="width: 85%"|<small>Добавляет к модели группы.</small> | |||
|- | |||
|colspan="2" style="width: 50%| | |||
* <small>'''id''' - наименование модели</small> | |||
* <small>'''csv-file''' - файл с группами</small> | |||
|colspan="2" style="width: 50%|<small><code>{ "error": 0,</code></small><small><code>"message": "string"</code></small> <small><code>}</code></small> | |||
} | |||
|- | |- | ||
|/smc/ | !style="color:blue;width: 15%"|'''GET/smc/handler/{id}''' | ||
!colspan="3" style="width: 85%"|<small>Получает [https://wiki.connect2ai.net/index.php/SMC._%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F#%D0%9F%D0%BE%D1%81%D1%82%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0 постобработчик] модели.</small> | |||
| | |||
|- | |- | ||
| | |colspan="2" style="width: 50%| | ||
| | * <small>'''id''' - наименование модели</small> | ||
|colspan="2" style="width: 50%|<small>Файл программы обработчика на python</small> | |||
| | |||
| | |||
|- | |- | ||
|/smc/ | !style="color:red;width: 15%"|'''DELETE/smc/handler/{id}''' | ||
!colspan="3" style="width: 85%"|<small>Удаляет [https://wiki.connect2ai.net/index.php/SMC._%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F#%D0%9F%D0%BE%D1%81%D1%82%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0 постобработчик] модели.</small> | |||
| | |||
|- | |- | ||
| | |colspan="2" style="width: 50%| | ||
| | * <small>'''id''' - наименование модели</small> | ||
|colspan="2" style="width: 50%|<code><small>{ "error": 0,"message": "string" }</small></code> | |||
|<code> | |||
|- | |- | ||
|/smc/ | !style="color:green;width: 15%"|'''POST/smc/handler/{id}''' | ||
!colspan="3" style="width: 85%"|<small>Устанавливает [https://wiki.connect2ai.net/index.php/SMC._%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F#%D0%9F%D0%BE%D1%81%D1%82%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0 постобработчик] модели.</small> | |||
|< | |||
|- | |- | ||
| | |colspan="2" style="width: 50%| | ||
| | * <small>'''id''' - наименование модели</small> | ||
* <small>'''handler''' - файл постобработчика</small> | |||
* ''' | |colspan="2" style="width: 50%|<code><small>{ "error": 0,"message": "string" }</small></code> | ||
|- | |||
!style="color:blue;width: 15%"|'''GET/smc/info/{id}''' | |||
* ''' | !colspan="3" style="width: 85%"|<small>Получение информации о модели. В результате выполнения будет возвращен массив с данными о модели. Матрица ошибок отдельно содержат классы, определяющие столбцы и строки матрицы, их количество может быть меньше, т.к. в матрицы попадают только те классы, по которым были ошибки.</small> | ||
|- | |||
|< | |colspan="2" style="width: 50%| | ||
* <small>'''id''' - наименование модели</small> | |||
|colspan="2" style="width: 50%|<small>На выходе будут следующие параметры:</small> | |||
<small>'''id''' - идентификатор</small> | |||
<small>'''status''' - статус</small> | |||
<small>'''classes''' - список классов в модели</small> | |||
<small>'''groups''' - список групп в модели</small> | |||
<small>'''trainCorpusName''', '''testCorpusName''' - названия файлов, использованных при обучении и тестировании</small> | |||
<small>'''trainAccuracy''', '''testAccuracy''' - точность обучения и тестирования</small> | |||
<small>'''initCorpusLength''' - начальный размер корпуса обучения</small> | |||
<small>'''trainCorpusLength''' - размер корпуса после нормализации и синтеза данных</small> | |||
<small>'''testCorpusLength''' - размер тестового корпуса</small> | |||
<small>'''trainConfusionMatrix''' - матрица ошибок обучения</small> | |||
* ''' | <small>'''testConfusionMatrix''' - матрица ошибок тестирования</small> | ||
|- | |||
!style="color:blue;width: 15%"|'''GET/smc/log/{id}''' | |||
!colspan="3" style="width: 85%"|<small>Лог всех действий во время обучения/тестирования модели.</small> | |||
|- | |||
|colspan="2" style="width: 50%| | |||
* <small>'''id''' - наименование модели</small> | |||
|colspan="2" style="width: 50%|<small>Лог содержится в переменной log в виде списка.</small> | |||
{ | <small><code>{ </code></small> | ||
" | <small><code>"log": [</code></small> | ||
" | <small><code> "training",</code></small> | ||
<small><code> "normalization: 5, model size: 2",</code></small> | |||
<small><code> ...</code></small> | |||
] | <small><code>]</code></small> | ||
<small><code>}</code></small> | |||
|- | |- | ||
|/smc/ | !style="color:blue;width: 15%"|'''GET/smc/normalize''' | ||
!colspan="3" style="width: 85%"|<small>Обратная нормализация текста. Пример: двадцать пятого апреля в пятом часу -> 25 апреля в 5-м часу</small> | |||
|- | |- | ||
| | |colspan="2" style="width: 50%| | ||
| | * <small>'''text''' - текст для обработки</small> | ||
|colspan="2" style="width: 50%|<small><code>{"text": "<строка после обратной нормализации>"}</code></small> | |||
| | |||
|- | |- | ||
|/smc/ | !style="color:blue;width: 15%"|'''GET/smc/punctuate''' | ||
!colspan="3" style="width: 85%"|<small>Расстановка знаков препинания.</small> | |||
< | |||
|- | |- | ||
| | |colspan="2" style="width: 50%| | ||
* <small>'''text''' - текст для обработки</small> | |||
| | |colspan="2" style="width: 50%|<small><code>{ "text": "string" }</code></small> | ||
| | |||
" | |||
} | |||
|- | |- | ||
|/smc/ | !style="color:green;width: 15%"|'''POST/smc/search''' | ||
!colspan="3" style="width: 85%"|<small>Семантический поиск фразы в тексте.</small> | |||
| | |||
|- | |- | ||
| | |colspan="2" style="width: 50%| | ||
* <small>'''phrase''' - искомая фраза</small> | |||
* <small>'''text''' - текст в котором нужно найти фразу</small> | |||
|colspan="2" style="width: 50%|<small><code>{</code></small> <small><code>"error": 0,</code></small> | |||
"message": " | <small><code> "message": "success",</code></small> | ||
<small><code> "similarity": 1,</code></small> | |||
" | |||
" | <small><code> "fragment": "найденная фраза"</code></small> | ||
} | <small><code>}</code></small> | ||
|- | |- | ||
|/smc/ | !style="color:green;width: 15%"|'''POST/smc/test/{id}''' | ||
!colspan="3" style="width: 85%"|<small>Тестирование модели. Тестируется заранее подготовленным текстовым файлом со строками вида: КЛАСС<TAB>ФРАЗА</small> | |||
| | |||
<small>Метод асинхронный. Окончание работы проверяется через метод /smc/info/{id}.</small> | |||
|- | |- | ||
| | |colspan="2" style="width: 50%| | ||
| | * <small>'''id''' - идентификатор модели</small> | ||
* <small>'''csv-file''' - файл для тестирования</small> | |||
* <small>'''correction''' - исправлять ошибки правописания в файле для тестирования ('''0''' или '''1''')</small> | |||
|colspan="2" style="width: 50%|<small><code>{ error: INT, message: DESCRIPTION }</code></small> | |||
< | |||
|- | |- | ||
|/smc/ | !style="color:blue;width: 15%"|'''GET/smc/toxicity''' | ||
!colspan="3" style="width: 85%"|<small>Определение токсичности высказывания. Высказывание анализируется по 4 параметрам, по каждому выдается вероятность от 0 до 1:</small> | |||
|- | |- | ||
| | |colspan="2" style="width: 50%| | ||
* <small>'''text''' - текстовая строка с высказыванием</small> | |||
|colspan="2" style="width: 50%|<small><code>{</code></small> <small><code>"insult": 0.13, # оскорбление</code></small> | |||
| | |||
|<code>{ | |||
<small><code> "obscenity": 0, # брань</code></small> | |||
" | |||
" | <small><code> "threat": 0, # угрозы</code></small> | ||
" | <small><code> "politeness": 0.53 вежливость</code></small> | ||
<small><code>}</code></small> | |||
|} | |} | ||
Текущая версия от 12:47, 29 октября 2025
Общее описание
Сервис 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. | ||
| Без входных параметров | {
| ||
| GET/smc/automark/result/{id} | Получить результат задания на автоматическую разметку корпуса. Метод для использования сервисом ups. | ||
|
{
| ||
| POST/smc/automark/start | Начать автоматическую разметку корпуса. Метод для использования сервисом ups. | ||
[ [класс1,... классН], текст ]]
[ метка, [синоним, синоним2 ... синоним Н], порог ]]
|
{
| ||
| GET/smc/automark/status/{id} | Получить статус задания на автоматическую разметку корпуса. Метод для использования сервисом ups. | ||
|
{
| ||
| GET/smc/automark/stop/{id} | Прервать задание на автоматическую разметку корпуса. Метод для использования сервисом ups. | ||
|
{
| ||
| GET/smc/classify/{id} | Классификация текстовой фразы. В случает если модель была создана из меток в ответе groups и nearest будут пустыми, а ответ будет построен без учета confidenceThreshold из запроса.
В ответе:
| ||
|
{
| ||
| GET/smc/compress | Убирает из фразы слова не влияющие на ее смысл. | ||
|
{
| ||
| GET/smc/confusion/{id}/{type} | Получение изображения матрицы ошибок. | ||
|
Возвращает PNG изображение с матрицей ошибок | ||
| GET/smc/correct | Коррекция правописания. Изменяет неправильно написанные слова меняя их на наиболее близкие правильные (из знакомых модели). Если модель коррекции не смогла предложить правильное написание текста, метод вернет текст неизменным. | ||
|
{
| ||
| 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} | Получение файла с ошибками модели. | ||
train - ошибки обучения test - ошибки тестирования mark - ошибки создания модели из меток |
текстовый файл со строками вида:
ИСТИНА<TAB>ОПРЕДЕЛЕНО<TAB>ФРАЗА | ||
| GET/smc/groups/{id} | Поиск групп по ранее полученным меткам. Ищет группы по набору меток. Результат - группы (если найдены) и ближайшие группы с указанием недостающих меток. Позволяет сохранять контекст в виде меток и дозапрашивать группы с учетом контекста. | ||
|
Результат в виде json.{
| ||
| 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 - список классов в модели groups - список групп в модели trainCorpusName, testCorpusName - названия файлов, использованных при обучении и тестировании trainAccuracy, testAccuracy - точность обучения и тестирования initCorpusLength - начальный размер корпуса обучения trainCorpusLength - размер корпуса после нормализации и синтеза данных testCorpusLength - размер тестового корпуса trainConfusionMatrix - матрица ошибок обучения testConfusionMatrix - матрица ошибок тестирования | ||
| GET/smc/log/{id} | Лог всех действий во время обучения/тестирования модели. | ||
|
Лог содержится в переменной log в виде списка.
| ||
| GET/smc/normalize | Обратная нормализация текста. Пример: двадцать пятого апреля в пятом часу -> 25 апреля в 5-м часу | ||
|
{"text": "<строка после обратной нормализации>"}
| ||
| GET/smc/punctuate | Расстановка знаков препинания. | ||
|
{ "text": "string" }
| ||
| POST/smc/search | Семантический поиск фразы в тексте. | ||
|
{ "error": 0,
| ||
| POST/smc/test/{id} | Тестирование модели. Тестируется заранее подготовленным текстовым файлом со строками вида: КЛАСС<TAB>ФРАЗА
Метод асинхронный. Окончание работы проверяется через метод /smc/info/{id}. | ||
|
{ error: INT, message: DESCRIPTION }
| ||
| GET/smc/toxicity | Определение токсичности высказывания. Высказывание анализируется по 4 параметрам, по каждому выдается вероятность от 0 до 1: | ||
|
{ "insult": 0.13, # оскорбление
| ||