Технологии

Программное обеспечение для проекта ВАНК разрабатывается и поддерживается компанией Corpus Technologies. Оно создавалось с учетом перспективы масштабирования корпуса, а в конечном итоге – с целью создания языково-независимой программной платформы для корпусных исследований.

Система спроектирована таким образом, чтобы сделать возможным индексирование корпусов разноструктурных языков; проиндексированный системой корпус обеспечивает эффективную обработку запросов разной степени сложности. Единственным, но необходимым требованием является следование разработанному Corpus Technologies стандарту разметки текстов. Только парсер ВАНК и пользовательский интерфейс жестко ориентированы на армянскую грамматику, все остальные структурные элементы системы могут работать практически с любым морфологическим типом языка и алфавитом и разметками разной степени детальности и глубины.

Пользовательский интерфейс ВАНК работает под системами Windows, Mac OS и Linux и поддерживает все основные интернет-браузеры. Используемая система, однако, должна поддерживать Unicode, в противном случае армянские буквы могут отображаться некорректно. Если при работе с корпусом вы столкнулись с проблемой или ошибкой, пожалуйста, отправьте нам сообщение об ошибке (ссылка в правом нижнем углу главного окна под формой поиска) или свяжитесь с нами по электронной почте.

Один из важных приоритетов проекта – сделать поисковую функциональность ВАНК как можно более прозрачной для пользователя. Для работы с корпусом не требуется ни регистрации, ни установки каких бы то ни было дополнительных приложений.

Программное обеспечение ВАНК состоит из четырех структурных элементов:
На первом этапе работы коллекция электронных текстов обрабатывается при помощи Парсера ВАНК (реализован на PERL). В результате работы парсера к текстам добавляется разметка (XML или tab-delimited), содержащая метатекстовые и лексико-морфологические пометы. После этого размеченные файлы обрабатываются индексатором, преобразующим их в базу данных корпуса. Сервер осуществляет поиск и сортировку элементов этой базы данных. Наконец, программа-клиент и пользовательский интерфейс обеспечивают интернет-доступ к базе данных ВАНК и ее поисковой функциональности.

Индексатор
Индексатор (реализован на PHP и MySQL) формирует базу данных адресов каждого словоупотребления и элемента разметки в XML-файлах, получаемых на выходе из парсера ВАНК. База данных является совокупностью хеш-таблиц (hashtables), устанавливающих связи между каждой уникальной лексемой, словоформой и набором лексикограмматических признаков, встречающимися в корпусе, и их адресом в структурах хранения данных (datafiles). Индексированные данные хранятся в нереляционной БД, состоящей из массивов двоичных адресов. В тех же массивах хранятся и ключи сортировки для каждого элемента, по которому может осуществляться поиск. Выдаваемые пользователю контексты могут сортироваться по некоторым ключевым характеристикам контекстов (например, по алфавитному порядку слов-вхождений, времени создания текста, жанру и т.п.).

Сервер
Сервер (написан на С++) реализует базовые алгоритмы поиска по базе данных методом ISAM. Поисковые алгоритмы разработаны таким образом, чтобы оптимизировать скорость поиска для наиболее важных типов запросов. Тем не менее, объем корпуса (около 110 млн. словоупотреблений) не во всех случаях позволяет оставаться в пределах стандартных 0,5-0,8 сек. ожидания – например, в случае поиска сложной комбинации грамматических признаков, распределенных между несколькими словоформами контекста. На настоящий момент пользовательская выдача имеет ограничение 10 тыс. контекстов на запрос. Если число удовлетворяющих запросу контекстов превышает этот лимит (например, при поиске частотной лексемы или отдельного грамматического признака), поисковая система ВАНК использует специальную процедуру рандомизации. Рандомизация позволяет избежать нежелательной «конденсации» найденных контекстов в определенной части корпуса и работать с квазирепрезентативной выборкой примеров, более или менее равномерно покрывающей весь корпус (или пользовательский подкорпус).

Пользовательский интерфейс и программа-клиент
Пользовательский интерфейс ВАНК является программой PHP/HTML, обеспечивающей пользователю полный доступ к поисковой функциональности сервера. С точки зрения конечного пользователя, интерфейс является совокупностью окон в интернет-браузере:
  • Поисковая форма, размещенная с правой стороны интернет-страницы ВАНК
  • Окно выбора грамматических признаков
  • Окно выбора подкорпуса
  • Окно управления отображением результатов поиска
  • Область отображения результатов поиска
  • Ряд вспомогательных окон (например, виртуальная армянская клавиатура)

Поисковая форма является основным элементом пользовательского интерфейса ВАНК. Она позволяет искать:
  • лексемы и словоформы
  • грамматические и лексические категории

а также учитывать при поиске:
  • знаки пунктуации
  • регистр
  • положение слова в предложении
  • (не)однозначность грамматического анализа словоупотребления

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

После того как пользователь сформулировал запрос, пользовательский интерфейс передает этот запрос клиенту. Клиент (написан на PHP) осуществляет предварительный анализ и обработку информации, введенной пользователем, потом генерирует и отправляет запрос серверу, а затем получает и обрабатывает полученную от сервера выдачу (совокупность контекстов). Клиент также отвечает за некоторые более сложные операции с интерфейсом, например, отображение лексико-морфологического разбора вхождения или транслитерацию армянского текста.