Wordnet'te kelimeleri aramak

Wordnet nedir?

Wordnet, Princeton tarafından oluşturulan büyük bir İngilizce sözlük veritabanıdır. NLTK külliyatının bir parçasıdır. İsimler, fiiller, sıfatlar ve zarfların tümü eşanlamlılar kümesi halinde, yani bilişsel eşanlamlılar halinde gruplandırılmıştır. Burada her bir sentez kümesi ayrı bir anlam ifade eder. Aşağıda Wordnet'in bazı kullanım örnekleri verilmiştir -

  • Bir kelimenin tanımına bakmak için kullanılabilir
  • Bir kelimenin eş ve zıt anlamlılarını bulabiliriz
  • Kelime ilişkileri ve benzerlikler Wordnet kullanılarak keşfedilebilir
  • Birden fazla kullanım ve tanıma sahip olan kelimeler için kelime anlamında belirsizlik giderme

Wordnet nasıl içe aktarılır?

Wordnet, aşağıdaki komutun yardımıyla içe aktarılabilir -

from nltk.corpus import wordnet

Daha kompakt komut için aşağıdakileri kullanın -

from nltk.corpus import wordnet as wn

Örnekleri senkronize et

Eşzamanlı küme, aynı kavramı ifade eden eş anlamlı sözcük gruplarıdır. Kelimeleri aramak için Wordnet'i kullandığınızda, Synset örneklerinin bir listesini alırsınız.

wordnet.synsets (word)

Synsets'in bir listesini almak için, kullanarak Wordnet'teki herhangi bir kelimeye bakabiliriz wordnet.synsets(word). Örneğin, bir sonraki Python tarifinde, Synset'in bazı özellikleri ve yöntemleriyle birlikte 'köpek' için Synset'e bakacağız -

Misal

İlk olarak, wordnet'i aşağıdaki gibi içe aktarın -

from nltk.corpus import wordnet as wn

Şimdi, Synset'e bakmak istediğiniz kelimeyi sağlayın -

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

Burada, Synset'i doğrudan almak için kullanılabilecek benzersiz bir synset ismini elde etmek için name () yöntemini kullanıyoruz -

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

Sonra, bize kelimenin tanımını verecek olan definition () yöntemini kullanıyoruz -

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'

Başka bir yöntem de, bize - kelimesiyle ilgili örnekleri verecek olan örneklerdir ().

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

Eksiksiz uygulama örneği

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

Hypernyms Alma

Synsets, miras ağacı benzeri bir yapıda düzenlenir. Hypernyms daha soyutlanmış terimleri temsil ederken Hyponymsdaha spesifik terimleri temsil eder. Önemli şeylerden biri, bu ağacın bir kök hiperisine kadar izlenebilmesidir. Aşağıdaki örnek yardımıyla kavramı anlayalım -

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

Çıktı

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

Burada, köpek ve evcil_hayvanın 'köpek' hiperimleri olduğunu görebiliriz.

Şimdi, 'köpek' hiponimlerini aşağıdaki gibi bulabiliriz -

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

Çıktı

[
   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')
]

Yukarıdaki çıktıdan, "köpek" in "yerli_hayvanlar" ın birçok hiponiminden yalnızca biri olduğunu görebiliriz.

Tüm bunların kökünü bulmak için aşağıdaki komutu kullanabiliriz -

syn.root_hypernyms()

Çıktı

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

Yukarıdaki çıktıdan sadece bir kökü olduğunu görebiliriz.

Eksiksiz uygulama örneği

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

Çıktı

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

Wordnet'te Lemmas

Dilbilimde, bir kelimenin kanonik biçimi veya morfolojik biçimi lemma olarak adlandırılır. Bir kelimenin eşanlamlısı ve zıt anlamlılığını bulmak için WordNet'te lemaları da arayabiliriz. Nasıl olduğunu görelim.

Eşanlamlıları Bulmak

Lemma () yöntemini kullanarak bir Synset'in eşanlamlılarının sayısını bulabiliriz. Bu yöntemi 'köpek' synset'ine uygulayalım -

Misal

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

Çıktı

3

Yukarıdaki çıktı, 'köpek'in üç leması olduğunu gösterir.

İlk lemmanın adını aşağıdaki gibi almak -

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

İkinci lemmanın adını aşağıdaki gibi almak -

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

Üçüncü lemmanın adını aşağıdaki gibi almak -

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

Aslında, bir Synset, hepsi benzer anlama sahip bir lemma grubunu temsil ederken, bir lemma farklı bir kelime biçimini temsil eder.

Zıt Anlamlıları Bulmak

WordNet'te bazı sözcüklerin zıt anlamlıları da vardır. Örneğin, 'iyi' kelimesinin toplam 27 sentezi vardır, bunlardan 5'inde zıt anlamlı sözcükler vardır. Zıtlıkları bulalım ('iyi' kelimesi isim olarak ve 'iyi' kelimesi sıfat olarak kullanıldığında).

örnek 1

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

Çıktı

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

Çıktı

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

Yukarıdaki örnek, isim olarak kullanıldığında 'iyi' kelimesinin ilk zıt 'kötü' olduğunu gösterir.

Örnek 2

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

Çıktı

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

Çıktı

'having undesirable or negative qualities’

Yukarıdaki örnek, sıfat olarak kullanıldığında 'iyi' kelimesinin ilk zıtlığı 'kötü' olduğunu gösterir.