В этом разделе подробно описаны все компоненты и структуры данных в структурах ответов, возвращаемых Tisane.
Ответ POST /parse включает разделы, которые могут быть отображены или скрыты в зависимости от предоставленных настроек. (Дополнительную информацию см. в Руководство по конфигурации и настройке.)
Атрибуты корневого уровня:
text(string) — исходный введенный текст.language(string) — обнаруженный код языка, если использовалась идентификация языка.reduced_output(boolean) — указывает, была ли пропущена подробная информация из-за размера входных данных.sentiment(floating-point number) — оценка тональности на уровне документа (от -1 до 1). Отображается только в том случае, если для параметраdocument_sentimentзадано значениеtrue.signal2noise(floating-point number) — показатель релевантности, показывающий, насколько близко текст соответствует концепциям из параметраrelevant. Это значение появляется только в том случае, если существует настройкаrelevant.
Tisane автоматически анализирует текст на предмет потенциального проблемного контента и отмечает их в реакциях.
В разделе abuse перечислены обнаруженные случаи контента, которые могут потребовать внимания модераторов или представлять интерес для правоохранительных органов.
Этот раздел появляется, если:
- Обнаружены случаи проблемного контента;
- Параметр
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_drugtag.severity(string) — насколько серьезен факт злоупотребления. Уровни серьезности:low,medium,highиextreme.explanation(string) — обоснование классификации (если включеноexplain).
Поддерживаемые типы проблемного контента:
personal_attack(личные нападки) - прямые оскорбления или нападки, направленные на отдельного человека. Например: случаи кибербуллинга. Примечание: Критика идей, постов или негативная тональность не является личным оскорблением. См. также: Личные нападкиbigotry(нетерпимость) — разжигание ненависти или выражение нетерпимых мнений; враждебные высказывания, направленные на защищённые группы (религия, национальность, сексуальная ориентация, семейное положение, инвалидность, пол). Сюда входят не только расовые оскорбления, но и любые враждебные высказывания, направленные против группы в целом. См. также: Нетерпимость и разжигание ненавистиprofanity(сквернословие) — использование ненормативной лексики независимо от контекста или намерения. Обратите внимание, что расовые оскорбления не попадают в этот тип. См. также: Ненормативная лексикаsexual_advances(cексуальные домогательства) - попытки, как желательные, так и нежелательные, добиться сексуальных услуг или удовлетворения. См. также: Сексуальные домогательстваcriminal_activity(преступная деятельность) — контент, включающий попытки продать или приобрести незаконные предметы, заняться оказанием или приобретением преступных услуг, или высказывание угроз физической расправы. См. также: Преступная деятельностьexternal_contact- попытки инициировать общение или оплату через внешние каналы. Например: Телефон, электронная почта, приложения для обмена сообщениями. Подобные попытки могут нарушать правила определенных сообществ, например, платформ гиг-экономики или сайтов электронной коммерции. См. также: Попытки установить внешний контактadult_only(только для взрослых) - действия и темы, неприемлемые для несовершеннолетних. Например: Употребление алкоголя. См. также: Контент только для взрослыхmental_issues(проблемы с психикой) — контент, который может указывать на проблемы с психическим здоровьем, такие как мысли о самоубийстве или признаки депрессии. См. также: Проблемы с психическим здоровьемallegation(обвинение) — обвинения в неправомерном преступном поведении, или деятельности, о которой обычно не распространяются. См. также: Обвиненияcontentious(противоречивое) — контент, который может спровоцировать эмоциональную реакцию у отдельных лиц или групп. См. также: Противоречивый контентdisturbing(тревожное) - графические или тревожные описания, которые могут огорчить читателей. См. также: Графический контентno_meaningful_content(нет осмысленного контента) - текст, не имеющий смысла. См. также: Бессмысленный контентdata_leak(утечка данных) - Опубликованные конфиденциальные данные. Например: пароли, идентификационные номера. См. также: Утечки данныхspam(спам) - Спам-контент. См. также: Спамsocial_hierarchy(социальная иерархия) - попытки силового утверждения иерархии в сообществе. См. также: Утверждение иерархииgeneric— проблемный контент, который не вписывается ни в одну определенную категорию.
Раздел sentiment_expressions включает в себя отношение к аспектам или сущностям.
Этот раздел появляется, если:
- Найдены случаи, когда чувства выражаются; и
- Параметр
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).
Пример:
"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 перечислены обнаруженные в тексте объекты.
Этот раздел появляется, если:
- Названные объекты найдены, и:
- Параметр
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).
Пример:
"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_beingorganization— название организации. Примечание: Страна — это и организация, и местоplace— местоtime_range— временной диапазонdate— датаtime— времяhashtag— хэштегemail— адрес электронной почтыamount_of_money- сумма денегphone— номер телефона, как внутренний, так и международный, в различных форматах.role— социальная роль. Например: Должность в организации.software— пакет программного обеспеченияwebsite— адрес вебсайта ; Примечание: веб-службам также может быть назначен типsoftwareitem_of_interest— Любой тип артефакта, представляющий потенциальный интерес для расследования. Например: оружие, наркотики, транспортные средства, предметы роскошиweight— весbank_accountВ настоящее время поддерживается только формат IBAN; подтипы:ibancredit_card— номер кредитной карты с дополнительными подтипами:visa,mastercard,american_express,diners_club,discovery,jcb,unionpaycoordinates— GPS-координатыcredential— учетные данные, с дополнительными подтипами:md5,sha-1crypto— криптовалюта, с дополнительными подтипами:bitcoin,ethereum,monero,monero_payment_id,litecoin,dashevent— значимое событие, в котором принимают участие несколько человек.file— название или путь файла. Поддерживаются только пути Windows; подтипы:windows,facebook(для изображений, загруженных из Facebook)flight_code— код рейсаidentifier— любые буквенно-цифровые идентификаторы (идентификационные номера, коды и т. д.), не классифицированные в другом месте.ip_address— IP-адрес, подтипы:v4,v6mac_address— МАС-адресnumeric— любая числовая сущностьusername— имя пользователя
В разделе topics перечислены обнаруженные в тексте темы. Например: субъекты, домены, темы в других терминах.
Этот раздел появляется, если:
- Темы найдены, и;
- Параметр
topicsустановлен наtrue(или пропущен).
Если настройка topic_stats установлена на true, каждая запись в массиве содержит:
topic(string) - Название темы.coverage(floating-point number) — показатель релевантности, представляющий собой отношение предложений, в которых обнаружена тема, к общему количеству предложений.
Раздел memory предоставляет необязательный контекст, который можно передать в settings в последующих сообщениях в той же ветке беседы.
Более подробную информацию см. в разделе Контекст и долговременная память.
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) — указывает, является ли слово stopwordgrammar(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) — код поведения, определяющий функцию знака препинания. Значения:sentenceTerminatorgenericCommabracketStartbracketEndscopeDelimiterhyphenquoteStartquoteEndlistComma(для восточноазиатских запятых перечисления, таких как、)
Знаки препинания не имеют 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) (иерархическая структура с дочерними фразами).
Пример:
"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. Это ограничивает проверку орфографии словами, написанными строчными буквами, исключая термины, написанные заглавными и прописными буквами.