Pour trouver le haut hypernym de toute synset, utilisez la fonction Synset.root_hypernyms()
, par exemple:
>>> from nltk.corpus import wordnet as wn
>>> wn.synsets('car')[0].root_hypernyms()
[Synset('entity.n.01')]
>>> wn.synsets('love')[0].root_hypernyms()
[Synset('entity.n.01')]
>>> wn.synsets('love', 'v')[0].root_hypernyms()
[Synset('love.v.01')]
Il semble qu'il n'y a pas hypernym global/parapluie qui couvre tous les verbs
, contrairement à nouns
qui a couvert par entity.n.01
:
>>> root_hypernyms_of_nouns = Counter(chain(*[ss.root_hypernyms() for ss in wn.all_synsets(pos='n')]))
>>> len(root_hypernyms_of_nouns)
1
>>> root_hypernyms_of_nouns.items()
[(Synset('entity.n.01'), 82115)]
Mais vous pouvez essayer de parcourir tous les verbes, par exemple:
wn.all_synsets(pos='v')
et essayer de trouver les plus haut hyperonymes pour les verbes (ce sera une liste assez importante):
>>> from collections import Counter
>>> from itertools import chain
>>> from collections import Counter
>>> root_hypernyms_of_verbs = Counter(chain(*[ss.root_hypernyms() for ss in wn.all_synsets(pos='v')]))
>>> root_hypernyms_of_verbs.most_common(10)
[(Synset('change.v.01'), 1704), (Synset('change.v.02'), 1295), (Synset('act.v.01'), 1083), (Synset('move.v.02'), 1027), (Synset('make.v.03'), 659), (Synset('travel.v.01'), 526), (Synset('think.v.03'), 451), (Synset('transfer.v.05'), 420), (Synset('move.v.03'), 329), (Synset('connect.v.01'), 262)]
>>> root_hypernyms_of_verbs.keys() # This will return all root_hypernyms.
Visuwords a un graphique très joli interactif que vous pouvez utiliser pour regarder à travers la hiérarchie WordNet manuellement, http://visuwords.com/entity
Belle question !! – alvas