NLTK WordNet: Encontre sinônimos do NLTK WordNet em Python
⚡ Resumo Inteligente
O WordNet é um banco de dados lexical e leitor de corpus NLTK para inglês que agrupa substantivos, verbos, adjetivos e advérbios em conjuntos de sinônimos, permitindo... Python Os programas consultam sinônimos, antônimos, hiperônimos e significados de palavras para processamento de linguagem natural.
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ônimos ou antônimos. Pode ser definido como um dicionário de inglês com orientação semântica. O WordNet é importado com o seguinte comando:
from nltk.corpus import wordnet as guru
Como o WordNet é distribuído como um corpus pronto para uso, você pode carregá-lo uma única vez e começar imediatamente a consultar relações entre palavras sem precisar construir nenhum dicionário.
Encontre sinônimos do NLTK WordNet em Python
As estatísticas revelam que existem 155287 palavras e 117659 sinônimos Os conjuntos incluídos no WordNet em inglês. Os diferentes métodos disponíveis no WordNet podem ser encontrados por typing dir(guru), que lista todos os atributos de carregamento e métodos auxiliares expostos pelo leitor de corpus.
Conjunto de sinônimos: Também é chamado de conjunto de sinônimos ou coleção de palavras sinônimas. Vejamos 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: Essas são relações semânticas 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, enquanto hiperônimos e hipônimos são um tipo de conceito lexical.
Vamos escrever um programa usando Python Para encontrar sinônimos e antônimos da palavra "ativo" usando o 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:
{'dynamic', 'fighting', 'combat-ready', 'active_voice', 'active_agent', 'participating', 'alive', 'active'} -- Synonym
{'stative', 'passive', 'quiet', 'passive_voice', 'extinct', 'dormant', 'inactive'} -- Antonym
Explicação do código:
- O WordNet é um corpus, portanto é importado do pacote nltk.corpus.
- Duas listas, uma para sinônimos e outra para antônimos, são consideradas vazias e serão usadas para adicionar elementos.
- Os sinônimos da palavra "ativo" são pesquisados pelo método synsets e adicionados à lista de sinônimos. O mesmo processo coleta antônimos.
- A saída é impressa como Python Configurações que removem entradas duplicadas automaticamente.
Além de sinônimos e antônimos, o WordNet também expõe hiperônimos (termos mais abrangentes), hipônimos (termos mais específicos), holônimos e merônimos, de modo que uma única consulta pode posicionar uma palavra dentro de toda uma hierarquia de relações. Essas relações tornam o WordNet um dicionário de sinônimos prático para corretores ortográficos, tradução de idiomas, detecção de spam e outras tarefas de análise de texto em inteligência artificial.

