Поиск иерархических отношений между двумя обозначенными словами (гипернимом и его гипонимом) с помощью пакета wordnet в R

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

Подход, который я хотел бы использовать, включает в себя вычисление, сколько гиперонимов / гипонимов находится между "явором" и "растением". (Я также видел, что есть множество способов сделать это в Python или Java, но мне нужно сделать это в R.)

К счастью, Wordnet предоставляет относительно полную базу данных семантических отношений между словами, поэтому степень иерархии поддается измерению. Wordnet успешно реализован в R с использованием пакета wordnet. К сожалению, я новичок в Wordnet и не знаю, с чего даже начать.

Я могу получить гиперонимы первого порядка для данного слова ("платан") из словаря Wordnet, используя код из виньетки:

filter <- getTermFilter(type="ExactMatchFilter", word="sycamore", ignoreCase=TRUE)
terms <- getIndexTerms("NOUN", 15, filter)
synsets <- getSynsets(terms[[1]])
hyper <- getRelatedSynsets(synsets[[1]],"@")
sapply(hyper, getWord)

Существует полезную нить здесь, которая иллюстрирует, как повторить этот процесс до энных градусов. Однако это работает только для данного слова (в моем примере "платан" или "растение") и не позволяет мне сравнивать оба слова, подсчитывая, сколько гипернимальных уровней существует между ними. Кроме того,getSynsets() а также getRelatedSynsets()функции в Wordnet выплевывают объект классаjobjRef, который даже не является объектом R.

Будем очень признательны за любые советы по стратегии! И я прошу прощения за общий характер вопроса (я не думал, что полный MWE будет уместным, учитывая, что это не проблема устранения неполадок).

0 ответов

Другие вопросы по тегам