NLTK WordNet: Encontre sinônimos do NLTK WordNet em Python

O que é WordNet?

Wordnet é um leitor de corpus NLTK, um banco de dados lexical para inglês. Pode ser usado para encontrar o significado de palavras, sinônimo ou antônimo. Pode-se defini-lo como um dicionário de inglês semanticamente orientado. É importado com o seguinte comando:

from nltk.corpus import wordnet as guru

Encontre sinônimos do NLTK WordNet em Python

As estatísticas revelam que existem 155287 palavras e 117659 sinônimos conjuntos incluídos no WordNet em inglês.

Diferentes métodos disponíveis com WordNet podem ser encontrados digitando dir(guru)

['_LazyCorpusLoader__args', '_LazyCorpusLoader__kwargs', '_LazyCorpusLoader__load', '_LazyCorpusLoader__name', '_LazyCorpusLoader__reader_cls', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', ' __ge__', '__getattr__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__reduce__' , '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__unicode__', '__weakref__', '_unload', 'subdir', 'unicode_repr']

Vamos entender alguns dos recursos disponíveis no wordnet:

Synset: Também é chamado de conjunto de sinônimos ou coleção de palavras sinônimas. Vamos verificar um exemplo

from nltk.corpus import wordnet
syns = wordnet.synsets("dog")
print(syns)

Saída:

[Synset('dog.n.01'), Synset('frump.n.01'), Synset('dog.n.03'), Synset('cad.n.01'), Synset('frank.n.02'), Synset('pawl.n.01'), Synset('andiron.n.01'), Synset('chase.v.01')]

Relações Lexicais: Estas são relações semânticas que são recíprocas. Se existe uma relação entre {x1,x2,…xn} e {y1,y2,…yn} então também existe uma relação entre {y1,y2,…yn} e {x1,x2,…xn}. Por exemplo, sinônimo é o oposto de antônimo ou hiperônimos e hipônimo são um tipo de conceito lexical.

Vamos escrever um programa usando python para encontrar sinônimo e antônimo da palavra “ativo” usando Wordnet.

from nltk.corpus import wordnet
	synonyms = []
	antonyms = []

	for syn in wordnet.synsets("active"):
		for l in syn.lemmas():
			synonyms.append(l.name())
			if l.antonyms():
				 antonyms.append(l.antonyms()[0].name())

	print(set(synonyms))
	print(set(antonyms))

A saída do código:

{'dinâmico', 'lutando', 'pronto para combate', 'active_voice', 'active_agent', 'participando', 'vivo', 'ativo'} - Sinônimo

{'estativo', 'passivo', 'quieto', 'passive_voice', 'extinto', 'adormecido', 'inativo'} - Antônimo

Saída do código do programa Wordnet

Explicação do código

  1. Wordnet é um corpus, portanto é importado do ntlk.corpus
  2. A lista de sinônimos e antônimos é considerada vazia e será usada para anexar
  3. Sinônimos da palavra ativa são pesquisados ​​nos synsets do módulo e anexados na lista de sinônimos. O mesmo processo é repetido para o segundo.
  4. A saída é impressa

Conclusão

WordNet é um banco de dados léxico que tem sido usado por um grande motor de busca. No WordNet, informações sobre uma determinada palavra ou frase podem ser calculadas, como

  • sinônimo (palavras com o mesmo significado)
  • hiperônimos (o termo genérico usado para designar uma classe de especificidades (ou seja, refeição é um café da manhã), hipônimos (arroz é uma refeição)
  • holônimos (proteínas, carboidratos fazem parte da refeição)
  • merônimos (a refeição faz parte da ingestão diária de alimentos)

WordNet também fornece informações sobre termos coordenados, derivados, sentidos e muito mais. É usado para encontrar semelhanças entre duas palavras quaisquer. Ele também contém informações sobre os resultados da palavra relacionada. Resumindo, pode-se tratá-lo como Dicionário ou Tesauro. Indo mais fundo no wordnet, ele é dividido em quatro sub-redes totais, como

  1. Substantivo
  2. Verbo
  3. Adjetivo
  4. Advérbio

Pode ser utilizado na área de inteligência artificial para análise de texto. Com a ajuda do Wordnet, você pode criar seu corpus para verificação ortográfica, tradução de idiomas, detecção de spam e muito mais.

Da mesma forma, você pode usar esse corpus e moldá-lo para funcionar com alguma funcionalidade dinâmica. Isso é como um corpus pronto para você. Você pode usá-lo do seu jeito.