Действия

SMC. Руководство пользователя: различия между версиями

Материал из Флора AI

Нет описания правки
Нет описания правки
Строка 16: Строка 16:
Авторизация запросов не требуется. HTTP-запросы должны содержать заголовок <code>"accept: application/json"</code>
Авторизация запросов не требуется. HTTP-запросы должны содержать заголовок <code>"accept: application/json"</code>


Ответ сервиса представляет собой JSON-документ в кодировке UTF-8 или двоичный файл. Содержимое документа зависит от результата выполнения запроса. При наличии ошибки в качестве ответа вернется переменная error=1 и описание в переменной message. Для удобства проверки методов по ссылке http://АДРЕС:6183 будет отображен интерфейс swagger со всеми методами с возможностью их проверки.
Ответ сервиса представляет собой JSON-документ в кодировке UTF-8 или двоичный файл. Содержимое документа зависит от результата выполнения запроса. При наличии ошибки в качестве ответа вернется переменная error=1 и описание в переменной message. Для удобства проверки методов по ссылке http://АДРЕС:6183 будет отображен интерфейс swagger со всеми методами с возможностью их проверки. Модель может содержать постобработчик. Это стандартный файл на языке Python, который выполняет произвольные действия с результатом работы модели. Обязательным условием является наличие функции handler, которая должна возвращать данные такого же вида, как и метод GET /smc/classify/{id}.
 
 
Пример пустой функции:
 
<code>def handler(classes=[],text=""):</code>
 
<code>  returns classes</code>
 
На вход подается результат работы модели, а также начальный текст.


{| class="wikitable"
{| class="wikitable"
Строка 79: Строка 88:
|/smc/data/{id}
|/smc/data/{id}
|POST
|POST
|Добавление модели. Может быть добавлена следующими способами:
|Добавление модели. Окончание работы проверяется через метод /smc/info/{id}. Модель может быть добавлена следующими способами:


* файл архива модели
* файл архива модели
* переименование существующей модели если указана переменная '''from-existing-model'''. В данном случае происходит переименование модели на сервере '''from-existing-model -> id'''
* переименование существующей модели если указана переменная '''from-existing-model'''. В данном случае происходит переименование модели на сервере '''from-existing-model -> id'''
* создание новой модели из обучающего корпуса, текстового файла со строками CLASS<TAB>TEXT в переменной '''csv-file'''
* создание новой модели из обучающего корпуса, текстового файла со строками КЛАСС<TAB>ФРАЗА в переменной '''csv-file'''


|
|
Строка 94: Строка 103:
* '''model-size''' - размер структуры модели. Чем больше данных, теб больше нужна модель. 0 - автоматический режим определения структуры модели. 1-5 - ручной режим. По умолчанию 3.
* '''model-size''' - размер структуры модели. Чем больше данных, теб больше нужна модель. 0 - автоматический режим определения структуры модели. 1-5 - ручной режим. По умолчанию 3.
* '''entity-cross-limit''' - от 0 до 1. Предельный коэффициент возможного наличия сущности в многих классах, выше которого сущность считается мусорной. По умолчанию 1, т.е. допуск всех найденных сущностей.
* '''entity-cross-limit''' - от 0 до 1. Предельный коэффициент возможного наличия сущности в многих классах, выше которого сущность считается мусорной. По умолчанию 1, т.е. допуск всех найденных сущностей.
* entity-rare-limit - от 0 до 1. Минимальный порог повторяемости сущности в классе, ниже которого сущность считается мусорной. По умолчанию 0, т.е. допуск всех найденных сущностей.
* '''entity-rare-limit''' - от 0 до 1. Минимальный порог повторяемости сущности в классе, ниже которого сущность считается мусорной. По умолчанию 0, т.е. допуск всех найденных сущностей.
|<code>{ error: INT, message: DESCRIPTION }</code>
|<code>{ error: INT, message: DESCRIPTION }</code>
|-
|-
Строка 100: Строка 109:
|DELETE
|DELETE
|Удаление модели
|Удаление модели
|id - идентификатор модели
|'''id''' - идентификатор модели
|<code>{ error: INT, message: DESCRIPTION }</code>
|<code>{ error: INT, message: DESCRIPTION }</code>
|-
|-
|/smc/stt/{id}
|/smc/errors/{id}
|GET
|Получение файла с ошибками модели. В случае, если производилось тестирование модели, то файл содержит ошибки тестирования. Если не производилось - ошибки после обучения.
|'''id''' - идентификатор модели
|текстовый файл со строками вида:
ИСТИНА<TAB>ОПРЕДЕЛЕНО<TAB>ФРАЗА
|-
|/smc/info/{id}
|GET
|Получение информации о модели.
|'''id''' - идентификатор модели
|В результате выполнения будет возвращен массив с данными о модели. Матрица ошибок отдельно содержат классы, определяющие столбцы и строки матрицы, их количество может быть меньше, т.к. в матрицы попадают только те классы, по которым были ошибки.
 
* '''id''' - идентификатор
* '''status''' - статус
* '''classes''' - список классов в модели
* '''confidenceLevel''' - средний уровень достоверности определения класса, рассчитывается при тестировании
* '''sequenceLength''' - максимальная длина последовательности при обучении
* '''normalization, nerCrossLimit, nerRareLimit, modelSize''' - параметры, использованные при обучении модели
* '''trainCorpusName, testCorpusName''' - названия файлов, использованных при обучении и тестировании
* '''trainAccuracy, testAccuracy''' - точность обучения и тестирования
* '''initCorpusLength''' - начальный размер корпуса обучения
* '''trainCorpusLength''' - размер корпуса после нормализации и синтеза данных
* '''testCorpusLength''' - размер тестового корпуса
* '''trainConfusionMatrix''' - матрица ошибок обучения
* '''testConfusionMatrix''' - матрица ошибок тестирования
|-
|/smc/log/{id}
|GET
|Лог всех действий во время обучения/тестирования модели.
|'''id''' - идентификатор модели
|Лог содержится в переменной log в виде списка.
<code>{</code>
  <code>"log": [
    "training",
    "normalization: 5, model size: 2",
    "training",
    "preparing data",
    "tokenizing",
    "data loaded",
    "training entities",
    "Warmup, corpus length 24965",</code>
 
    <code>...</code>
 
  <code>]</code>
}
|-
|/smc/test/{id}
|POST
|POST
|Отправка файла на распознавание речи. Моно-файлы до 30 секунд распознаются без разбивки на фрагменты. Многоканальные файлы и файлы длиннее 30 секунд предварительно разбиваются на фрагменты по отсутствию речи. Настройка данных параметров описана в [[SPR. Руководство администратора.|руководстве администратора]]. В случае отправки переменной speakers=1, дополнительно производится поиск говорящих и получение метаданных по каждому говорящему.
|Предназначен для тестирования модели заранее подготовленным текстовым файлом со строками вида: КЛАСС<TAB>ФРАЗА
|'''id''' - идентификатор модели
Метод асинхронный. Окончание работы проверяется через метод /smc/info/{id}.
'''wav''' - файл для распознавания '''speakers''' - опция разделения по говорящим
|
|'''text''' заполняется только для файлов менее 60 секунд. '''speakers, speaker, confidence''' (вероятность правильности определения говорящего) возвращаются только при отправке speakers=1.
* '''id''' - идентификатор модели
<code>{</code> <code>model: модель, text: текст без разбивки,</code> <code>speakers: [</code> <code>{ gender: пол,</code> <code>age: возраст,</code> <code>emotion: эмоция, id: идентификатор</code> <code>}, ...</code> <code>],</code> <code>splitted": [</code> <code>{ start: "00:00:02.255",</code> <code>stop: "00:00:10.995",</code> <code>channel: канал в файле,</code> <code>duration: 00:00:08.740,</code> <code>start_ms: 2255,</code> <code>stop_ms: 10995,</code> <code>duration_ms: 8740,</code> <code>speaker: индекс говорящего,</code> <code>confidence: 0.9541002174024272,</code> <code>text: распознанный текст}, ...</code> <code>]</code> <code>}</code>
* '''csv-file''' - файл для тестирования
* '''confidence''' - уровень доверия, от 0 до 1. Порог, ниже которого класс считается неизвестным. при значении 0 происходит автоматический расчет среднего уровня доверия, которые можно потом получить методом /smc/info/{id}
|<code>{ error: INT, message: DESCRIPTION }</code>
|}
|}

Версия от 14:19, 8 июня 2023

Общее описание

Сервис Short  Message Classifier предназначен для классификации текстовых фрагментов (фраз естественной речи). Принимает на вход текстовую строку и возвращает структурированные данные в формате JSON.


Термины и определения

Short  Message Classifier (SMC) - сервис классификации текстовых фрагментов.

Модель — предварительно обученная специализированная нейронная сеть классификации коротких фраз.

Swagger UI – интерактивная  веб-консоль с кратким описанием методов АPI и возможностью выполнять запросы к сервису SMC.


Описание методов API

Запросы осуществляются по протоколу HTTP 1.1 на адрес сервера с доступным сервисом SMC. По умолчанию используется порт 6181/tcp.

Авторизация запросов не требуется. HTTP-запросы должны содержать заголовок "accept: application/json"

Ответ сервиса представляет собой JSON-документ в кодировке UTF-8 или двоичный файл. Содержимое документа зависит от результата выполнения запроса. При наличии ошибки в качестве ответа вернется переменная error=1 и описание в переменной message. Для удобства проверки методов по ссылке http://АДРЕС:6183 будет отображен интерфейс swagger со всеми методами с возможностью их проверки. Модель может содержать постобработчик. Это стандартный файл на языке Python, который выполняет произвольные действия с результатом работы модели. Обязательным условием является наличие функции handler, которая должна возвращать данные такого же вида, как и метод GET /smc/classify/{id}.


Пример пустой функции:

def handler(classes=[],text=""):

  returns classes

На вход подается результат работы модели, а также начальный текст.

Метод Тип Описание Входные параметры Ответ
/smc/ GET Вывод списка моделей - { models: [model1,...,modelN] }
/smc/classify/{id} GET Классификация текстовой фразы id - идентификатор модели

text - текст, подлежащий классификации

multiclass - опция запроса нескольких классов при их наличии, если multiclass=1

Если multiclass=0 ответ будет в виде массива с одним классом, иначе - список массивов. Ниже пример такого списка.

[

{ class: Appointment,

calculated: Appointment,

confidence: 0.9993352,

start: 0,

length: 2

}, {...}

]

start - позиция слова начала фрагмента, определяющего класс

length - количество слов во фрагменте, определяющим класс

confidence - вероятность правильного определения класса

calculated - поле, содержащее измененное постобработчиком (при его наличии) значение класса.

/smc/confusion/{id}/{type} GET Получение изображения матрицы ошибок id - идентификатор модели

type - тип данных для построения матрицы, train или test

Возвращает PNG изображение с матрицей ошибок
/smc/data/{id} GET Получение архива модели id - идентификатор модели ZIP-файл с моделью, либо { error: 1, message: DESCRIPTION }
/smc/data/{id} POST Добавление модели. Окончание работы проверяется через метод /smc/info/{id}. Модель может быть добавлена следующими способами:
  • файл архива модели
  • переименование существующей модели если указана переменная from-existing-model. В данном случае происходит переименование модели на сервере from-existing-model -> id
  • создание новой модели из обучающего корпуса, текстового файла со строками КЛАСС<TAB>ФРАЗА в переменной csv-file
  • id - идентификатор модели
  • zip-model - zip-архив с файлами модели
  • from-existing-model - название модели, которое должно быть переименовано в id
  • csv-file - текстовый файл для обучения модели
  • tokenizer - способ оцифровки фразы. entities или fragments. В первом случае упор делается на взаимосвязи сущностей, во втором на N-граммы
  • normalization - уровень нормализации для устранения количественного перекоса в данных каждого класса, 0 - автоматическое определение, 1-9 - ручной режим. При увеличении значения происходит синтез данных для каждого класса. По умолчанию 1
  • model-size - размер структуры модели. Чем больше данных, теб больше нужна модель. 0 - автоматический режим определения структуры модели. 1-5 - ручной режим. По умолчанию 3.
  • entity-cross-limit - от 0 до 1. Предельный коэффициент возможного наличия сущности в многих классах, выше которого сущность считается мусорной. По умолчанию 1, т.е. допуск всех найденных сущностей.
  • entity-rare-limit - от 0 до 1. Минимальный порог повторяемости сущности в классе, ниже которого сущность считается мусорной. По умолчанию 0, т.е. допуск всех найденных сущностей.
{ error: INT, message: DESCRIPTION }
/smc/data/{id} DELETE Удаление модели id - идентификатор модели { error: INT, message: DESCRIPTION }
/smc/errors/{id} GET Получение файла с ошибками модели. В случае, если производилось тестирование модели, то файл содержит ошибки тестирования. Если не производилось - ошибки после обучения. id - идентификатор модели текстовый файл со строками вида:

ИСТИНА<TAB>ОПРЕДЕЛЕНО<TAB>ФРАЗА

/smc/info/{id} GET Получение информации о модели. id - идентификатор модели В результате выполнения будет возвращен массив с данными о модели. Матрица ошибок отдельно содержат классы, определяющие столбцы и строки матрицы, их количество может быть меньше, т.к. в матрицы попадают только те классы, по которым были ошибки.
  • id - идентификатор
  • status - статус
  • classes - список классов в модели
  • confidenceLevel - средний уровень достоверности определения класса, рассчитывается при тестировании
  • sequenceLength - максимальная длина последовательности при обучении
  • normalization, nerCrossLimit, nerRareLimit, modelSize - параметры, использованные при обучении модели
  • trainCorpusName, testCorpusName - названия файлов, использованных при обучении и тестировании
  • trainAccuracy, testAccuracy - точность обучения и тестирования
  • initCorpusLength - начальный размер корпуса обучения
  • trainCorpusLength - размер корпуса после нормализации и синтеза данных
  • testCorpusLength - размер тестового корпуса
  • trainConfusionMatrix - матрица ошибок обучения
  • testConfusionMatrix - матрица ошибок тестирования
/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/test/{id} POST Предназначен для тестирования модели заранее подготовленным текстовым файлом со строками вида: КЛАСС<TAB>ФРАЗА

Метод асинхронный. Окончание работы проверяется через метод /smc/info/{id}.

  • id - идентификатор модели
  • csv-file - файл для тестирования
  • confidence - уровень доверия, от 0 до 1. Порог, ниже которого класс считается неизвестным. при значении 0 происходит автоматический расчет среднего уровня доверия, которые можно потом получить методом /smc/info/{id}
{ error: INT, message: DESCRIPTION }