synonyms español python nltk wordnet

synonyms - nltk python español



Cómo obtener sinónimos de nltk WordNet Python (5)

El programa más simple para imprimir los sinónimos de una palabra dada.

from nltk.corpus import wordnet for syn in wordnet.synsets("good"): for name in syn.lemma_names(): print(name)

WordNet es genial, pero me cuesta mucho conseguir sinónimos en nltk. Si busca similar a la palabra ''pequeño'' como here , muestra todos los sinónimos.

Básicamente, solo necesito saber lo siguiente: wn.synsets(''word'')[i].option() ¿Dónde puede haber hipernimos y antónimos, pero cuál es la opción para obtener sinónimos?


Esto funciono para mi

wordnet.synsets(''change'')[0].hypernyms()[0].lemma_names()


Puedes usar wordnet.synset y lemmas para obtener todos los sinónimos:

ejemplo:

from itertools import chain from nltk.corpus import wordnet synonyms = wordnet.synsets(text) lemmas = set(chain.from_iterable([word.lemma_names() for word in synonyms]))

Manifestación:

>>> synonyms = wordnet.synsets(''change'') >>> set(chain.from_iterable([word.lemma_names() for word in synonyms])) set([u''interchange'', u''convert'', u''variety'', u''vary'', u''exchange'', u''modify'', u''alteration'', u''switch'', u''commute'', u''shift'', u''modification'', u''deepen'', u''transfer'', u''alter'', u''change''])


Si desea que los sinónimos lemma_names() también conocidos como los lemas que forman el conjunto), puede obtenerlos con lemma_names() :

>>> for ss in wn.synsets(''small''): >>> print(ss.name(), ss.lemma_names()) small.n.01 [''small''] small.n.02 [''small''] small.a.01 [''small'', ''little''] minor.s.10 [''minor'', ''modest'', ''small'', ''small-scale'', ''pocket-size'', ''pocket-sized''] little.s.03 [''little'', ''small''] small.s.04 [''small''] humble.s.01 [''humble'', ''low'', ''lowly'', ''modest'', ''small''] ...


Ya tienes los sinónimos. Eso es lo que es un Synset .

>>> wn.synsets(''small'') [Synset(''small.n.01''), Synset(''small.n.02''), Synset(''small.a.01''), Synset(''minor.s.10''), Synset(''little.s.03''), Synset(''small.s.04''), Synset(''humble.s.01''), Synset(''little.s.07''), Synset(''little.s.05''), Synset(''small.s.08''), Synset(''modest.s.02''), Synset(''belittled.s.01''), Synset(''small.r.01'')]

Esa es la misma lista de entradas de nivel superior que le proporcionó la interfaz web.

Si también desea la lista "similar a", no es lo mismo que los sinónimos. Para eso, llamas similar_tos() en cada Synset .

Entonces, para mostrar la misma información que el sitio web, comience con algo como esto:

for ss in wn.synsets(''small''): print(ss) for sim in ss.similar_tos(): print('' {}''.format(sim))

Por supuesto, el sitio web también imprime la parte del habla ( sim.pos ), la lista de lemas ( sim.lemma_names ), la definición ( sim.definition ) y los ejemplos ( sim.examples ) para cada sincronización en ambos niveles. y los agrupa por partes del discurso, y se agrega en enlaces a otras cosas que puedes seguir, y así sucesivamente. Pero eso debería ser suficiente para que comiences.