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
Explicação do código
- Wordnet é um corpus, portanto é importado do ntlk.corpus
- A lista de sinônimos e antônimos é considerada vazia e será usada para anexar
- 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.
- 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
- Substantivo
- Verbo
- Adjetivo
- 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.