Введение

Запросы можно составлять либо с помощью "Query Builder", либо вручную на языке AQL и/или языке регулярных выражений.

Query Builder

Чтобы открыть графический конструктор запросов, нажмите кнопку "Query Builder". Рекомендуется использовать инструмент "Word sequences and meta information". В нём доступны четыре основных раздела: Linguistic Sequence, Scope, Meta information и Toolbar. Выберите нужные Вам корпуса и нажмите на "Initialize" - так вы загрузите все доступные теги корпусов и их значения.

Linguistic sequence

Здесь можно задавать последовательности токенов с определёнными свойствами. При нажатии кнопки "Add" появляется выпадающее окно со всеми тегами в корпусе. Лучше всего выбрать любой лингвистический тег (lemma, msd, norm, pos, tok). Также можно использовать теги "num", "num_value" и "name".

Введите нужное Вам значение (при вводе в качестве подсказки отобразятся возможные варианты). При нажатии на "+" во внутреннем окне, Вы можете написать альтернативное значение тега, которое Вы желаете найти (равносильно оператору ИЛИ). При нажатии на "+" во внешнем окне, Вы можете добавить другой аттрибут токена. Например, при поиске по части речи, Вы можете уточнить запрос с помощью тега морфологической информации msd. Убедитесь, что у каждой части речи правильная запись кода msd (см. Морфологическая разметка). Поле "Regex" означает, что значение тега будет записано на языке регулярных выражений. Поле "Neg. search" делает запрос отрицательным (оператор НЕ). Например, так выглядит запрос "существительное + любая часть речи кроме глагола или прилагательного":

Scope

Здесь можно задать область поиска с помощью структурных тегов. Список структурных тегов можно найти в Формате разметки. Так, например будет выглядеть запрос "словосочетание существительное + прилагательное в цитатах":

Meta information

С помощью мета-тегов можно выбрать конкретные тексты по Id ("id"), названию ("title"), и/или веку ("century"). Теги "morphology" и "text_structure" принимают значение True или False, что означает наличие или отсутствие морфологической и структурной разметки соответственно.

Toolbar

При нажатии на "Create AQL Query", запрос появляется в верхнем-правом окне. Кнопка "Clear the Query Builder" удаляет запрос в поисковом окне.

Составление запросов вручную

ANNIS использует собственный язык запросов ANNIS Query Language (AQL). AQL основан на поиске атрибутов тегов и отношений между ними.

Поиск формулируется через задание элементов. Элемент может быть токеном (текст в кавычках: "житїе" или tok="житїе") либо парой атрибут–значение (например, pos="сущ").

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

Чтобы искать словоформы в ANNIS, достаточно выбрать корпус и ввести строку поиска в двойных кавычках, например:

"мл҃тва"

Если необходимо учитывать другую флексию, можно либо задать альтернативы с помощью оператора ИЛИ ( | ):

"мл҃тва" | "мл҃тву"

либо использовать регулярные выражения, которые записываются в косых скобках:

/мл҃тв[ау]/

Чтобы искать прямую последовательность из нескольких словоформ, укажите элементы через символ & и задайте отношение следования с помощью оператора точки (.):

"прпⷣбнаго" & "ѿ҃ца" & #1 . #2

Выражение #1 . #2 означает, что первый элемент предшествует второму. Также можно использовать сокращённую запись:

"прпⷣбнаго" . "ѿ҃ца"

Для непрямого следования (между элементами могут находиться другие токены) используется оператор .*:

"ѿ҃ца" .* "александра"

Можно также задать диапазон расстояния:

"ѿ҃ца" .1,5 "александра"

Это означает, что слова могут находиться на расстоянии от 1 до 5 токенов. Оператор .* по умолчанию допускает расстояние до 50 токенов, поэтому запись .1,50 эквивалентна .* . Большие расстояния (например, .1,100) следует указывать явно.

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

"подвизи" @* century="16"

Поиск по аттрибутам

Аттрибуты можно искать по их имени и значению. Основные теги корпуса: lemma, msd, pos, norm, name, num и num_value Поиск по аннотациям доступен в корпусе SCAT_annotated.

Например, чтобы найти все формы слова "разлучение", выберите корпус SCAT_annotated и введите:

lemma="разлучение"

Также возможен отрицательный поиск с использованием "!=" вместо "=". Для отрицательного поиска по токенам (словоформам) используйте специальный аттрибут "tok"

lemma!="разлучение"

tok!="разлучение"

Метаданные также можно отрицать:

lemma!="разлучение" @* id!="CrlNvz"

Чтобы найти существительное с определёнными морфологическими характеристиками, используйте одновременно аттрибуты "pos" и "msd" и укажите, что они относятся к одному элементу. Это можно сделать с помощью оператора "_=_":

pos="сущ" & msd="i;род;ед;ж" & #1 _=_ #2

или в сокращённой форме:

pos="сущ" _=_ msd="i;род;ед;ж"

Аттрибуты могут относиться не только к одному токену, но и к более длинным отрезкам. Например, тег "q" (цитата) охватывает диапазон токенов. Следующий запрос находит такие фрагменты:

q

Дополнительные операторы позволяют проверять отношения между аттрибутами. Например, оператор "_i_" (includes) проверяет, включает ли один аттрибут другой. Таким образом, можно найти имена собственные внутри цитат:

q _i_ name

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

Поиск с использованием регулярных выражений

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

Например, точка (.) заменяет любой один символ:

tok=/мл҃тв./

Этот запрос найдёт формы "мл҃тва", "мл҃твы", "мл҃твѣ" и т.д.

Можно также делать символы необязательными с помощью знака вопроса (?):

tok=/молитис?ѧ?/

Этот запрос найдёт формы «молити» и «молитисѧ».

Также можно задавать количество повторений: символ "*" означает 0 или более вхождений, а "+" — одно или более.

Эти символы особенно полезны при поиске по морфологическим характеристикам слова. В теге msd записана грамматические сведения о слове. Эта информация записана в виде кода, который состоит из комбинации элементов, которые описаны в разделе Морфологическая разметка. Для обращения к конкретным элементам кода используется язык регулярных выражений.

Например, у словоформы "чл҃колюбїемъ" такой тег msd:

msd=/jo;тв;ед;ср/

Расшифровка тега: основа на -jo, творительный падеж, единственное число, средний род.

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

msd=/.+;тв;ед;ср/ _=_ pos="сущ"

В позиции типа основы у нас записано выражение ".+", что означает последовательность произвольных символов длиной больше единицы, т.е. любой тип основы.

Давайте поменяем единственное число на двойственное ИЛИ множественное. В скобках записываются значения через оператор ИЛИ ("|"):

msd=/.+;тв;(дв|мн);ср/ _=_ pos="сущ"

Более детальное руководство по использованию языка регулярных выражений можно найти здесь.