NLTK прыгает по именам синсетов — python

Из NLTK WordNet API:

>>> from nltk.corpus import wordnet as wn
>>> for i in wn.synsets('discover'):
...     print i, i.offset
... 
Synset('detect.v.01') 2154508
Synset('learn.v.02') 598954
Synset('discover.v.03') 1637982
Synset('discover.v.04') 721437
Synset('fall_upon.v.01') 2286687
Synset('unwrap.v.02') 933821
Synset('discover.v.07') 2128066
Synset('identify.v.05') 652346

>>> wn.synset('discover.v.8')
Synset('identify.v.05')

Из файла index.verb из WN3.0 имеем:

discover v 8 6 @ ~ * > $ + 8 7 02154508 00598954 01637982 00721437 02286687 00933821 02128066 00652346 

Я проверил API WordNet (http://www.nltk.org/_modules/nltk/corpus/reader/wordnet.html), но особо нечего сказать, как происходит сопоставление discover.v.8 с identify.v.5.

Кто-нибудь может объяснить, как произошло сопоставление?

Как извлечь список этих сопоставлений?


person alvas    schedule 03.06.2014    source источник
comment
Нравится точный путь от Discover.v.8 до Ident.v.5?   -  person Daniel    schedule 04.06.2014
comment
да, а как извлечь список этих синсетов?   -  person alvas    schedule 04.06.2014


Ответы (1)


Я не уверен в том, что на самом деле означает ваш вопрос. Похоже, вы не понимаете, почему обнаружение связано с идентификацией, верно? Бывает так, что WordNet Synset является "НАБОРОМ СИНОНИМОВ", поэтому для одного synset перечислено так много слов.

Если вы проверяете wordnet через браузер (WNB) или через онлайн-версия вы увидите, что список синсетов, которые у вас есть для "обнаружения", это просто список всех синсетов из wordnet, в которых есть слово обнаружить на них. По какой-то причине внутри NLTk описывает синсет только с первым словом, появляющимся в списке связанных слов синсета.

Другими словами, Synset('discover.v.8') — это тот же синсет, что и Synset('identify.v.05'), только с разных точек зрения. 8-й смысл для обнаружения в качестве ГЛАГЛА также является 5-м смыслом для идентификации в качестве ГЛАГЛА. Внутри оба используют один и тот же S-ID, вот где они связаны.

Список этих сопоставлений будет просто списком идентификаторов Synset, связанных со словом.

person Felipe Leão    schedule 04.06.2014
comment
я понимаю концепцию synset и концепцию многих лемм для одного идентификатора, но, похоже, есть основной список лемм, который не имеет документации. Идентификатор 652346 всегда будет отображать identify.v.5, а не discover.v.8 в качестве имени в NLTK API, так как же извлечь это сопоставление? - person alvas; 04.06.2014