Skip to content

Морфологический анализатор MyStem в докере

License

Notifications You must be signed in to change notification settings

azzzak/mystem-docker

Repository files navigation

mystem-docker Go Report Card

Программа MyStem — морфологический анализатор русского текста от Яндекса. Задача mystem-docker: упаковать MyStem в Docker-контейнер и работать с программой по http-протоколу.

Перед использованием необходимо прочитать и принять лицензионное соглашение MyStem.

Настройки

Параметр Тип Значение по умолчанию Комментарий
USER_DICT string - Подключить пользовательский словарь
GLUE_GRAMMEMES bool false Объединить словоформы при одной лемме
HOMONYMS_DETECTION bool false Применить контекстное снятие омонимии
TIMEOUT int 1000 Ограничить время обработки каждого запроса (в миллисекундах)

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

Примеры запуска

Установить таймаут на 800 миллисекунд:

docker run -p 2345:8080 -e TIMEOUT=800 azzzak/mystem

Подключить словарь:

docker run -v ~/dict:/stem/dict -p 2345:8080 -e USER_DICT=dict.txt azzzak/mystem

Пример запуска в проде:

docker run -d --restart always -v ~/dict:/stem/dict -p 127.0.0.1:2345:8080 -e USER_DICT=dict.txt -e HOMONYMS_DETECTION=true -e GLUE_GRAMMEMES=true -e TIMEOUT=800 --name mystem azzzak/mystem

Проверка

curl -i -d "text=съешь еще этих мягких французских булок" -X POST http://localhost:2345/mystem

Использование

Для получения морфологического анализа надо отправить POST запрос с полем text=[текст для анализа] на /mystem. Ответ приходит в формате json. Об ошибке сигнализирует ответ со статус-кодом, отличным от 200.

JSON Schema ответа

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "MyStem JSON Schema",
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "analysis": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "lex": {
              "description": "лемма",
              "type": "string"
            },
            "wt": {
              "description": "бесконтекстная вероятность леммы",
              "type": "number",
              "minimum": 0,
              "maximum": 1
            },
            "qual": {
              "description": "особые отметки",
              "type": "string"
            },
            "gr": {
              "description": "граммемы",
              "type": "string"
            }
          },
          "required": [
            "lex", "wt", "gr"
          ]
        },
        "text": {
          "description": "исходная словоформа",
          "type": "string"
        }
      }
    },
    "required": [
      "analysis", "text"
    ]
  }
}

Расшифровка обозначений граммем.

Пользовательский словарь

В случае некорректной работы с неологизмами словарь можно дополнить. Формат пользовательского словаря описан в документации MyStem.

После изменения словаря нужно перезапустить контейнер.

About

Морфологический анализатор MyStem в докере

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published