semantics

Назначение

Находит документы, содержащие аргументы и слова, связанные с ними определенным типом отношений в семантическом словаре (онтологии).

Синтаксис

semantics([максимальный_уровень,]тип_отношения,аргумент[,…])

Аргументы

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

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

Например, в лингвистической онтологии «WordNet», используемой в качестве семантического словаря по умолчанию, понятия связаны между собой следующими семантическими отношениями:

  • Hypernym: более общее понятие по отношению к более частному (доверенность - документ);

  • Hyponym: частное понятие по отношению к более общему (документ - доверенность);

  • Holonym: понятие, которое является целым по отношению к другому (двигатель - автомобиль);

  • Meronym: понятие, которое является составной частью другого (автомобиль - двигатель);

  • Antonym: понятия противоположные по значению (быстрый - медленный);

  • Synonym: понятия сходные по значению (здание - строение).

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

  • dictionary:="Name1|Name2|…​" позволяет указать имя словаря, по которому должен осуществляться поиск. Для корректной работы функции указанные словари должны быть подключены в свойствах узла.

  • collect:=last/all - при collect:=last функция возвращает только синсеты самого нижнего уровня при поиске нижележащих понятий (гипонимы, меронимы) либо только синсеты самого верхнего уровня при поиске вышележащих понятий (гиперонимы, холонимы) - см. пример 1. При collect:=all функция возвращает синсеты всех уровней - см. пример 2. По умолчанию collect:=last используется для отношений типа гипероним, холоним, антоним, а collect:=all - для всех остальных типов отношений.

  • max_level:=N определяет максимальное расстояние между аргументом и связанным с ним словом в графе онтологии (аналогично первому аргументу max_level) - см. пример 3. По умолчанию max_level:=1 используется для отношений типа гипероним, холоним, антоним, а max_level:=20 - для всех остальных типов отношений.

  • min_level:=N функция отсеивает слова, находящиеся на расстоянии меньше N от аргумента, - см. пример 4. По умолчанию используется min_level:=0, при котором функция также возвращает исходный аргумент. При min_level:=1 функция возвращает все связанные с аргументом слова, за исключением самого аргумента.

  • level:=N возвращает синсеты только уровня N - см. пример 5.

  • pos:=yes/no позволяет учитывать/игнорировать часть речи, указанную в онтологии, - см. пример 7. По умолчанию используется pos:=yes.

  • stem:=yes/no позволяет учитывать/игнорировать форму слова. Если stem:=yes, то словарные записи будут считаться словоформами и предварительно приводиться к нормальной форме. По умолчанию stem:=no.

  • allow_punct позволяет учитывать/игнорировать знаки препинания и внутри вхождения онтологии. По умолчанию allow_punct:=yes.

Например, если в словаре синонимов существует пара «делать пересадку» и «пересаживаться», то запрос semantics(synonym, "делать пересадку", pos:=no, stem:=yes) найдет не только эту пару синонимов, но и глагол «пересадить». Потому что при stem:=yes алгоритм сначала получает слово из словаря («пересаживаться»), а затем приводит к нормальной форме «пересадить». При stem:=no найдется только «пересаживаться», потому что в этом случае не происходит нормализация.

  • synset_id:="id" позволяет выбрать отдельные значения многозначных слов.

Например, слово «основание» входит в несколько синсетов (смысловых единиц), среди которых «опорная часть» (synset_id=FEFE7A9BE755673D) и «причина, достаточный повод» (synset_id=89A031C374A64976).

semantics(synonym, основание) находит все возможные синонимы слова «основание» (фундамент, опора, основание, причина, мотив и т.д.)

Чтобы получить только синонимы слова «основание» в значении «опорная часть», необходимо переписать запрос с использованием параметра synset_id:

semantics(synonym, synset_id:=FEFE7A9BE755673D) находит «фундамент», «опора», «основание», но не находит «причина», «мотив».

Если необходимо указать несколько синсетов, следует перечислить их значения через вертикальную черту (synset_id:=id1`|`id2) либо создать несколько именованных параметров, добавляя суффикс с порядковым номером к имени параметра (synset_id_1:=id1, synset_id_2:=id2).

Возвращаемое значение

Документы, соответствующие запросу.

Примеры

Ниже приведен фрагмент семантической сети, иллюстрирующий функцию semantics() на примере отношения типа мероним для понятия «здание».

1. semantics(meronym, здание, collect:=last)

pdl meronym last rus

2. semantics(meronym, здание, collect:=all) = semantics(meronym, здание)

pdl meronym all rus

3. semantics(meronym, здание, max_level:=2)

pdl meronym maxlevel2 rus

4. semantics(meronym, здание, min_level:=2)

pdl meronym minlevel2 rus

5. semantics(meronym, здание, level:=2)

pdl meronym level2 rus

6. semantics(hyponym|meronym, здание) находит все возможные гипонимы («дом», «гараж», «церковь» …​) и меронимы («комната», «лестница», «окно» …​) аргумента «здание».

7. semantics(synonym, воинский, pos:=no) находит синонимы независимо от части речи аргумента, т.е. как во фразе «военная операция французских войск («военная» — прилагательное), так и во фразе «французские военные приступили к наведению порядка» («военные» — существительное).

8. semantics(hyponym, "Nervous system diseases") найдет «disease, cerebrovascular» и «cardiovascular disease». Чтобы исключить из поиска вхождения со знаками препинания, нужно использовать запрос semantics(hyponym, "Nervous system diseases", allow_punct:=no).