Skip to content
Morfeusys edited this page Nov 7, 2014 · 7 revisions

Сущностями называются данные определенного типа, которые можно выделить в текстовом запросе.

Формат сущностей

Каждая сущность - это JSON объект со следующими полями:

  • type - тип сущности (например, Number, Date, Time, City или Text)
  • substring - подстрока в исходной строке, соответствующая сущности
  • value - данные, выделенные из сущности (формат специфичен для каждого конкретного типа)
  • formatted - опционально - форматированное представление данных (например, "01.10.2014" для даты)

Стандартные типы сущностей

На данный момент Speech Markup поддерживает несколько типов сущностей, но этот список будет постоянно пополняться. Также вскоре будет предоставлена возможность создавать свои собственные типы и логику их преобразования в данные.

Text

Самый простой тип - обычная строка. Если система не обнаруживает никакого другого типа, то подстрока помечается как тип Text. Значение поля value в этом случае совпадает с самой подстрокой.

Date

Дата (абсолютная или относительная, дни недели). Поле formatted будет содержать дату, сформатированную по шаблону "dd.MM.yyyy". Поле value - это объект со следующими полями:

  • day - день (1-31)
  • month - месяц (0-11)
  • year - год

Для корректного преобразования дат необходимо наличие параметров timestamp и offset в REST запросе.

Time

Время (абсолютное и относительное). Поле formatted будет содержать время, сформатированное по шаблону "HH:mm:ss". Поле value - это объект со следующими полями:

  • hour - часы (0-23)
  • minute - минуты (0-59)
  • second - секунды (0-59)
  • part - опционально - AM или PM, если задано явно в тексте или можно вычислить (например, если текст "в 5 часов", то поле не будет присутствовать, т.к. невозможно однозначно определить, в 5 утра или в 5 вечера)

Для корректного преобразования времени необходимо наличие параметров timestamp и offset в REST запросе.

Number

Числа (могут быть указаны и в виде цифр, и словами). В поле value будет цифровое представление.

City

Название города (используется база Geonames). Т.к. названия городов не уникальны, то поле value содержит массив объектов, в каждом из которых следующие поля:

  • name - стандартное название города (город "Питер" будет преобразован в "Санкт-Петербург")
  • lat - широта
  • lon - долгота
  • population - численность населения
  • countryCode - код страны (например, "RU")
  • timezone - часовой пояс (например, "Asia/Novosibirsk")
  • id - уникальный идентификатор города в базе Geonames

Person

ФИО человека. Будет приведено к стандартному виду в поле formatted. В запросе может присутствовать либо полное имя, либо только имя с фамилией, либо только имя, или фамилия, или отчество. В поле value будет объект со следующими полями:

  • firstName - имя
  • surName - фамилия
  • patrName - отчество