# Ответ

В этом разделе подробно описаны все компоненты и структуры данных в структурах ответов, возвращаемых Tisane.

Ответ `POST /parse` включает разделы, которые могут быть отображены или скрыты в зависимости от предоставленных настроек. (Дополнительную информацию см. в [Руководство по конфигурации и настройке](/apis/tisane-api-configuration).)

Атрибуты корневого уровня:

- `text` (string) — исходный введенный текст.
- `language` (string) — обнаруженный код языка, если использовалась идентификация языка.
- `reduced_output` (boolean) — указывает, была ли пропущена подробная информация из-за размера входных данных.
- `sentiment` (floating-point number) — оценка тональности на уровне документа (от -1 до 1). Отображается только в том случае, если для параметра `document_sentiment` задано значение `true`.
- `signal2noise` (floating-point number) — показатель релевантности, показывающий, насколько близко текст соответствует концепциям из параметра `relevant`. Это значение появляется только в том случае, если существует настройка `relevant`.


## Проблемный контент

Tisane автоматически анализирует текст на предмет потенциального проблемного контента и отмечает их в реакциях.

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

Этот раздел появляется, если:

1. Обнаружены случаи проблемного контента;
2. Параметр `abuse` установлен на `true` (или пропущен).


Сценарии использования могут различаться. Интеграторы и администраторы сообществ несут ответственность за то, следует ли реагировать на различные типы помеченного контента и как именно это делать.

Например: Возможно, нецелесообразно ограничивать сексуальные домогательства в приложении для знакомств или цензурировать ненормативную лексику в сообществах, где это общепринято, или ограничивать внешние контакты, если они разрешены.

Если вы *не* хотите, чтобы в вашем ответе отображался проблемный контент, вам необходимо явно установить для параметра `abuse` значение `false`.

### Атрибуты контента

Каждый экземпляр содержит следующие атрибуты:

- `type` (string) - Тип нарушения
- `offset` (unsigned integer) — начальная позиция экземпляра. Отсчет ведется от нуля.
- `length` (unsigned integer) — длина содержимого.
- `sentence_index` (unsigned integer) — индекс предложения, содержащего экземпляр. Отсчет ведется от нуля.
- `text` (string) — фрагмент текста, содержащий экземпляр. Появляется только в том случае, если для параметра `snippets` задано значение `true`.
- `tags` (array of strings) — дополнительные сведения о злоупотреблениях. Например: если фрагмент классифицируется как попытка продажи тяжелых наркотиков, экземпляр содержит тег `hard_drug`tag.
- `severity` (string) — насколько серьезен факт злоупотребления. Уровни серьезности: `low`, `medium`, `high` и `extreme`.
- `explanation` (string) — обоснование классификации (если включено `explain`).


### Поддерживаемые типы

Поддерживаемые типы проблемного контента:

- `personal_attack` (личные нападки) - прямые оскорбления или нападки, направленные на отдельного человека. Например: случаи кибербуллинга. Примечание: Критика идей, постов или негативная тональность не является личным оскорблением. См. также: [Личные нападки](/guides/abuse/personalattack)
- `bigotry` (нетерпимость) — разжигание ненависти или выражение нетерпимых мнений; враждебные высказывания, направленные на защищённые группы (религия, национальность, сексуальная ориентация, семейное положение, инвалидность, пол). Сюда входят не только расовые оскорбления, но и любые враждебные высказывания, направленные против группы в целом. См. также: [Нетерпимость и разжигание ненависти](/guides/abuse/hatespeechandbigotry)
- `profanity` (сквернословие) — использование ненормативной лексики независимо от контекста или намерения. Обратите внимание, что расовые оскорбления не попадают в этот тип. См. также: [Ненормативная лексика](/guides/abuse/profanity)
- `sexual_advances` (cексуальные домогательства) - попытки, как желательные, так и нежелательные, добиться сексуальных услуг или удовлетворения. См. также: [Сексуальные домогательства](/guides/abuse/sexualadvances)
- `criminal_activity` (преступная деятельность) — контент, включающий попытки продать или приобрести незаконные предметы, заняться оказанием или приобретением преступных услуг, или высказывание угроз физической расправы. См. также: [Преступная деятельность](/guides/abuse/criminalactivity)
- `external_contact` - попытки инициировать общение или оплату через внешние каналы. Например: Телефон, электронная почта, приложения для обмена сообщениями. Подобные попытки могут нарушать правила определенных сообществ, например, платформ гиг-экономики или сайтов электронной коммерции. См. также: [Попытки установить внешний контакт](/guides/abuse/externalcontact)
- `adult_only` (только для взрослых) - действия и темы, неприемлемые для несовершеннолетних. Например: Употребление алкоголя. См. также: [Контент только для взрослых](/guides/abuse/adultonly)
- `mental_issues` (проблемы с психикой) — контент, который может указывать на проблемы с психическим здоровьем, такие как мысли о самоубийстве или признаки депрессии. См. также: [Проблемы с психическим здоровьем](/guides/abuse/mental)
- `allegation` (обвинение) — обвинения в неправомерном преступном поведении, или деятельности, о которой обычно не распространяются. См. также: [Обвинения](/guides/abuse/allegation)
- `contentious` (противоречивое) — контент, который может спровоцировать эмоциональную реакцию у отдельных лиц или групп. См. также: [Противоречивый контент](/guides/abuse/contentious)
- `disturbing` (тревожное) - графические или тревожные описания, которые могут огорчить читателей. См. также: [Графический контент](/guides/abuse/disturbing)
- `no_meaningful_content` (нет осмысленного контента) - текст, не имеющий смысла. См. также: [Бессмысленный контент](/guides/abuse/nomeaningfulcontent)
- `data_leak` (утечка данных) - Опубликованные конфиденциальные данные. Например: пароли, идентификационные номера. См. также: [Утечки данных](/guides/abuse/dataleak)
- `spam` (спам) - Спам-контент. См. также: [Спам](/guides/abuse/spam)
- `social_hierarchy` (социальная иерархия) - попытки силового утверждения иерархии в сообществе. См. также: [Утверждение иерархии](/guides/abuse/socialhierarchy)
- `generic` — проблемный контент, который не вписывается ни в одну определенную категорию.


## Анализ тональности

Раздел `sentiment_expressions` включает в себя отношение к аспектам или сущностям.

Этот раздел появляется, если:

1. Найдены случаи, когда чувства выражаются; и
2. Параметр `sentiment` установлен на `true` (или опущен).


Каждый экземпляр содержит следующие атрибуты:

- `offset` (unsigned integer) — начальная позиция экземпляра. Отсчет ведется от нуля.
- `length` (unsigned integer) — длина содержимого.
- `sentence_index` (unsigned integer) — индекс предложения, содержащего экземпляр. Отсчет ведется от нуля.
- `text` (string) — фрагмент текста, содержащий экземпляр (если параметр `snippets` имеет значение `true`).
- `polarity` (string) — указывает на тон текста: `positive`, `negative` или `mixed`. Также существует значение по умолчанию, используемое в случае, когда тональность заранее определена приложением. Например: если обзор разделен на две части: *Что вам понравилось?* и *Что вам не понравилось?*, которые не посылаются Tisane-у, а рецензент отвечает кратко: *Тишина. Служба*, полярность *по умолчанию* позволяет приложению назначать настроение извне на основе контекста.
- `targets` (array of strings) — перечисляет конкретные аспекты или сущности, к которым относится мнение, если таковые имеются. Например, в предложении *Завтрак был вкусным, но персонал недружелюбный* целевыми настроениями являются `food` и `staff`. Именованные сущности также могут быть целями настроений.
- `reasons` (array of strings) — обоснования мнения, если таковые имеются. Например, в предложении *Завтрак был вкусным, но персонал недружелюбный* массив `reasons` для аспекта `персонал` — это `["unfriendly"]`, а массив `reasons` для `завтрак` — это `["tasty"]`.
- `explanation` (string) — обоснование мнения (если включена установка `explain`).


Пример:


```json
"sentiment_expressions": [
   {
       "sentence_index": 0,
        "offset": 0,
        "length": 32,
        "polarity": "positive",
        "reasons": ["close"],
        "targets": ["location"]
    },
    {
       "sentence_index": 0,
        "offset": 38,
        "length": 29,
        "polarity": "negative",
        "reasons": ["disrespectful"],
        "targets": ["staff"]
    }
]
```

## Именованные объекты

В разделе `entities_summary` перечислены обнаруженные в тексте объекты.

Этот раздел появляется, если:

1. Названные объекты найдены, и:
2. Параметр `entities` установлен на `true` (или пропущен).


Каждый объект содержит следующие атрибуты:

- `name` (string) — Наиболее полная форма названия объекта, встречающаяся в тексте во всех упоминаниях.
- `ref_lemma` (string) — словарная форма (лемма) объекта на английском языке, если она доступна, независимо от языка ввода.
- `type` (string or array of strings) — определяет тип объекта. Некоторые объекты могут иметь несколько типов. Страна (или любое другое геополитическое образование, объявляющее себя страной, даже если оно не общепризнано в качестве такового) считается одновременно местом и организацией.
- `subtype` (string) — указывает более подробную классификацию в пределах типа объекта.
- `mentions` (array of objects) — выводит список всех случаев, когда объект появляется в тексте.


Каждое упоминание содержит следующие атрибуты:

- `offset` (unsigned integer) — начальная позиция экземпляра. Отсчет ведется от нуля.
- `length` (unsigned integer) — длина содержимого.
- `sentence_index` (unsigned integer) — индекс предложения, содержащего экземпляр. Отсчет ведется от нуля.
- `text` (string) — фрагмент текста, содержащий экземпляр (если параметр `snippets` имеет значение `true`).


Пример:


```json
"entities_summary": [
       {
           "type": "person",
            "name": "John Smith",
            "ref_lemma": "John Smith",
            "mentions": [
               {
                   "sentence_index": 0,
                    "offset": 0,
                    "length": 10 }
            ]
        }
   ,
        {
           "type": [ "organization", "place" ]
       ,
            "name": "UK",
            "ref_lemma": "U.K.",
            "mentions": [
               {
                   "sentence_index": 0,
                    "offset": 40,
                    "length": 2 }
            ]
        }
    ]
```

### Типы и подтипы именованных объектов

В настоящее время поддерживаются следующие типы объектов:

- `person` — имя человека. С дополнительными подтипами: `fictional_character`, `important_person`, `spiritual_being`
- `organization` — название организации. Примечание: Страна — это и организация, и место
- `place` — место
- `time_range` — временной диапазон
- `date` — дата
- `time` — время
- `hashtag` — хэштег
- `email` — адрес электронной почты
- `amount_of_money` - сумма денег
- `phone` — номер телефона, как внутренний, так и международный, в различных форматах.
- `role` — социальная роль. Например: Должность в организации.
- `software` — пакет программного обеспечения
- `website` — адрес вебсайта ; Примечание: веб-службам также может быть назначен тип `software`
- `item_of_interest` — Любой тип артефакта, представляющий потенциальный интерес для расследования. Например: оружие, наркотики, транспортные средства, предметы роскоши
- `weight` — вес
- `bank_account` В настоящее время поддерживается только формат IBAN; подтипы: `iban`
- `credit_card` — номер кредитной карты с дополнительными подтипами: `visa`, `mastercard`, `american_express`, `diners_club`, `discovery`, `jcb`, `unionpay`
- `coordinates` — GPS-координаты
- `credential` — учетные данные, с дополнительными подтипами: `md5`, `sha-1`
- `crypto` — криптовалюта, с дополнительными подтипами: `bitcoin`, `ethereum`, `monero`, `monero_payment_id`, `litecoin`, `dash`
- `event` — значимое событие, в котором принимают участие несколько человек.
- `file` — название или путь файла. Поддерживаются только пути Windows; подтипы: `windows`, `facebook` (для изображений, загруженных из Facebook)
- `flight_code` — код рейса
- `identifier` — любые буквенно-цифровые идентификаторы (идентификационные номера, коды и т. д.), не классифицированные в другом месте.
- `ip_address` — IP-адрес, подтипы: `v4`, `v6`
- `mac_address` — МАС-адрес
- `numeric` — любая числовая сущность
- `username` — имя пользователя


## Темы

В разделе `topics` перечислены обнаруженные в тексте темы. Например: субъекты, домены, темы в других терминах.

Этот раздел появляется, если:

1. Темы найдены, и;
2. Параметр `topics` установлен на `true` (или пропущен).


Если настройка `topic_stats` установлена на `true`, каждая запись в массиве содержит:

- `topic` (string) - Название темы.
- `coverage` (floating-point number) — показатель релевантности, представляющий собой отношение предложений, в которых обнаружена тема, к общему количеству предложений.


## Долговременная память

Раздел `memory` предоставляет необязательный контекст, который можно передать в `settings` в последующих сообщениях в той же ветке беседы.

Более подробную информацию см. в разделе [Контекст и долговременная память](/apis/tisane-api-configuration#context-and-long-term-memory).

## Данные низкого уровня: Предложения, фразы и слова

Tisane также может предоставить более подробные лингвистические данные:

- Предложения: Оригинальные предложения, а также их исправленные версии, если обнаружены какие-либо ошибки.
- Лексические фрагменты: Группы слов (фрагменты), снабженные грамматическими и стилистическими примечаниями.
- Деревья синтаксического анализа и фразы: Иерархические представления структуры предложения, выделение фраз и их взаимосвязей.


### Предложения

Раздел `sentence_list` генерируется, если:

* Параметр `words` или `parses` установлен на `true`.


Каждая структура предложения в списке содержит:

- `offset` (unsigned integer) — начальная позиция экземпляра. Отсчет ведется от нуля.
- `length` (unsigned integer) — длина содержимого.
- `text` (string) — исходный введенный текст.
- `corrected_text` (string) — автоматически исправленная версия предложения, если обнаружена опечатка или запутывание/алгоритмическая ошибка и включена проверка орфографии.
- `words` (array of structures) — предоставляет подробную информацию о каждом лексическом фрагменте, если параметр `words` установлен в значение `true`. Примечание: Хотя термин «слово» используется для простоты, с лингвистической точки зрения может быть некорректно отождествлять лексические блоки с отдельными словами.
- `parse_tree` (object) — содержит дерево анализа и обнаруженные фразы для предложения, когда параметр `parses` установлен в значение `true`.
- `nbest_parses` (array of parse objects) — выводит список альтернативных деревьев анализа, которые близки к лучшему. Генерируется, когда оба параметра `parses` имеют значение `true`, а параметр `deterministic` явно установлен в значение `false`.


### Слова

Раздел слов генерируется, если:

* Параметр `words` установлен на `true`.


Каждая лексическая часть (для простоты называемая «словом») в массиве `words` содержит:

- `type` (string) — определяет категорию элемента. Например: `punctuation` для знаков препинания, `numeral` для цифр или `word` для всех остальных текстовых элементов.
- `text` (string) — исходный введенный текст.
- `offset` (unsigned integer) — начальная позиция экземпляра. Отсчет ведется от нуля.
- `length` (unsigned integer) — длина содержимого.
- `text` (string) — автоматически исправленная версия предложения, если обнаружена ошибка.
- `lettercase` (string) — указывает исходный регистр букв слова: `upper`, `capital` или `mixed`. Примечание: Если текст полностью состоит из строчных букв или нечувствителен к регистру, этот атрибут опускается.
- `stopword` (boolean) — указывает, является ли слово stopword
- `grammar` (array of strings or structures) — перечисляет грамматические особенности, связанные с `word`. Если параметр `feature_standard` определен как `native`, каждый параметр представляет собой объект, содержащий `index`(a numeral) и `value`(string). В противном случае каждый признак представляется в виде простой строки.


#### Дополнительно

Только для лексических слов:

- `role` (string) - Семантическая роль слова. Например: `agent` или `patient`. Примечание: В пассивном залоге семантические роли меняются местами относительно синтаксических. Например: В *The car was driven by David*, *car* — пациент, а *David* — агент.
- `numeric_value` (floating-point number) — числовое значение, если слово представляет его или связано с ним.
- `family` (integer number) — идентификатор связанной семьи с разрешенным значением слова лексического фрагмента.
- `definition` (string) - определение семейства.
  - Включается, если параметр `fetch_definitions` установлен в значение `true`.
- `lexeme` (integer number) — идентификатор записи лексемы, связанной с разрешенным значением слова.
- `nondictionary_pattern` (integer number) — идентификатор несловарного шаблона, который соответствовал слову, если оно не было найдено в языковой модели, но классифицировано с использованием несловарной эвристики.
- `style` (array of strings or structures) — создает список стилевых особенностей, связанных со `word`.
  - Включено, если для параметра `feature_standard` задано значение `native` или `description`.
- `semantics` (array of strings or structures) — создает список семантических признаков, связанных со `word`.
  - Включено, если для параметра `feature_standard` задано значение `native` или `description`.
- `segmentation` (structure) — предоставляет информацию о выбранной сегментации. Сегментация — это массив структур слов.
  - Включается, если возможны множественные сегментации, а параметр `deterministic` установлен на `false`.
- `other_segmentations` (array of structures) — перечисляет альтернативные сегментации, которые считаются неверными в процессе устранения неоднозначности. Каждая запись имеет ту же структуру, что и `segmentation`.
- `nbest_senses` (array of structures) — предоставляет альтернативные гипотезы разрешения неоднозначности.
  - Включается, если параметр `deterministic` равен `true`.
  - Каждая гипотеза включает в себя:
    - `grammar`, `style` и `semantics`. Они структурированы идентично соответствующим атрибутам выше.
    - `senses`. Перечисляет значения слов для гипотезы, каждое из которых содержит:
      - `family`: Соответствующий семейный идентификатор.
      - `definition`: Определение семейства, если `fetch_definitions` включено.
      - `ref_lemma`: Справочная лемма, если таковая имеется.


Только для знаков препинания:

- `id` (integer number) — идентификатор знака препинания.
- `behavior` (string) — код поведения, определяющий функцию знака препинания. Значения:
  - `sentenceTerminator`
  - `genericComma`
  - `bracketStart`
  - `bracketEnd`
  - `scopeDelimiter`
  - `hyphen`
  - `quoteStart`
  - `quoteEnd`
  - `listComma` (для восточноазиатских запятых перечисления, таких как `、`)


Знаки препинания не имеют n-лучших значений.

### Разбор грамматических деревьев и фраз

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

Раздел дерева синтаксического анализа генерируется, если:

* Параметр `parses` установлен на `true`.


На верхнем уровне синтаксического анализа находится массив корневых фраз, содержащихся в элементе `phrases`, каждая из которых связана с числовым `id`.

Каждая фраза может иметь дочерние фразы, образуя вложенную структуру.

Каждая фраза включает в себя следующие атрибуты:

- `type` (string) — стандартный тег фразы, обозначающий тип фразы. Например: `S`, `VP`, `NP`, `ADJP`, `ADVP`.
- `family` (integer number) — идентификатор семейства фраз.
- `offset` (unsigned integer) — начальная позиция экземпляра. Отсчет ведется от нуля.
- `length` (unsigned integer) — длина фразы.
- `role` (string) — семантическая роль фразы, если применимо, аналогичная семантическим ролям, назначаемым отдельным словам.
- `text` (string) — текстовое представление фразы: Члены фразы разделяются символом вертикальной черты (|). Дочерние фразы заключены в скобки (). Например:
  - *driven|by|David* 9 (плоская фраза, состоящая из трех частей)
  - *(The|car)|was|(driven|by|David)* (иерархическая структура с дочерними фразами).


Пример:


```json
"parse_tree": {
"id": 4,
"phrases": [
{
       "type": "S",
       "family": 1451,
       "offset": 0,
       "length": 27,
       "text": "(The|car)|was|(driven|by|David)",
       "children": [
               {
                       "type": "NP",
                       "family": 1081,
                       "offset": 0,
                       "length": 7,
                       "text": "The|car",
                       "role": "patient"
               },
               {
                       "type": "VP",
                       "family": 1172,
                       "offset": 12,
                       "length": 15,
                       "text": "driven|by|David",
                       "role": "verb"
               }
       ]
}
```

### Исправление орфографии с учетом контекста

Tisane поддерживает контекстно-зависимую коррекцию орфографии. Он выявляет и исправляет опечатки или преднамеренные искажения, выводя предполагаемое значение, особенно когда языковая модель не распознает слово.

При внесении исправления Tisane добавляет атрибут `corrected_text`:

- На уровне слов: Если возвращаются отдельные слова или лексические фрагменты.
- На уровне предложения: Если текст предложения сгенерирован.


Атрибут `corrected_text` на уровне предложения появляется, когда настройки `words` или `parses` установлены на `true`.

#### Исключить редкие термины

Tisane работает с большими словарями. Вы можете исключить эзотерические термины, изменив настройку `min_generic_frequency`.

#### Вызов проверки орфографии

Примечание: Проверка орфографии выполняется независимо от того, включены ли в вывод предложения или части слов.

Вы можете контролировать это поведение с помощью следующих настроек:

- Установите для параметра `disable_spellcheck` значение `true`, чтобы полностью отключить проверку орфографии.
- Чтобы избежать исправления имен собственных (в языках с заглавными буквами), установите для параметра `lowercase_spellcheck_только` значение `true`. Это ограничивает проверку орфографии словами, написанными строчными буквами, исключая термины, написанные заглавными и прописными буквами.