Как программно получить доступ к иерархии Wordnet?

Предположим, что для любого слова, к которому я хочу получить доступ к его родительскому значению IS-A и значению HAS-A, возможно ли использование любого API?

3 ответа

Вы можете использовать Python API из набора инструментов Natural Language. В Wordnet отношение IS-A называется гиперным (напротив: гипоним), а отношение HAS-A называется меронимом (противоположно: holonym).

from nltk.corpus import wordnet
book = wordnet.synsets('book')[0]
book.hypernyms()
>>> [Synset('publication.n.01')]
book.part_meronyms()
>>> [Synset('running_head.n.01'), Synset('signature.n.05')]

Я также обнаружил, что API-интерфейс для лингвистики NodeBox проще в использовании:

import en
en.noun.hypernym('book')
>>> [['publication']]

Бесстыдная вилка:

Я пишу библиотеку Scala для доступа к WordNet. Хотя не все меры подобия были реализованы, все смысловые значения и отношения доступны. Я использую его для своих исследований, поэтому он находится в активной разработке.

import com.github.mrmechko.swordnet._

SKey("book",SPos.Noun)
//> List(SKey("publication%1:10:00::"))

SKey("publication%1:10:00::").getRelation(SRelationType.hypernym) //Hypernyms

SKey("publication%1:10:00::").getRelation(SRelationType.hyponym) //Hyponyms etc

SWordNet доступен на GitHub и Sonatype

Вы можете использовать командную строку. Команда "wn book -hypen" позволяет получить гипернимки существительной книги. Для меронимов используйте команду "wn book -meron". Также опция -o дает смещение набора. Вот ссылка для получения дополнительной информации.

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