Использование онтологий
Для поиска слов, связанных указанными в онтологии отношениями, используется функция semantics().
Онтологии относятся к словарям категории Semantics и содержат информацию о связях между объектами определенной предметной области. Онтология представляет собой граф, вершинами которого являются объекты предметной области, а ребрами — отношения между ними.
Тип онтологии |
Пояснение |
Пример |
Универсальная |
Содержит широкий спектр общезначимых понятий |
WordNet, SNePS |
Специализированная |
Содержит понятия конкретной предметной области |
Gene Ontology, Human Disease Ontology |
По умолчанию используется одна из наиболее известных универсальных онтологий — WordNet. Некоторые из представленных в ней типов отношений приведены в таблице ниже.
Тип отношения |
Пояснение |
Пример |
|
meronym |
мероним |
целое → часть |
автомобиль → двигатель |
holonym |
холоним |
часть → целое |
двигатель → автомобиль |
hypernym |
гипероним |
частное → общее |
доверенность → документ |
hyponym |
гипоним |
общее → частное |
документ → доверенность |
antonym |
антоним |
понятие → противоположное понятие |
холодный → горячий |
synonym |
синоним |
понятие → схожее понятие |
холодный → ледяной |
Для корректной работы функции необходимо убедиться, что нужная онтология подключена к узлу. Для этого нужно щелкнуть по узлу правой кнопкой мыши, зайти в «Настройки» и открыть вкладку «Словари». Слева окна расположен список категорий словарей. При выборе Semantics справа появится список доступных онтологий. Необходимо выбрать нужные словари, нажать кнопку «ОК» и выполнить узел. Подробнее о работе со словарями можно узнать в разделе «Использование словарей»
Синтаксис
Поиск по онтологии производится без учета контекста, к примеру, запрос semantics(Meronym, здание) найдет слово «крыша» как во фразе «крыша дома», так и во фразе «автомобильная крыша».
Аргументы
Первым обязательным аргументом функции является тип_отношения, который требует указать тип семантических отношений, присутствующий в подключенных к узлу онтологиях. Типы отношений, использующиеся в онтологии WordNet, указаны в таблице выше.
В качестве второго обязательного аргумента функция принимает одного из участников указанного типа_отношения. Можно указать произвольное количество аргументов в начальной форме, разделяя их вертикальной чертой («|»). К примеру, semantics(synonym, абразивный|шершавый).
Необязательным аргументом является максимальный_уровень, который принимает числовое значение, определяющее максимальное расстояние между указанным аргументом и связанным с ним словом в графе онтологии. К примеру, запрос semantics(1, meronym, автомобиль) найдет только составные части автомобиля по онтологии, в то время как запрос semantics(2, meronym, автомобиль) найдет составные части как автомобиля, так и его двигателя.
Параметры
В таблице ниже приведены опциональные именованные параметры, которые поддерживает функция semantics().
Параметр |
Допустимые значения |
Пояснение |
Значение по умолчанию |
dictionary |
Name1| Name2|… |
Позволяет указать имя словаря, по которому должен осуществляться поиск, к примеру, semantics(synonym, абразивный, dictionary:="WordNet"). Для корректной работы функции указанные словари должны быть подключены в свойствах узла. |
dictionary:=WordNet |
collect |
last/all |
При collect:=last функция возвращает только элементы самого нижнего уровня при поиске нижележащих понятий (гипонимы, меронимы) и только элементы самого верхнего уровня при поиске вышележащих понятий (гиперонимы, холонимы). При collect:=all функция возвращает элементы всех уровней. См. примеры 1, 2. |
collect:=last для отношений типа «гипероним», «холоним», «антоним»; collect:=all для других типов отношений. |
max_level |
числовое значение |
Определяет максимальное расстояние между аргументом и связанным с ним словом в графе онтологии (аналогично аргументу максимальный_уровень). См. пример 3. |
max_level:=1 для отношений типа «гипероним», «холоним», «антоним»; max_level:=20 для других типов отношений. |
min_level |
числовое значение |
Исключаются слова, находящиеся на расстоянии меньше указанного значения от аргумента. При min_level:=0 функция также возвращает исходный аргумент, при min_level:=1 — все связанные с аргументом слова, за исключением самого аргумента. См. пример 4. |
min_level:=0 |
level |
числовое значение |
Возвращает только элементы указанного уровня. См. пример 5. |
|
synset_id |
id |
Позволяет выбрать отдельные значения многозначных слов. Идентификационные номера элементов (synset_id) указаны в словаре. Если необходимо указать несколько элементов, следует перечислить их значения через вертикальную черту (synset_id:=id1|id2) или создать несколько именованных параметров, добавляя суффикс с порядковым номером к имени параметра (synset_id_1:=id1, synset_id_2:=id2) См. пример 11. |
|
pos |
yes/no |
Позволяет игнорировать часть речи, указанную в онтологии. См. примеры 12, 13. |
yes |
stem |
yes/no |
позволяет учитывать/игнорировать форму слова. Если stem:=yes, то словарные записи будут считаться словоформами и предварительно приводиться к нормальной форме. См. пример 14. |
no |
allow_punct |
yes/no |
Регулирует допустимость знаков препинания внутри словарного вхождения. Если allow_punct:=no, тогда словарные вхождения, включающие знаки препинания, будут игнорироваться при поиске. |
yes |
Примеры
Пример задачи: Поиск информации о неисправных деталях автомобиля
Чтобы найти информацию о том, какие детали автомобиля неисправны, необходим их перечень. Можно создать словарный список и перечислить их, а можно сэкономить усилия и воспользоваться функцией semantics(), которая найдет все меронимы слова «автомобиль», указанные в онтологии.
near(40, near(3, semantics(Meronym, автомобиль, max_level:=2), неисправность), автомобиль)
Данный запрос найдет все тексты, где меронимы слова «автомобиль» употребляются на расстоянии 3 от слова «неисправность». Кроме того, задается контекст — требуется, чтобы найденная последовательность была на расстоянии 40 от слова «автомобиль».