Posso ter perdido, mas há uma função para acessar o objeto Synset
da interface NLTK wordnet da chave de sentido ?
Se não houver, poderíamos expor uma função que pode fazer isso em nltk.corpus.wordnet
? Por exemplo, https://stackoverflow.com/questions/48170666/how-to-get-the-gloss-given-sense-key-using-nltk-wordnet/
Idealmente, seria bom ter funcionalidades para acessar objetos Synset
usando:
offset-pos
, por exemplo, 1433493-a
-> Synset('long.a.02')
sense_key
, por exemplo, long%3:00:02::
-> Synset('long.a.02')
Atualmente, temos synset_from_pos_and_offset()
para (1).
Há outra função ( _synset_from_pos_and_line
) que lê a seguinte linha para retornar 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"
mas não é a chave dos sentidos.
Eu gostaria de trabalhar nisso!
@craaaa Desculpe pelo atraso na resposta, estava ausente por um tempo.
Sinta-se à vontade para trabalhar nisso e criar um PR depois.
P / S: Não se preocupe em quebrar nada, haverá verificações e revisões antes de mesclar o código.
Implementada a função sugerida no stackoverflow, mas ela não parecia mapear os sentidos corretos - por exemplo, synset_from_sense_key('afraid%3:00:00::')
retornou afraid.a.04
vez de afraid.a.01
. Esse problema se estende a outros PDVs também. (As chaves de detecção foram obtidas na
Em vez disso, o uso do método mostrado na documentação do lemma_from_key(key)
que parece receber algo semelhante a uma tecla de detecção. No entanto, lemma_from key(key)
não suporta satélites adjetivos (por exemplo, afraid%3:00:02:concerned:00
). Definitivamente, posso implementar um invólucro em torno de lemma_from_key(key)
para consertar isso e retornar um Synset
.
@craaaa. Acho que ainda há um problema com satélites de adjetivo. Tentei usar a função synset_from_sense_key e aqui está o erro:
Arquivo "/home/izorar/anaconda3/lib/python3.7/site-packages/nltk/corpus/reader/wordnet.py", linha 1356, em synset raise WordNetError (mensagem% lemma) WordNetError: adjetivo satélite solicitado, mas apenas simples adjetivo encontrado para o lema 'primeiro'
Alguma ideia de como consertar o erro?
Comentários muito úteis
Implementada a função sugerida no stackoverflow, mas ela não parecia mapear os sentidos corretos - por exemplo,
synset_from_sense_key('afraid%3:00:00::')
retornouafraid.a.04
vez deafraid.a.01
. Esse problema se estende a outros PDVs também. (As chaves de detecção foram obtidas naEm vez disso, o uso do método mostrado na documentação do
lemma_from_key(key)
que parece receber algo semelhante a uma tecla de detecção. No entanto,lemma_from key(key)
não suporta satélites adjetivos (por exemplo,afraid%3:00:02:concerned:00
). Definitivamente, posso implementar um invólucro em torno delemma_from_key(key)
para consertar isso e retornar umSynset
.