Использование словарных списков

Для поиска аргументов, содержащихся в указанных словарных списках, используется функция term().

Если необходимо найти определенный список слов, удобно добавить их в словарь категории WordClasses. Использование словарных списков дает следующие преимущества:

  1. Компактная запись;

  2. Возможность многократного использования однажды составленного списка слов;

  3. Изменение списка (добавление/удаление элементов) автоматически отражается на всех запросах, в которых он используется.

Синтаксис

term([часть_речи,] название_списка, …​)

Аргументы

Обязательным аргументом функции является название_списка. Допустимо произвольное число названий списков из словарей категории WordClasses.

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

Часть речи

Синоним

Пояснение

Пример

noun

существительное

событие, событиям, конференций …​

verb

глагол

встречаться, обсудили …​

adverb

advb

наречие

одновременно, ранее, резко …​

adjective

adjc

прилагательное

общий, важного…​

particle

prcl

частица, союз, предлог

а, но, и …​

pronoun

pron

местоимение

я, ты, вы, его, наш…​

numeral

nmrl

числительное

один, десятый …​

Ниже представлены примеры словарных списков в словаре Default категории WordClasses. Подробнее о добавлении и использовании словарных списков см. «Использование словарей»

pdl term 1 rus

Параметры

Функция также поддерживает следующие именованные параметры:

Параметр

Допустимые значения

Пояснение

Пример

stem

yes/no

Поиск всех грамматических форм слов из списка/поиск только точных вхождений слов из списка. По умолчанию — yes

term(months, stem:=no) найдет «август», но не «августа»

pos

yes/no

Поиск с учетом/без учета части речи, указанной в списке. По умолчанию — yes

term(debt, pos:=no) найдет «долги» как во фразе «арест имущества за долги», так и во фразе «зимние вечера были долги»

match

range

фрагмент текста между первым и последним аргументом извлекается полностью, включая пунктуацию.

Пример

term(noun, months) найдет все формы существительных из словарного списка «months», к примеру, «ноябрь», «ноябрем», «ноябре».

term(company_postfix, match:=range) найдет постфиксы компаний из словарного списка «company_postfix», включая пунктуацию, например, «B.V.», «L.L.C.».

term(company_postfix) найдет постфиксы компаний из словарного списка «company_postfix», не включая пунктуацию, например, «B V», «L L C».

Пример задачи: Поиск дат

Чтобы найти дату в формате <число> <месяц> <год> («5 января 1997») необходимо задать последовательность из одной или двух цифр, названия месяца и четырех цифр. Можно составить следующий запрос:

phrase(length(1, 2, char(digit)), lemma(noun, январь, февраль, март, апрель, май, июнь, июль, август, сентябрь, октябрь, ноябрь, декабрь), length(4, char(digit)))

Однако в дальнейшем может вновь возникнуть необходимость использовать список месяцев, поэтому удобно создать словарный список «months», что также позволит сделать запрос более компактным:

phrase(length(1, 2, char(digit)), term(noun, months), length(4, char(digit)))

pdl term 2 rus