Você pode usar o WordNet junto com o NLTK para identificar os significados de palavras, sinônimos, antônimos entre outros.
Vejamos um exemplos.
primeiro você importa o wordnet.
from nltk.corpus import wordnet
usamos um termo “program” para encontrar synsets.
syns = wordnet.synsets("program")
imprimimos alguns exemplos das saídas.
print(syns[0].name()) print(syns[0].lemmas()[0].name()) print(syns[0].definition()) print(syns[0].examples())
aqui pode-se discernir sinônimo e antônimo.. os lemas serão sinônimos, e então você pode usa antônimo para encontrar s antônimos para os lemas. Como tal, pode-se preencher algumas listas como:
synonyms = [] antonyms = [] for syn in wordnet.synsets("good"): for l in syn.lemmas(): synonyms.append(l.name()) if l.antonyms(): antonyms.append(l.antonyms()[0].name())
Os resultados mostrarão que
print(set(synonyms)) print(set(antonyms))
comparando o substantivo “ship” e “boat”.
w1 = wordnet.synset('ship.n.01') w2 = wordnet.synset('boat.n.01') print(w1.wup_similarity(w2)) w1 = wordnet.synset('ship.n.01') w2 = wordnet.synset('car.n.01') print(w1.wup_similarity(w2)) w1 = wordnet.synset('ship.n.01') w2 = wordnet.synset('cat.n.01') print(w1.wup_similarity(w2))
OUTPUT
Saída gerada do código acima “exemplo”.
plan.n.01 plan a series of steps to be carried out or goals to be accomplished ['they drew up a six-step plan', 'they discussed plans for a new bond issue'] {'upright', 'soundly', 'proficient', 'skillful', 'respectable', 'full', 'in_effect', 'dependable', 'thoroughly', 'sound', 'estimable', 'secure', 'honest', 'well', 'adept', 'goodness', 'unspoiled', 'near', 'commodity', 'salutary', 'expert', 'undecomposed', 'dear', 'serious', 'good', 'right', 'skilful', 'safe', 'trade_good', 'effective', 'beneficial', 'unspoilt', 'just', 'in_force', 'honorable', 'ripe', 'practiced'} {'bad', 'evilness', 'badness', 'evil', 'ill'} 0.9090909090909091 0.6956521739130435 0.32
Fonte: PythonProgramming
Até a próxima 🙂