Doğal Dil işlemede Parçalama nedir?

Kaynak Düğüm: 1878431

Değerli okurlarım,

Bu blogda Python'da hem teorik hem de pratik olarak yığınlamayı tartışacağım.

Öyleyse başlayalım…

NOT: Uygulama için, çıktı ayrı bir pencerede açılan bir ağaç çizimi olduğundan Python IDLE kullanmak daha iyidir.

Fuar ajandası

  • Parçalamak nedir?
  • Parçalama nerelerde kullanılır?
  • Parçalama türleri
  • Python'da parçalama uygulaması
  • Sonuçlar

Parçalamak nedir?

Parçalama, belirli bir cümlede bulunan konuşmanın bölümlerini ve kısa cümleleri tanımlamak için kullanılan doğal dil işleme süreci olarak tanımlanır.

Okuldaki eski güzel İngilizce dilbilgisi derslerimizi hatırlayarak, isim, fiil, sıfat, zarf, edat, bağlaç, zamir ve ünlem olmak üzere sekiz konuşma parçası olduğunu unutmayın. Ayrıca, yukarıdaki parçalama tanımında kısa ifadeler, konuşmanın bu bölümlerinden herhangi birinin dahil edilmesiyle oluşturulan ifadelere atıfta bulunur.

Örneğin, isim öbeklerini veya tek başına isimleri, sıfatları veya sıfat öbeklerini vb. belirlemek ve böylece gruplamak için parçalama yapılabilir. Aşağıdaki cümleyi düşünün:

"Kahvaltıda hamburger ve hamur işleri yedim."

Bu durumda isim öbeklerini gruplamak ya da parçalamak istersek, cümlenin isim ya da isim grupları olan “burger”, “hamur işleri” ve “öğle yemeği”ni alacağız.

Parçalama nerelerde kullanılır?

Nerede yaygın olarak kullanıldığını bilmeden bir şeyi neden öğrenmek isteyelim ki?! Blogun bu bölümünde tartışılan uygulamalara bakmak, sonuna kadar meraklı kalmanıza yardımcı olacaktır!

Parçalama, belirli bir cümleden gerekli tümceleri elde etmek için kullanılır. Bununla birlikte, POS etiketleme, yalnızca cümlenin her kelimesinin ait olduğu konuşma bölümlerini tespit etmek için kullanılabilir.

Belirli bir kelime veya ilgilendiğimiz kelime öbeği etrafında çok sayıda açıklama veya değişiklik yaptığımızda, gerekli tümceyi tek başına almak için yığınlamayı kullanırız ve etrafındaki geri kalanı görmezden geliriz. Bu nedenle, yığınlama, gerekli ifadeleri gruplamanın ve analizimiz için gerekli olmayan tüm değiştiricileri etraflarındaki hariç tutmanın bir yolunu açar. Özetle, yığınlama, önemli kelimeleri uzun açıklamalardan tek başına çıkarmamıza yardımcı olur. Bu nedenle, yığınlama bilgi çıkarmada bir adımdır.

İlginç bir şekilde, NLP'deki bu parçalama işlemi, çeşitli diğer uygulamalara genişletildi; örneğin, belirli bir kategorideki meyveleri, örneğin proteince zengin meyveleri bir grup olarak, vitamince zengin meyveleri başka bir grup olarak gruplamak vb. Ayrıca, yığınlama aynı zamanda benzer arabaları gruplamak için de kullanılabilir, örneğin otomatik vitesi destekleyen arabaları bir grupta ve diğerlerini manuel vitesi destekleyen arabaları başka bir yığında vb.

Parçalama Türleri

Genel olarak iki tür yığınlama vardır:

  • parçalamak
  • parçalamak

Parçalamak:

Burada derinlere dalmayız; bunun yerine, bilgilerin yalnızca bir özetinden memnunuz. Sadece verilen veriler hakkında kısa bir fikir edinmemize yardımcı olur.

Parçalamak:

Önceki yığınlama türünden farklı olarak, parçalama, ayrıntılı bilgi almamıza yardımcı olur.

Bu nedenle, sadece bir içgörü istiyorsanız, “parçalara ayırmayı” düşünün, aksi takdirde “parçalara ayırmayı” tercih edin.

Python'da parçalama uygulaması

Analiziniz için verilen metinden tüm fiilleri çıkarmak istediğiniz bir durum hayal edin. Bu nedenle, bu durumda, fiil cümlelerinin parçalarını dikkate almalıyız. Bunun nedeni, amacımızın verilen metin parçasından tüm fiil öbeklerini çıkarmak olmasıdır. Parçalama, düzenli ifadeler yardımıyla yapılır.

“Düzenli ifadeler” terimiyle ilk kez karşılaşıyorsanız endişelenmeyin. Aşağıdaki tablo imdadınıza yetişiyor:

sembol

anlam

Örnek E-posta

*

Önceki karakter sıfır veya daha fazla kez olabilir, yani önceki karakter orada olabilir veya olmayabilir.

ab*, ab ile başlayan ve ardından sıfır veya daha fazla sayıda b'nin izlediği tüm girdilerle eşleşir. Desen ab, abb, abbb vb. ile eşleşecektir.

+

Önceki karakter en az bir kez geçmelidir.

a+ a,aa,aaa vb. ile eşleşir.

?

Önceki karakter hiç oluşmayabilir veya yalnızca bir kez ortaya çıkabilir, bu da önceki karakterin isteğe bağlı olduğu anlamına gelir.

ab? ab,abb ile eşleşir ancak abbb vb. ile eşleşmez.

Yukarıdaki tablo, kullanılan en yaygın düzenli ifadeleri içerir. Normal ifadeler komut satırında özellikle dosyaları silerken, bulurken, yeniden adlandırırken veya taşırken çok kullanışlıdır.

Her neyse, bu uygulama için sadece * kullanacağız. Sembolü tanımak için yukarıdaki tabloya bakmaktan çekinmeyin!

En popüler NLP kütüphanesi olan nltk kullanarak parçalama yapacağız. O halde önce import edelim.

içe aktarma nltk

Aşağıda kendi başıma oluşturduğum örnek metni ele alalım. Aşağıdakileri, yığınlamayı uygulamak istediğiniz herhangi bir örnek metinle değiştirmekten çekinmeyin!

sample_text=""" Rama, Sita'yı Lanka'dan kurtarmak için Ravana'yı öldürdü. Ramayan efsanesi en popüler Hint destanıdır. Ramayana'ya dayalı olarak burada Hindistan'da birçok dilde birçok film ve dizi çekildi. """

Açıkça, devam etmeden önce verilerin cümle tokenize edilmesi ve ardından word tokenize edilmesi gerekiyor. Belirteçleştirme, verilen metin parçasını cümle belirteçleştirme durumunda cümleler gibi daha küçük birimlere ayırma sürecinden başka bir şey değildir ve sözcük belirteci durumunda kelimeler.

Tokenizasyonun ardından, her kelimenin konuşma kısmının tanımlanacağı her kelime için POS(part-of-speech) etiketlemesi yapılır. Şimdi, sadece konuşmanın fiil kısmıyla ilgileniyoruz ve aynısını çıkarmak istiyoruz.

Bu nedenle, gerekli düzenli ifadeyi aşağıdaki gibi kullanarak ilgilendiğimiz konuşma bölümünü belirtin:

VB: {}

tokenized=nltk.sent_tokenize(sample_text) for i for tokenized:words=nltk.word_tokenize(i) # print(words)tagged_words=nltk.pos_tag(words) # print(tagged_words) stackGram=r"""VB: {}" "" ChunkParser=nltk.RegexpParser(chunkGram) stacked=chunkParser.parse(tagged_words) Chunked.draw()

Normal ifade (RE), köşeli parantezler () içine alınır ve bunlar da küme parantezleri ({ ve }) içine alınır.

NOT: RE'yi gerekli POS'a göre belirtin

VB, POS fiilinin kısaltmasıdır. VB'den sonraki nokta, VB'den sonraki herhangi bir karakterle eşleşmesi anlamına gelir. Noktadan sonraki soru işareti, B'den sonraki herhangi bir karakterin yalnızca bir kez geçmesi gerektiğini veya hiç olmaması gerektiğini belirtir. Ancak, daha önce gördüğümüz tablodan bu karakter isteğe bağlıdır. Normal ifadeyi bu şekilde çerçevelendirdik çünkü NLTK'da fiil cümleleri aşağıdaki POS etiketlerini içerir:

POS

anlam

VB

Temel biçiminde fiil

VBD

fiil geçmiş zaman kipinde

GBV

şimdiki zamanda fiil

VBN

fiil geçmiş ortaç formunda

VBP

Fiil şimdiki zamanda ama üçüncü tekil şahısta değil

VBZ

Fiil şimdiki zamanda ve üçüncü tekil şahıstır

Böylece fiil cümleleri yukarıdaki POS'lardan herhangi birine ait olabilir. Bu yüzden normal ifade VB olarak çerçevelenir.? yukarıdaki kategorilerin tümünü içerir. RegexpParser paketi, bir POS'un daha önce RE kullanarak bahsettiğimiz gerekli kalıbımızı karşılayıp karşılamadığını kontrol etmek için kullanılır.

Kodun tamamı aşağıdaki gibi görülebilir:

import nltk nltk.download('averaged_perceptron_tagger') sample_text=""" Rama, Sita'yı Lanka'dan kurtarmak için Ravana'yı öldürdü. Ramayan efsanesi en popüler Hint destanıdır. Burada zaten birçok dilde birçok film ve dizi çekildi. Hindistan'da Ramayana'ya dayalı. =r"""VB: {}""" ChunkParser=nltk.RegexpParser(chunkGram) ChunkParser.parse(tagged_words) Chunk.draw()

Sonuçlar

parçalama sonucu
parçalama sonucu

Son olarak, POS'u verilen RE ile eşleşen kelimelerle birlikte kelimelerin POS'unun bir ağaç formunu elde ederiz. Tarafımızdan iletilen örnek metin için elde edilen çıktının anlık görüntüsü yukarıdaki şekillerde görülebilir.

Yalnızca fiil cümleleri için RE'mizi karşılayan kelimelerin çıktıda açıkça vurgulandığına dikkat edin. Böylece fiil öbeklerinin parçalanması başarıyla gerçekleştirilmiştir.

Umarım makalemi faydalı bulmuşsunuzdur.

Teşekkür ederim!

Referanslar

1. Python'da parçalama uygulamak

2. Parçalamanın arkasındaki teori

3. NLP'de bulunan POS'ların tam listesi

Benim hakkımda

Ben Nithyashree V, BTech Bilgisayar Bilimi ve Mühendisliği son sınıf öğrencisiyim. Böyle harika teknolojileri öğrenmeyi ve bunları uygulamaya koymayı, özellikle de toplumun zorlu sorunlarını çözmemize nasıl yardımcı olduklarını gözlemlemeyi seviyorum. İlgi alanlarım arasında Yapay Zeka, Veri Bilimi ve Doğal Dil İşleme bulunmaktadır.

İşte benim LinkedIn profilim: LinkedIn'im

Analytics Vidhya hakkındaki diğer makalelerimi adresinden okuyabilirsiniz. okuyun.

Bu makalede gösterilen medya Analytics Vidhya'ya ait değildir ve Yazarın takdirine bağlı olarak kullanılır.

Kaynak: https://www.analyticsvidhya.com/blog/2021/10/what-is-chunking-in-natural-language-processing/

Zaman Damgası:

Den fazla Analitik Vidhya