Программа WordTabulator. Руководство пользователя

Версия 3.х

Содержание

1. Введение

Программа WordTabulator предназначена для анализа текстов в среде MS Windows. С ее помощью формируется индекс элементов, встречающихся в заданном множестве текстов. В качестве искомых элементов могут быть словоформы, N-граммы (словосочетания заданной размерности) или фразы (синтагмы). Программа может обрабатывать тексты как в обычной одно-байтовой ANSI кодировке, так и в многобайтовой UTF-8. Изначально программа разрабатывалась исключительно для русскоязычных текстов, однако может быть успешно использована и для других языков, например, украинского, исландского или шведского. Определение языка входных текстов в программе достаточно условное. Грубо говоря, это кириллица и не кириллица (да простит меня Бог!).

Программа правильно обрабатывает кириллицу с учетом упраздненных букв русского языка І, Ї (и), Ѣ (ять), Ѳ (фита), Ѵ (ижица), входящих во второе издание словаря В.И.Даля, изданного в 1880-1882 гг. Для европейских или скандинавских языков программа правильно обрабатывает диакритические символы. А текст в UTF-8 может содержать вообще любые разрешенные символы - хоть древне-египетские или китайские иероглифы.

Входные тексты задаются совокупностью обычных текстовых файлов или документов в формате HTML/XML/SGML. В последнем случае программа умеет отделять полезный контент от используемой разметки. Более того, можно обработать только определенный контент, находящийся внутри заданных тегов. Или наоборот пропустить этот контент при обработке.

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

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

Выходным результатом программы является файл (или файлы), содержащий индекс найденных текстовых элементов. Этот индекс может быть в формате HTML, с указанием для каждого элемента частоты встречаемости и ссылок на исходный контекст, или в виде простого списка в обычном текстовом файле. Список может быть упорядочен в алфавитном порядке, по значению или по частоте встречаемости элементов.

Теоретически на размеры обрабатываемой совокупности текстов никаких ограничений не накладывается. Все дело в требуемом на обработку времени. Например, собрание сочинений Ф.М.Достоевского в 15 томах на обычном настольном компьютере Pentium Dual Core 2.8 ГГц с 2 Гб оперативной памяти обрабатывается за 8 минут. Исходные тексты занимают на диске около 60 Мб, а размер выходного индекса составляет около 200 тысяч словоформ.

Программа WordTabulator принадлежит к категории бесплатного программного обеспечения с открытым кодом. Ее сайты прописки - sourceforge.net и Русская Виртуальная Библиотека (РВБ). Консольный модуль обработки написан на языке Icon, графический интерфейс реализован с помощью Delphi 7.

1.1 Благодарности

Программа WordTabulator на начальном этапе разрабатывалась за счет грантов Института "Открытого Общества", выделенных на реализацию проекта Русской Виртуальной Библиотеки.

В последующем поддержка эпизодически оказывалась редакцией РВБ и лично ее техническим редактором, Владимиром Литвиновым. Спасибо ему за творческую поддержку и многие плодотворные идеи!

Вечная память и уважение безвременно ушедшему Ральфу Грисволду (ǂ Ralph Griswold), разработчику языка программирования Icon, на котором реализованы консольные модули программы.

В свое время очень полезным кодом по использованию pipe-интерфейса поделился с автором Кристо Краузе (Christo Crause) из Южной Африки.

Поиск файлов в программе реализован с помощью Delphi-компоненты TmFileScan, разработанной Матсом Асплундом (Mats Asplund) из Швеции.

1.2 История изменений

октябрь 1997

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

декабрь 1999

На сайте Русской Виртуальной Библиотеки опубликована версия 1.01 программы WordTabulator для Windows. Существующее консольное приложение табулятора подверглось значительной переработке и обрело графический интерфейс.

январь 2000

Опубликован WordTabulator для Windows версия 1.02. Исправлена процедура установки в части создания ярлычков программы на рабочем столе Windows. Исправлена ошибка добавления директорий, содержащих в своем имени пробелы и русскую букву ё.

ноябрь 2001

Создан предварительный вариант WordTabulator для Windows версия 2.0. Переработан интерфейс программы, добавлены морфологический модуль для генерации словоформ и встроенный обозреватель для просмотра выходного индекса и подсвеченного контекста.

февраль 2002

Опубликована версия 2.2. Исправлены ошибки, связанные с расширением функциональности программы.

май 2002

Опубликована версия 2.2.1. Выходной индекс программы приведен в полное соответствие со спецификацией HTML 4.01

январь 2004

Опубликована версия 2.2.3, в которой был доработан встроенный обозреватель результатов. Стало доступным выделение и копирование текста в окне обозревателя обычными для Windоws способами.

февраль 2009

Проект wordTabulator создан на сайте sourceforge.net

декабрь 2011

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

март 2012

Опубликована версия 3.5, в которой были исправлены ошибки и недочеты, обнаруженные в графическом интерфейсе и консольном модуле программы. Добавлены новые возможности:

октябрь 2016

На сайте Русской Виртуальной Библиотеки опубликована версия 3.6, в которой графический интерфейс был мигрирован из Delphi на Lazarus IDE и исправлены мелкие ошибки. На этом релизе думалось поставить точку, так как функционал табулятора был полностью интегрирован в xMarkup. Но с тех пор так и не решился вопрос с графическим интерфейсом табулятора. В любом случае wordTabulator как отдельный проект завершен.

сентябрь 2020

Версия 3.6 была выложена на sourceforge.net, чтобы пользователи "не потеряли" программу.

2. Термины и определения

Cледует оговориться, что здесь даны лишь определения, используемые в самой программе. С точки зрения профессиональной лингвистики эти определения могут показаться слишком вольными или неточными. Не суть важно.

Словоформа или лексема есть конкретное слово в конкретной грамматической форме. Более формально словоформа представляется последовательностью буквенно-цифровых символов, ограниченных в тексте знаками препинания или пробелами. В состав словоформы могут также включаться дефис (-), апостроф (') и в случае сокращений точка (.). Состав символов, разрешенных в словоформе может быть расширен пользователем. Словоформа обязательно начинается буквой или цифрой. Символы в составе словоформы могут быть представлены:

Примеры словоформ:  Ивановѣ,  О'Генри,  из-за,  н.э.,  Пушкин,  1837,  καρπῶν.

Одной из разновидностей словоформ являются сокращения. Это могут быть инициалы А. С.,  J.-P. или сокращения вида г.,  т.д.,  p.m.,  С.С.С.Р.. Такие сокращения всегда выдаются с точкой на конце. Другие сокращения, например, прим.др.сокр. программой не понимаются и воспринимаются как как набор отдельных элементов (однословных фраз) "прим", "др" и "сокр".

N-грамма или словосочетание есть последовательность заданного числа словоформ в составе фразы. Например, 3-граммы намерениями вымощена дорога или дорога в ад во фразе "Благими намерениями вымощена дорога в ад.".

Фраза или синтагма есть последовательность словоформ в тексте, ограниченная знаками препинания или любыми не буквенно-цифровыми символами. Состав разделителей для синтагмы может быть переопределен пользователем. Словоформы в составе фразы отделяются друг от друга пробелами или знаками табуляции. Например, в предложении Есть хорошая латинская поговорка: "в здоровом теле - здоровый дух" могут быть выделены две фразы - Есть хорошая латинская поговорка и в здоровом теле здоровый дух.

3. Алгоритм обработки текста

Необходимым условием является одинаковая кодировка входных текстов. Обработка всегда осуществляется по следующему алгоритму:

1) Исходный текст преобразуется в промежуточный формат в зависимости от исходного формата и кодировки.

2) Из текста в соответствии с заданным набором разделителей выделяются синтагмы.

3) Если задано, из отдельных синтагм выделяются словоформы или N-граммы.

4) Полученные элементы проверяются на заданные ограничения по длине слова, частоте встречаемости и поисковым запросам.

5) Если множество исключений не пустое, производится соответствующая операция вычитания или объединения.

6) Результирующий список элементов сортируется и выводится в требуемом формате.

7) Если задано, производится пост-обработка результирующего индекса по заданному сценарию.

4. Программные компоненты

Программа WordTabulator включает следующие программные компоненты:

5. Создание проекта

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

5.1 Задание входных текстов

На закладке [Исх.файлы] в дереве файлов пока две пустые папки - [Множество Входных Текстов] и [Множество Исключений]. Выбираем тип обрабатываемых файлов (*.htm) и нажимаем кнопку [Найти и добавить дерево файлов]. При этом откроется диалог выбора входной папки. Пусть мы хотим обработать тексты Ф.М.Достоевского, которые хранятся в папке c:\work\texts\dostoevsky. Находим и выделяем эту папку и жмем [OK].

Найти и добавить дерево файлов

HTML документы во всех вложенных папках внутри папки [dostoevsky] будут добавлены в дерево входных текстов с сохранением оригинальной структуры папок. В консольном окне видим, что всего было добавлено 1226 файлов.

Множество входных текстов

Нам не интересен файл "c:\work\texts\dostoevsky\index.htm", который содержит оглавление. Удалим его из дерева - выделим его заголовок и нажмем кнопку . Не бойтесь - на диске файл останется в неприкосновенности! Таким же образом можно удалить другие файлы/папки. Если мы не хотим удалять папку, а просто очистить ее содержимое, можно использовать кнопку . Опять же очистка касается только папки в дереве входных текстов, а не на диске.

Добавление файлов в любую папку дерева может производиться многократно. Для этого нужно выделить требую папку в дереве и добавить файлы с помощью кнопок [Найти и добавить дерево файлов], [Найти и добавить файлы] или [Добавить файлы]. Навигация по дереву должна быть понятна. По правому клику мышкой доступно контекстное меню.

Контекстное меню

Итак, входные тексты определены. Никаких исключений пока не задаем. Пора переходить к параметрам обработки на закладке [Обработка Слов].

5.2 Задание правил обработки

Обработка слов

При необходимости зададим кодировку входных текстов, если она отличается от стандартной windows-1251. В случае кириллицы это может быть KOI8-R или CP866. Запомните, что кодировка windows-1252 должна использоваться только для не кириллических языков, например, английского или шведского. В противном случае русские буквы превратятся в диакритику! Непременным условием является, чтобы кодировка всех входных текстов была одинаковой!

По умолчанию тип обрабатываемых элементов - словоформы, состоящие из одной и более букв. Если говорить точнее - не букв, а символов приравненных к буквам. По умолчанию состав словоформ для кодировки windows-1251 определяется следующими символами-буквами:

Состав буквенных символов может быть расширен - для этого в поле [Дополнительные буквы] можно указать символы или их коды в нотации \ddd, где ddd - десятичный код символа в диапазоне 0..255. Коды символов также можно указывать в 16-ричной нотации \xDD, например, код \xFF задает тот же символ, что и \255.

Дополнительно в составе словоформы - но только после буквы - могут появляться следующие символы:

Состав дополнительных символов в словоформе также может быть расширен - такие символы или их коды можно указать в поле [Дополнительные символы].

Как уже упоминалось, символы в составе словоформы могут быть в виде именованных символов HTML или NCR-кодов. Их использование в исходном тексте расширяет множество "букв" практически до бесконечности, потому что на такие символы никаких ограничений в программе не накладывается. Здесь следует отметить символы І,  Ї,  Ѣ,  Ѳ,  Ѵ, дополняющие кириллицу дореформенными буквами старой орфографии.

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

Теперь можно перейти к заданию формата выходного индекса на закладку [Выходной Индекс].

5.3 Задание выходного индекса

Выходной индекс

Выходной индекс - это результат обработки, содержащий найденные текстовые элементы. Индекс может быть создан в трех различных форматах:

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

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

Если необходимо обработать словоформы с учетом исходного регистра, необходимо сменить алфавитную сортировку на сортировку по значению (стандартный для Windows вариант сортировки по значениям ASCII-кодов) или частоте встречаемости. Для особо длинных выходных индексов в целях ускорения обработки сортировку можно вообще отключить. Чтобы задать обработку с учетом регистра букв, нужно вернуться на закладку [Обработка слов] и поставить галочку [учитывать регистр букв].

Выходной индекс по умолчанию формируется в едином выходном файле, имя которого задается в поле [Выходной индекс]. Если выходной HTML-индекс будет содержать десятки тысяч элементов, его просмотр в браузере будет практически невозможен. В этом случае целесообразно задать вариант вывода "частями по N элементов" (N=1000 наиболее оптимально).

Вывести элементы

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

Другими вариантами является вывод только первых или последних N элементов.

При необходимости может быть задана пост-обработка результирующего индекса с помощью скрипта, выполняемого программой xMarkup. Пост-обработка может заключаться в заданном преобразовании или анализе результирующего индекса или генерации дополнительных результатов. Детальное описание режима пост-обработки приведено в разделе 8.

5.4 Обработка тегов

Обработка тегов

При обработке HTML/XML/SGML документов можно в качестве дополнительной опции указать, как программа должна обрабатывать парные теги вида <tag-name> </tag-name>. По умолчанию, контент внутри парных тегов title и script всегда игнорируется. При желании можно указать любой другой набор парных тегов и выбрать режим, как поступать с их контентом - игнорировать или обрабатывать.

Чтобы автоматически сгенерировать список всех парных тегов, использованных при разметке исходной совокупности текстов, можно нажать кнопку [Анализ]. Запустится процесс анализа и по его окончании отсортированный список тегов появится в окне.

Список тегов

Этот список можно редактировать, например, удалить лишние теги или вместо множества тегов p class="comment" id=* указать общий класс p class="comment". Список тегов можно сохранить для будущего использования.

5.5 Задание множества исключений

Если необходимо исключить из обработки некоторые элементы (стоп-слова), вы можете подготовить их список в отдельном файле. Формат никакой роли не играет - можно указывать слова через запятую, пробел или столбиком построчно. Затем добавьте этот файл в папку [Множество исключений] на закладке [Исх.файлы].

С помощью исключений можно задать более сложную обработку, заключающуюся в сравнении двух различных совокупностей текстов. В этом случае сравниваемые совокупности добавляются соответственно в папку [Множество входных текстов] и [Множество исключений]. Затем на закладке [Обработка Слов] в списке [Обработка исключений] выбираем необходимый режим обработки:

Обработка исключений

5.6 Поиск русских словоформ с учетом морфологии

Если входные тексты на русском языке и вам нужно быстро найти слова с учетом морфологических изменений (падежных окончаний и т.д.), список искомых слов в нормальной форме задается на вкладке [Обработка слов] в окне [Поисковые шаблоны]. При этом нужно поставить галочку в пункте [использовать морфологический модуль], чтобы загрузить морфологический модуль. В этом режиме является недопустимым задание в поисковом запросе латинских букв!

Морфологический модуль

Морфологический модуль (генератор словоформ) был разработан Жанной Григорьевной Аношкиной (Институт Русского Языка РАН) и использует базовый словарь, полученный из "Грамматического Словаря Русского Языка" А.А.Зализняка. Словарь морфологического модуля включает следующее число базовых форм (лемм):

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

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

Чтобы отключить морфологический модуль, нужно просто убрать галочку в пункте [использовать морфологический модуль].

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

Программа понимает поисковые запросы, заданные с помощью регулярных выражений. Для этого нужно поставить галочку в пункте [регулярные выражения]. При этом морфологический модуль должен быть отключен. В окне [Поисковые шаблоны] вы можете указать одно или несколько регулярных выражений, которые будут обрабатываться как список альтернатив, объединенных союзом "ИЛИ". Проверка регулярного выражения всегда осуществляется по началу слова, а не по включению. Например, чтобы найти все сокращения или инициалы можно задать следующее выражение:

Регулярные выражения

Формат используемых регулярных выражений очень близок к формату, поддерживаемому UNIX-утилитой "egrep", с учетом расширений для языка Perl. Ниже дается краткое описание специальных символов, используемых в составе регулярных выражений (РВ).

c Любой обычный символ (т.е. ни один из числа, описанных ниже), задающий в РВ сам себя
\c Обратный слэш с последующим символом задает специальный символ (например, \t). Обычно это какой-то непечатный символ
. Точка в составе РВ задает любой одиночный символ; сам символ точки должен быть задан c обратным слэшем впереди (\.)
[строка] Непустая строка символов, заключенная в квадратные скобки, задает совпадение с любым одним символом из указанных в строке. Если первый символ "^", это задает сопадение с любым символом, исключая указанные в строке. Символ "-" между двумя символами задает диапазон последовательных ASCII символов, например, [0-9] эквиавалентно [0123456789]. Другие специальные символы в составе строки задают сами себя.
* Задает сопадение с 0..* экземплярами выражения, указанного слева
+ Задает сопадение с 1..* экземплярами выражения, указанного слева
? Задает сопадение с 0..1 экземплярами выражения, указанного слева
{N} Задает сопадение точно с N экземплярами выражения, указанного слева
{N,} Задает сопадение с минимум N экземплярами выражения, указанного слева
{N,M} Задает сопадение с минимум N но не более M экземплярами выражения, указанного слева
^ Символ крышечки в начале РВ задает совпадение с началом строки
$ Символ доллара в конце РВ задает совпадение с концом строки
| Вертикальная черта задает альтерацию выражений записанных слева и справа
() РВ в круглых скобках задает группу
\N Где N - цифра в диапазоне 1-9, задает повторение N раз выражения в круглых скобках слева. Например, ^(.*)\1$ задает строку, состоящую из двух одинаковых последовательностей символов.

Ниже приводится описание расширенных символов, поддерживаемых языком Perl. Эти символы могут указываться в составе выражений в квадратных скобках [].

\w Задает любой буквенно-цифровой символ, включая символ подчеркивания "_"
\W Любой не буквенно-цифровой символ
\b Задает границу слова, заданного последовательностью буквенно-цифровых символов \w; проще говоря здесь под границей понимается начало или конец строки, знак препинания или символ промежутка
\B Любая не-словесная граница
\s Задает любой символ промежутка
\S Не символ промежутка
\d Любая цифра [0-9]
\D не цифровой символ

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

(А|Я)Слова, начинающиеся буквой "А" или "Я"
(а|я)$Слова, оканчивающиеся буквой "а" или "я"
\w*(а|я)Слова, включающие букву "а" или "я" (в любой позиции)
\w+-\w+Слова с дефисом, например, "жил-был"
\w+ский$Прилагательные и фамилии, оканчивающиеся на "ский"
[А-яЁё]+$Слова, состоящие исключительно из букв русского алфавита
[A-Za-z][А-яЁё]+$Русские слова, почему-то начинающиеся латинской буквой (ошибки распознования)
[IVX]+$Римские числа (от 1 до 49), или слова из латинских букв I,V,X

5.8 Настройки

На закладке [Настройки] задаются различные вспомогательные настройки:

Настройки

С помощью списка [Язык интерфейса] можно выбрать язык интерфейса - русский или английский.

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

Значение в окне [Внешний текстовый редактор] задает путь к текстовому редактору, который должен использоваться для просмотра или правки файлов в дереве проекта.

С помощью списка [HTML-браузер] можно выбрать доступный на вашем компьютере браузер, который должен использоваться для просмотра исходных текстов и выходного индекса.

В окошке [Размер буфера] указывается размер консольного окна (в строках), в котором выводится протокол обработки.

С помощью пункта [запрашивать подтверждения] указывается, нужно ли выводить диалоговые окна подтверждения при выполнении операций удаления/очистки в дереве проекта.

С помощью пункта [проверять обновления программы при старте] указывается, нужно ли проверять наличие обновленной версии программы каждый раз, когда вы ее стартуете.

5.9 Помощь

На закладке [Помощь] вы можете открыть в браузере инструкцию пользователя или проверить обновление программы на сайте sourceforge.

Помощь

6. Запуск процесса обработки

Вернемся на закладку [Исх.файлы] и запустим процесс обработки нажатием на кнопку [Начать обработку] . При этом все параметры обработки и список имен входных файлов автоматически сохранятся в файл проекта (в нашем случае "c:\tmp\wt$proj.wt"). В последующем файл проекта можно использовать для быстрой загрузки.

Обработка

В процессе обработки выводится прогресс-индикатор и отображается затраченное время. Нажатие на кнопку [Stop] или ввод Ctrl+C прервет обработку в любой момент.

Окончание

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

7. Просмотр результатов

Для просмотра выходного индекса достаточно нажать кнопку , которая становится доступной после завершения обработки. На вкладке [Настройки] можно определить, с помощью какого HTML-браузера вы будете просматривать выходной индекс. Выберите подходящее значение из списка [HTML-браузер], содержащего доступные на вашем компьютере браузеры. Это может быть Microsoft Internet Explorer, Mozilla Firefox, Google Chrome или любой другой установленный в системе браузер. Браузер по умолчанию - "Встроенный браузер" - позволяет просматривать контекст с подсветкой вхождений каждого элемента индекса.

Выходной индекс

HTML-индекс для каждого элемента включает ссылки на исходный контекст. Эти ссылки нумеруются в порядке убывания частоты встречаемости элемента в тексте (число в скобках). При открытиии ссылки в окне встроенного браузера загружается подсвеченный контекст и предлагается меню перемещения по подсвеченным вхождениям слова. Например, перейдем по первой ссылке 1(3) для слова "Александрову":

Контекст

Для возврата к индексу достаточно закрыть окно контекста. Следует отметить, что в некоторых случаях встроенный браузер не сможет найти элемент в контексте. Например, в индексе элемент выведен как "Александр", а в исходном контексте он выглядит как "<b>А</b>лександр" - с выделением первой буквы. К сожалению, встроенный браузер будет также бесполезен для просмотра текста в UTF-8 и XML-документов.

8. Пост-обработка результатов

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

Каждый конкретный вариант пост-обработки реализуется с помощью скрипта, выполняемого утилитой xMarkup. Полный путь к файлу скрипта указывается в поле [Пост-обработка индекса] на закладке [Выходной индекс]. Для быстрого выбора скрипта используйте кнопку [...] правее поля. Чтобы открыть текст выбранного скрипта во внешнем редакторе нажмите кнопку [Править]. Создание скриптов xMarkup является отдельной задачей и здесь не рассматривается (смотри руководство пользователя xMarkup).

Скрипт пост-обработки

Примеры скриптов пост-обработки выходного индекса в формате HTML и текстовой таблицы можно найти в папках bin/scripts/html и bin/scripts/text соответственно. Следует понимать, что выбранный вариант скрипта должен соответствовать формату выходного индекса. Нет смысла запускать скрипт обработки текстовой таблицы для HTML-индекса и наоборот.

Пост-обработка автоматически запускается всякий раз после успешного завершения основной обработки. На рисунке ниже показан вывод скрипта count_word_len.html.par вычисления распределения длин слов в выходном индексе, полученном обработкой корпуса стихов А.С.Пушкина. Как видно, наиболее часто встречаются слова с длиной 5 символов (14,25% случаев).

Результаты пост-обработки

На рисунке ниже показан график распределения частоты букв в стихах А.С.Пушкина, построенный по результатам обработки того же выходного индекса с помощью скрипта count_char_freq.html.par.

Результаты пост-обработки

Чтобы отключить пост-обработку, достаточно очистить поле [Пост-обработка индекса].

© Сергей Логичев, 1997-2020