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

В настоящее время существует довольно много подобных программ, позволяющих осуществлять обработку текстов корпуса. Примером может служить корпус-менеджер «Экспертная лингвистическая система». Основными ее возможностями являются [5]:

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

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

НЕ нашли? Не то? Что вы ищете?
3 Описание конкордансера для Национального корпуса русского языка 3.1 Общее описание

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

    подокументную частотность словоформы
    пожанровую частотность
    саму словоформу в контексте
3.1.1 Структура корпуса

Материал, для обработки которого была создана данная программа, представляет собой корпус текстов, находящихся в файлах, распределенных по группам, соответствующим четырем категориям жанров: художественная проза, публицистика, научная литература (аналитика и обзоры, научно-популярная),  драматические произведения. Дополнительно внутри каждой группы файлы сортируются по году добавления в корпус. Корпус занимает ~4 Mбайта и включает ~1 млн. словоупотреблений.

Тексты корпуса имеют акцентную разметку, предоставляя возможность программно определить отличие между такими словами, как «любИм» или «лЮбим». Соответственно эти слова будут иметь вид: «люби+м» и «лю+бим». Также вводится понятие «составных слов» (сложных словоформ), под которыми понимаются «сочетания, эквивалентные слову» (например, изо_дня+_в_де+нь), использующие символ «_»  для обозначения входящих в сложную словоформу отдельных частей.

3.1.2 Интерфейс программы

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

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

Запрос может быть задан с использованием знаков ударения («+» - основное ударение, «^» - дополнительное). В таком случае словоформа будет искаться именно в таком виде (без вариаций ударения).

3.1.3 Принцип поиска

Используется прямой поиск по тексту (современные файловые системы достаточно быстры для чтения), так как принятое в такой ситуации сохранение необходимых текстовых кусков в базе данных оказывается в данном случае более трудоемкой операцией. Используемый аппарат регулярных выражений также позволяет обрабатывать материал достаточно быстро, так как почти не использует ссылок на уже найденные части шаблона. В основном он используется для разбора ситуаций с различением букв «е» и «ё», а также для анализа ударений. Таким образом, производится полный просмотр исходных текстов, и предварительная обработка текстов не делается.

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

3.1.4 Вывод результатов

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

3.1.5 Алгоритм работы программы
    определение рабочих переменных и констант; обработка запроса пользователя и проверка, были ли ранее запросы на поиск данной словоформы. В приложении А приведено изображение внешнего вида страницы с запросом. Если да, то обращения к текстам корпуса не происходит, а сразу возвращается предыдущий результат создание шаблонов поиска. Для нахождения совпадений с заданной словоформой используется язык регулярных выражений. Регулярные выражения - это технология, которая позволяет задать шаблон и осуществить поиск данных, соответствующих этому шаблону, в заданном тексте, представленном в виде строки. Термин «шаблон» интуитивно понятен, но, чтобы пояснить его, можно привести следующий пример. Если задуматься над тем, что такое корректный e-mail адрес, то, вероятнее всего, получится, что это набор цифр, букв, символов подчеркивания, затем - символ «@», после - еще один такой же набор (имя сервера) + «.» и в конце – две-три буквы зоны домена (ru, com) (в общем случае). Если теперь это словесное описание представить в форму, понятной компьютеру, то в результате и получится шаблон. Таким образом, по правилам языка регулярных выражений (например,  «*» обозначает, что предыдущий символ может быть повторен ноль или более раз, или запись «[абв]» позволяет указать на то, что ищутся строки, имеющие в некоторой позиции букву или «а», или «б», или «в») создается шаблон для сопоставления с текстами корпуса для нахождения совпадений. В общем виде регулярное выражение записывается так: «/выражение/». Если же символ «/» встречается внутри выражения, то перед ним необходимо поставить обратный слэш «\». Также необходимо экранировать (ставить обратный слэш перед символами) такие несущие смысловую нагрузку в языке регулярных выражений символы, как «+» (предыдущий символ может быть повторен один или более раз), «*» (предыдущий символ может быть повторен ноль или более раз), «?» (предыдущий символ может быть повторен ноль или один раз), «^» (соответствует началу строки), если необходимо найти именно такой символ в тексте; просмотр текстов и сохранение результатов поиска; генерирование результатов поиска и создание протокола запроса: сохранение информации о том, какого числа и во сколько был выполнен запрос, с какого IP‑адреса, какой броузер использовался, какая словоформа искалась, и сколько всего вхождений было найдено в драматических произведениях, художественно литературе, публицистике и научной литературе, а также, сколько вхождений найдено в целом. В приложении Б приведено изображение внешнего вида страницы вывода результата запроса.
3.2 Комментарии к программе 3.2.1 Определение рабочих переменных и констант

Прежде всего необходимо задать некоторые важные константы и переменные.

Так как тексты корпуса акцентуированы, во введенной пользователем словоформе для правильного поиска необходимо проставить ударения. Для этого создается константа шаблона, определяющего все гласные и имеющего вид: «/[гласные]/»:

define('vowelsClass','/[аеёиоуыэюяАЕЁИОУЫЭЮЯ]/') ;

Выражение для создания шаблона для определения того, что пользователь ввел словоформу, разметив ее ударение(я). Символ «|» обозначает «или». В данном случае создается выражение, которое затем будет подставлено в конструкцию «/выражение/», а не сам шаблон. Поэтому отсутствуют косые черты:

$stressPattern = '\+|\^' ;

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

$compoundsPattern = '-|_' ;        

Определяем количество контекстов на одной странице вывода:

define('RNum', 20);

Задаем название полей формы и текстовую метку каждого поля. Этот массив создается для удобства вывода результатов в html-виде и проверки, отметит ли пользователь дополнительные опции поиска. Он специфичен тем, что представляет собой массив массивов. Внешний массив содержит всего два элемента (имеют форму «ключ-значение»), соответствующие названиям флагов дополнительных условий поиска в форме. Значение ключа каждого из этих элементов описано массивом, задающим имя флага в форме ввода и текстовую метку этого флага:

$checkboxes = array ( 'yo' => array
  ( cbName=>'yo',
  cbLabel=>'«Е» и 
  «Ё» эквивалентны'
  ),
  'compounds' => array
  ( cbName=>'compounds',
  cbLabel=>'Искать и в составных 
  словоформах'
  )
  ) ;

Далее идет основная часть программы.

3.2.2 Обработка запроса пользователя

Начинаем с обработки полученных из формы данных, которые хранятся в массиве $_GET:

foreach ( $_GET as $k=>$v )

Нужно проверить, отмечен ли был один из двух флагов. Если пользователь выбрал дополнительную опцию поиска ($v == 'on'), то создается переменная с именем, соответствующим имени флага в форме поиска и принимает значение, равное 1:

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5