Wyszukiwanie słów w Wordnet

Co to jest Wordnet?

Wordnet to duża leksykalna baza danych języka angielskiego, która została stworzona przez Princeton. Jest częścią korpusu NLTK. Rzeczowniki, czasowniki, przymiotniki i przysłówki są pogrupowane w zbiór synonimów, tj. Synonimów poznawczych. Tutaj każdy zestaw synsetów wyraża odrębne znaczenie. Oto kilka przypadków użycia Wordnetu -

  • Można go użyć do wyszukania definicji słowa
  • Możemy znaleźć synonimy i antonimy słowa
  • Relacje między wyrazami i podobieństwa można badać za pomocą Wordnet
  • Ujednoznacznienie w sensie słowa dla tych słów, które mają wiele zastosowań i definicji

Jak zaimportować Wordnet?

Wordnet można zaimportować za pomocą następującego polecenia -

from nltk.corpus import wordnet

Aby uzyskać bardziej kompaktowe polecenie, użyj następującego -

from nltk.corpus import wordnet as wn

Instancje synchronizacji

Synset to grupa słów synonimów, które wyrażają to samo pojęcie. Kiedy używasz Wordnetu do wyszukiwania słów, otrzymasz listę instancji Synset.

wordnet.synsets (słowo)

Aby uzyskać listę synchronizacji, możemy wyszukać dowolne słowo w Wordnet za pomocą wordnet.synsets(word). Na przykład, w następnym przepisie Pythona, będziemy szukać Synset dla „psa” wraz z niektórymi właściwościami i metodami Synsetu -

Przykład

Najpierw zaimportuj wordnet w następujący sposób -

from nltk.corpus import wordnet as wn

Teraz podaj słowo, dla którego chcesz wyszukać Synset -

syn = wn.synsets('dog')[0]

Tutaj używamy metody name (), aby uzyskać unikalną nazwę dla synsetu, której można użyć do bezpośredniego pobrania Synset -

syn.name()
Output:
'dog.n.01'

Następnie używamy metody definition (), która poda nam definicję słowa -

syn.definition()
Output:
'a member of the genus Canis (probably descended from the common wolf) that has
been domesticated by man since prehistoric times; occurs in many breeds'

Inną metodą są przykłady (), które podają przykłady związane ze słowem -

syn.examples()
Output:
['the dog barked all night']

Kompletny przykład wdrożenia

from nltk.corpus import wordnet as wn
syn = wn.synsets('dog')[0]
syn.name()
syn.definition()
syn.examples()

Pierwsze Hypernyms

Zestawy synchronizowane są zorganizowane w strukturę drzewa dziedziczenia podobną do struktury, w której Hypernyms reprezentuje bardziej abstrakcyjne terminy while Hyponymsreprezentuje bardziej szczegółowe terminy. Jedną z ważnych rzeczy jest to, że to drzewo można prześledzić aż do hipernego korzenia. Zrozummy tę koncepcję za pomocą następującego przykładu -

from nltk.corpus import wordnet as wn
syn = wn.synsets('dog')[0]
syn.hypernyms()

Wynik

[Synset('canine.n.02'), Synset('domestic_animal.n.01')]

Tutaj widzimy, że psy i zwierzęta domowe są hiperonimami słowa „pies”.

Teraz możemy znaleźć następujące hiponimy słowa `` pies '' -

syn.hypernyms()[0].hyponyms()

Wynik

[
   Synset('bitch.n.04'),
   Synset('dog.n.01'),
   Synset('fox.n.01'),
   Synset('hyena.n.01'),
   Synset('jackal.n.01'),
   Synset('wild_dog.n.01'),
   Synset('wolf.n.01')
]

Z powyższego wynika, że ​​„pies” jest tylko jednym z wielu hiponimów „zwierzę domowe”.

Aby znaleźć źródło tych wszystkich, możemy użyć następującego polecenia -

syn.root_hypernyms()

Wynik

[Synset('entity.n.01')]

Z powyższego wyniku widać, że ma tylko jeden root.

Kompletny przykład wdrożenia

from nltk.corpus import wordnet as wn
syn = wn.synsets('dog')[0]
syn.hypernyms()
syn.hypernyms()[0].hyponyms()
syn.root_hypernyms()

Wynik

[Synset('entity.n.01')]

Lematy w Wordnecie

W językoznawstwie forma kanoniczna lub forma morfologiczna słowa nazywana jest lematem. Aby znaleźć synonim, a także antonim słowa, możemy również wyszukać lematy w WordNet. Zobaczmy, jak to zrobić.

Znajdowanie synonimów

Korzystając z metody lemma (), możemy znaleźć liczbę synonimów Synsetu. Zastosujmy tę metodę do synchronizacji `` psa '' -

Przykład

from nltk.corpus import wordnet as wn
syn = wn.synsets('dog')[0]
lemmas = syn.lemmas()
len(lemmas)

Wynik

3

Powyższy wynik pokazuje, że „pies” ma trzy lematy.

Uzyskanie nazwy pierwszego lematu w następujący sposób -

lemmas[0].name()
Output:
'dog'

Uzyskanie nazwy drugiego lematu w następujący sposób -

lemmas[1].name()
Output:
'domestic_dog'

Uzyskanie nazwy trzeciego lematu w następujący sposób -

lemmas[2].name()
Output:
'Canis_familiaris'

W rzeczywistości Synset reprezentuje grupę lematów, które mają podobne znaczenie, podczas gdy lemat reprezentuje odrębną formę słowa.

Znajdowanie antonimów

W WordNet niektóre lematy mają również antonimy. Na przykład słowo „dobry” ma łącznie 27 synetów, w tym 5 ma lematy z antonimami. Znajdźmy antonimy (gdy słowo „dobry” zostało użyte jako rzeczownik, a słowo „dobre” jako przymiotnik).

Przykład 1

from nltk.corpus import wordnet as wn
   syn1 = wn.synset('good.n.02')
   antonym1 = syn1.lemmas()[0].antonyms()[0]
antonym1.name()

Wynik

'evil'
antonym1.synset().definition()

Wynik

'the quality of being morally wrong in principle or practice'

Powyższy przykład pokazuje, że słowo „dobre” użyte jako rzeczownik ma pierwszy antonim „zło”.

Przykład 2

from nltk.corpus import wordnet as wn
   syn2 = wn.synset('good.a.01')
   antonym2 = syn2.lemmas()[0].antonyms()[0]
antonym2.name()

Wynik

'bad'
antonym2.synset().definition()

Wynik

'having undesirable or negative qualities’

Powyższy przykład pokazuje, że słowo „dobry” użyte jako przymiotnik ma pierwszy antonim „zły”.