Новости

В конкурсе "Диссертации", посвящённого 50-летию научного направления "Искусственный интеллект" и памяти выдающегося российского учёного Л.Т.Кузина, наш сотрудник А.А.Липатов был награждён первым призом и дипломом за недавно защищенную диссертацию к.т.н.

Е.А.Сидорова защитила диссертацию на тему «Методы и программные средства для анализа документов на основе модели предметной области»

Прочитать подробнее...

Интервью
3.05.2014 - Ллорет де Мар – жемчужина испанского побережья Коста Брава

13.04.2014 - Орехи – любимое лакомство для всех

Ознакомиться со всеми интервью...

Строение шаблонов

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

персональный компьютер

персонального компьютера

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

Хвост

Соответственно, чтобы находились все падежи, можно написать шесть строчек, а если требуется и множественное число, — то 12 строчек. Это нерационально, поэтому предусмотрена возможность более компактной записи для таких случаев:

персональн компьютер

Специальный знак многоточия указывает на то, что на его месте может находиться любая последовательность букв. Это многоточие «специальное» потому, что вводится оно специальным образом: одновременным нажатием клавиш Ctrl и тире, а при отображении в окне редактора выделяется красным цветом.

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

Опция

Кроме этого, в редакторе заложены другие возможности сокращенной записи шаблонов. Например, бывает, что при сокращениях не ставят точку: кв. м. или кв м или кв.м. Этот случай можно отобразить при помощи специальных знаков опции:

кв(.)( )м(.)

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

Ссылки на шаблоны

Приведенный пример шаблона, однако, может работать неправильно. Действительно, возможен вариант слова квм, что не соответствует задуманному. Из этой ситуации можно выйти, вставив в текст нашего шаблона ссылку на другой шаблон. Создадим шаблон, состоящий из двух строчек, содержащих по одному знаку: точку и пробел. Сохраним его под каким-нибудь именем, например, [точка/пробел], а наш шаблон запишем так:

кв[точка/пробел]м(.)

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

Повторители

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

[цифра]=

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

[цифра]=3 — [цифра]=2 — [цифра]=2

Красный знак равенства и цифры счетчика после него следует вводить сочетанием Alt и соответствующий знак — равенство или цифра. Кроме строгого равенства допустимо нестрогое:

>= или <= (вводятся Alt и < или >). Понятно, что повторители могут использоваться не только после цифр, но и после любых шаблонами или знаков. Для букв, как русских, так и латинских, они недопустимы, в этих случаях придется использовать точную запись, например ааа (если, конечно, такое где-нибудь понадобится). Особое место занимает использование повторителя с системным шаблоном [буква]. Например, запись

[буква]>=15

определяет любое слово из пятнадцати и более букв.

Контекст

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

операционный стол

нам не подойдет, потому что в этом случае выберутся оба слова. В редакторе предусмотрен механизм для такого случая. Следует, используя средства выделения, одинаковые для всех редакторов, отметить слово операционный и нажать сочетание Ctrl+N. В окне редактора эти действия отобразятся так:

операционный стол

Система поймет, что нам нужно искать стол, перед которым идет слово операционный, а все остальные столы не учитывать. Отметим по ходу: для отмены указания контекста служит сочетание Ctrl+C.

Дистантный контекст

Наш шаблон не обнаружит сочетание, например, такое: операционный универсальный стол. Выручит дистантный контекст. Используя сочетание клавиш Ctrl и . (точка в латинской раскладке), введем в строку символ красной точки:

операционный . стол

Для большей наглядности этих точек может быть несколько:

операционный стол

Другой пример использования дистантного контекста:

[№ телефона]:

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

Отрицательный контекст

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

операционный «универсальный« стол

Красные кавычки (вводятся Ctrl+») указывают на отрицательный контекст.

Значения

Рассмотрим еще один пример. Пусть нам требуется найти в тексте описания технических характеристик автомобиля место, где говорится о его скорости. Составим шаблон:

скорость [число]( )км/час

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

скорость [число] ( )км/час

Однако, в системе Alex имеется еще одна возможность решить ту же самую задачу: при помощи указания значений. Выделим шаблон [число] и нажмем сочетание Ctrl+V, получим:

скорость [число] ( )км/час

Это — указание системе присвоить нашему шаблону значение, извлеченное из текста, покрываемого выделенным шаблоном. Таким образом, оба представленных примера шаблонов работают одинаково. В чем отличие? В том, что в первом случае слова скорость и км/час не входят в шаблон: контекст только указывается, но не используется, а во втором случае эти слова явялются составной частью шаблона. Если этот шаблон будет в дальнейшем использоваться в других шаблонах, то этот нюанс приобретает существенное значение. Сохраним наши шаблоны в словаре под именем [скорость] и напишем новый шаблон:

максимальная [скорость]

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

максимальная [скорость]

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