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.