Поиск словосочетаний

Для поиска аргументов в произвольном порядке внутри словосочетания используется функция chunk(). Под словосочетанием подразумевается простейшая синтаксическая единица, например, глагольная или именная группа. Группа состоит из одного или более слов связанных по смыслу и грамматически. Обязательным элементом является главное слово (вершина), кроме того группа может содержать зависимые слова. Тип группы определяется частью речи ее вершины.

Синтаксис

chunk([тип_словосочетания,] аргумент_1, аргумент_2, …​)

chunk(тип_словосочетания)

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

Опциональный аргумент тип_словосочетания определяет тип словосочетания и может принимать следующие значения:

Тип

Синоним

Пояснение

Пример

NP

Pnou

именная группа

резким похолоданием; состояние радиационной обстановки

VP

Pver

глагольная группа

можно будет считать; была передана; продолжают

JP

Padj

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

значительно сложнее; очень велик; потерянным

PP

Ppre

предложная группа

в связи с; в; несмотря на

RP

Padv

наречная группа

еще больше; теперь; уже сейчас

В колонке «Синоним» приводится допустимое альтернативное написание типа.

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

Опциональные именованные параметры функции

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

Параметр match регулирует объем текста, извлекаемого функцией.

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

Параметр whole:=yes позволяет извлекать словосочетания, состоящие только из аргументов поискового запроса.

Параметры принимают следующие значения:

Параметр

Значение

Пояснение

allow_punct

allow_space

arguments (значение по умолчанию)

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

range

Извлекается фрагмент текста от первого до последнего найденного аргумента.

match

yes (значение по умолчанию)

Пробелы/Знаки пунктуации между аргументами последовательности допускаются.

no

Пробелы/Знаки пунктуации между аргументами последовательности не допускаются.

level

low (значение по умолчанию)

Извлекаются простейшие словосочетания

top

Извлекаются объединенные словосочетания

whole

yes

Извлекаются словосочетания, состоящие только из аргументов поискового запроса.

Примечания

Для разбивки текста на словосочетания используется встроенный в «ПолиАналист» алгоритм чанкинга (сегментации текста на синтагмы). Результаты работы этого алгоритма можно посмотреть в узле «Разметка текста».

pdl chunk 1 rus

При иcпользовании опционального именованного параметра level:=top, результаты соответствуют разметке с выбранной опцией «Использовать фрагменты высокого уровня».

pdl chunk 2 rus

В отличие от запроса phrase(0, большой, компания) запрос chunk(большой, компания) найдет не только «большая компания», но и «большая строительная компания», потому что функция phrase() ищет последовательность аргументов в строго указанном порядке на расстоянии «0» друг от друга, а chunk() находит словосочетание полностью, со всеми зависимыми словами.

Пример

chunk(строительный, компания) = chunk(компания, строительный) найдет словосочетание «строительная компания» в предложении «В конкурсе участвовали 3 строительные компании» и ничего не найдет в «Строительные работы выполняла известная компания».

chunk(np, интерес, match:=range) найдет все именные группы, куда входит слово «интерес», например: «повышенный интерес», «всплеск интереса», «неподдельный личный интерес», «интерес национальной безопасности».

chunk(np) найдет все именные группы, например, «три места», «День города», «Тверская улица», «численность сил реагирования».

chunk() найдет пять словосочетаний в предложении «Особое место занимает проблема развития творческих индустрий в России»: «Особое место», «занимает», «проблема развития творческих индустрий», «в», «России».

chunk(level:=top) найдет три словосочетания в предложении «Особое место занимает проблема развития творческих индустрий в России»: «Особое место», «занимает», «проблема развития творческих индустрий в России».

chunk(индексация, выплата) найдет «индексация социальных выплат» и «индексация выплат».

chunk(индексация, выплата, whole:=yes) найдет «индексация выплат».

Пример задачи: найти в тексте упоминания всех университетов

Запрос chunk(университет, match:=range) позволит найти названия всех университетов. Кроме того, этот запрос найдет «различные университеты страны», «лаборатория университета» и «история Московского университета».

pdl chunk 3 rus

Заметим, что без параметра match:=range будет выделено подсветкой только слово «университет», без зависимых от него слов.

pdl chunk 4 rus

Пример задачи: найти в тексте описание неполадок

Запрос chunk(неполадка, level:=top, match:=range) позволит найти описания различных неполадок. Обычно неполадки описываются в свободной форме, а потому использование функции chunk() существенно упрощает запрос, так как избавляет от необходимости описывать все многообразие возможных формулировок.

pdl chunk 5 rus

Заметим, что без параметра match:=range будет выделено подсветкой только слово «неполадка», без зависимых от него слов.

pdl chunk 6 rus