Как получить иерархию слов (например, гипернимы, гипонимы), используя wordnet в R

Я хочу использовать пакет wordnet в R, чтобы получить иерархию слов, например: "animal" - это гипернимое слово "cat", а "apple" - это гипоним "фрукт". Но код, который я могу найти из файла справки R wordnet, подобен приведенному ниже для идентификации антонимов:

filter <- getTermFilter("ExactMatchFilter", "cold", TRUE)
terms <- getIndexTerms("ADJECTIVE", 5, filter)
synsets <- getSynsets(terms[[1]])
related <- getRelatedSynsets(synsets[[1]],"!")
sapply(related, getWord)

Как я могу использовать пакет Wordnet R для поиска гипернимов и гипонимов слова? Благодарю.

1 ответ

Вы можете заменить "!" (что для антонимов) в

related <- getRelatedSynsets(synsets[[1]],"!")

с другими символами в зависимости от того, что вам нужно.

Смотрите эту ссылку: http://wordnet.princeton.edu/man/wnsearch.3WN.html

Гипернимы были бы "@"

Продолжение оригинального вопроса:

Я только начал использовать WordNet, и я ищу что-то подобное. Для "яблока" я хотел бы дать мне гиперновое дерево

  • 'фрукты'
    • "Пища"
      • "твердое вещество"
        • "физическое лицо"
          • так далее...

как видно при нажатии на inherited hypernyms в сети WordNet http://wordnetweb.princeton.edu/perl/webwn

Тем не менее, следующие команды

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

только даст мне

[[1]]
[1] "edible fruit"

[[2]]
[1] "pome"        "false fruit"

следовательно, не в состоянии обеспечить меня более низкими уровнями гиперонимов

Ключом к восхождению в гиперном дереве является рекурсивное использование getRelatedSynsets().

Продолжая приведенный выше пример, извлекаем наборы из наборов Apple:

related_2 <- getRelatedSynsets(related[[1]], "@")

И собирая соответствующие слова:

sapply(related_2, getWord)

даст:

[[1]]
[1] "produce"         "green goods"     "green groceries" "garden truck"   

[[2]]
[1] "fruit"

И идем на шаг дальше:

related_3 <- getRelatedSynsets(related2[[1]], "@")

sapply(related_3, getWord)

приведет к:

[,1]        
[1,] "food"      
[2,] "solid food"
Другие вопросы по тегам