Je l'ai peut-être manqué, mais existe-t-il une fonction pour accéder à l'objet Synset
partir de l'interface wordnet NLTK à partir de la clé de sens ?
S'il n'y en a pas, pourrions-nous exposer une fonction qui peut y parvenir dans nltk.corpus.wordnet
? Par exemple https://stackoverflow.com/questions/48170666/how-to-get-the-gloss-given-sense-key-using-nltk-wordnet/
Idéalement, il serait bon d'avoir des fonctionnalités pour accéder aux objets Synset
utilisant :
offset-pos
, par exemple 1433493-a
-> Synset('long.a.02')
sense_key
, par exemple long%3:00:02::
-> Synset('long.a.02')
Actuellement, nous avons le synset_from_pos_and_offset()
pour (1).
Il existe une autre fonction ( _synset_from_pos_and_line
) qui lit la ligne suivante pour renvoyer Synset('long.a.02')
:
01433493 00 a 01 long 1 016 = 05129201 n 0000 + 05133287 n 0101 ! 01436003 a 0101 & 01434007 a 0000 & 01434218 a 0000 & 01434530 a 0000 & 01434717 a 0000 & 01434841 a 0000 & 01434966 a 0000 & 01435060 a 0000 & 01435189 a 0000 & 01435290 a 0000 & 01435399 a 0000 & 01435507 a 0000 & 01435675 a 0000 & 01435891 a 0000 | primarily spatial sense; of relatively great or greater than average spatial extension or extension as specified; "a long road"; "a long distance"; "contained many long words"; "ten miles long"
mais ce n'est pas la clé des sens.
J'aimerais travailler là-dessus !
@craaaa Désolé pour la réponse tardive,
N'hésitez pas à travailler dessus et à créer un PR par la suite.
P/S : Ne vous inquiétez pas de casser quoi que ce soit, il y aura des vérifications et des critiques avant de fusionner le code.
Implémenté la fonction suggérée dans le stackoverflow, mais cela ne semblait pas correspondre au bon sens -- par exemple, synset_from_sense_key('afraid%3:00:00::')
renvoyé afraid.a.04
au lieu de afraid.a.01
. Ce problème s'étend également à d'autres points de vente. (Les clés de détection ont été obtenues à partir de Wordnet )
Au lieu de cela, l'utilisation de la méthode indiquée dans la documentation SemCor semble correspondre correctement - il existe actuellement une fonction lemma_from_key(key)
qui semble prendre quelque chose de similaire à une clé de détection. Cependant, lemma_from key(key)
ne supporte pas les satellites adjectifs (par exemple afraid%3:00:02:concerned:00
). Je peux certainement implémenter un wrapper autour de lemma_from_key(key)
pour résoudre ce problème et renvoyer un Synset
.
@craaaa. Je pense qu'il y a toujours un problème avec les satellites adjectifs. J'ai essayé d'utiliser la fonction synset_from_sense_key et voici l'erreur :
Fichier "/home/izorar/anaconda3/lib/python3.7/site-packages/nltk/corpus/reader/wordnet.py", ligne 1356, dans le synset raise WordNetError(message % lemma) WordNetError : adjectif satellite demandé mais uniquement en clair adjectif trouvé pour le lemme 'premier'
Une idée sur la façon de corriger l'erreur?
Commentaire le plus utile
Implémenté la fonction suggérée dans le stackoverflow, mais cela ne semblait pas correspondre au bon sens -- par exemple,
synset_from_sense_key('afraid%3:00:00::')
renvoyéafraid.a.04
au lieu deafraid.a.01
. Ce problème s'étend également à d'autres points de vente. (Les clés de détection ont été obtenues à partir de Wordnet )Au lieu de cela, l'utilisation de la méthode indiquée dans la documentation SemCor semble correspondre correctement - il existe actuellement une fonction
lemma_from_key(key)
qui semble prendre quelque chose de similaire à une clé de détection. Cependant,lemma_from key(key)
ne supporte pas les satellites adjectifs (par exempleafraid%3:00:02:concerned:00
). Je peux certainement implémenter un wrapper autour delemma_from_key(key)
pour résoudre ce problème et renvoyer unSynset
.