Как программно получить доступ к иерархии 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 дает смещение набора. Вот ссылка для получения дополнительной информации.