NLP Eğitimleri Bölüm -I Temelden İlerlemeye

Kaynak Düğüm: 1581227

Python kullanarak NLP'nin tüm temellerini ve gelişmiş kavramlarını açıklayan bir dizi makale yazmaya karar verdim. Yani NLP'yi okuyarak ve kodlayarak öğrenmek istiyorsanız bu yazı dizisi tam size göre olacak.

NLP'de yeni veya sıfır olan herkes bizimle başlayabilir ve bu makale dizisini takip edebilir.

Kullanılan Kitaplıklar: Keras, Tensorflow, Scikit öğrenme, NLTK, Glove, vb.

Tüm konular, python kodları ve bilim-kit öğrenme, Keras ve TensorFlow gibi popüler derin öğrenme ve makine öğrenimi çerçeveleri kullanılarak açıklanacaktır.

NLP nedir?

Doğal Dil İşleme, bilgisayarların bir kişinin yaptığı gibi dili doğal olarak anlamasını sağlayan bilgisayar biliminin bir parçasıdır. Bu, dizüstü bilgisayarın duyguları, konuşmayı, soruları yanıtlamayı, metin özetlemeyi vb. anlayacağı anlamına gelir. Tarihi ve evrimi hakkında fazla konuşmayacağız. İlgileniyorsanız bunu tercih edin bağlantı.

1. Adım Veri Temizleme

Ham metin verileri, çeşitli kaynaklar temizlenmeden doğrudan gelir. Verileri temiz hale getirmek için birden fazla adım uygularız. Temizlenmemiş metin verileri, sonuçları saptıran işe yaramaz bilgiler içerir, bu nedenle verileri temizlemek için her zaman ilk adım budur. Verileri daha temiz hale getirmek için bazı standart ön işleme teknikleri uygulanmalıdır. Temizlenen veriler, modellerin fazla takılmasını da önler.

Bu yazımızda, metin işleme ve keşifsel veri analizi altında aşağıdaki konuları göreceğiz.

Ham metin verilerini bir pandas veri çerçevesine dönüştürüyorum ve çeşitli veri temizleme teknikleri uyguluyorum.

import pandas as pd text = ['Bu, ABhishek Jaiswal tarafından yazılan NLP GÖREVLERİ MAKALEsidir** ','Bu makalede çeşitli VERİ TEMİZLEME tekniklerini açıklayacağım', 'Öyleyse DAHA FAZLASI için bizi izlemeye devam edin &&','Hayır Bize gittiğini sanmıyorum, etrafta yaşıyor'] df = pd.DataFrame({'text':text})

Çıktı:

Veri Temizleme | NLP Eğitimleri
                                                                                  Kaynak: Yerel

Küçük harf

Gibi bir yöntem lower()tüm büyük harfleri küçük harfe çevirir ve geri döner.

Uygulanması lower() lambda işlevini kullanan yöntem

df['lower'] = df['text'].apply(lambda x: " ".join(x.lower(), x.split()) için)
küçük harf | NLP Eğitimleri
                                                                                           Kaynak: Yerel

noktalama kaldırma 

Noktalama işaretlerini kaldırma(*,&,%#@#()) çok önemli bir adımdır, çünkü noktalama işaretleri verilerimize fazladan bilgi veya değer eklemez. Bu nedenle, noktalama işaretlerinin kaldırılması veri boyutunu küçültür; bu nedenle, hesaplama verimliliğini artırır.

Bu adım, Regex veya Replace yöntemi kullanılarak yapılabilir.

noktalama kaldırma
                                                                                                 Kaynak: Yerel

string.punctuation tüm noktalama işaretlerini içeren bir dize döndürür.

noktalama | NLP Eğitimleri
                                                                                               Kaynak: Yerel

kullanarak noktalama işaretlerini kaldırma düzenli ifadeler:

Noktalama işaretlerini kaldırma
                                                                                                 Kaynak: Yerel

Kelimeleri Kaldırmayı Durdur

Cümlelerde sıklıkla geçen ve anlamlı bir anlam taşımayan kelimeler. Bunlar tahmin için önemli değildir, bu nedenle veri boyutunu küçültmek ve fazla uydurmayı önlemek için stopwords'leri kaldırıyoruz. Not: Durdurulan kelimeleri filtrelemeden önce, stopwords'lerimiz küçük harfli olduğundan, verileri küçük harfle yazdığınızdan emin olun.

NLTK kitaplığını kullanarak, Durdurulan Sözcüklerimizi veri kümesinden filtreleyebiliriz.

# !pip install nltk import nltk nltk.download('stopwords') nltk.corpus'tan import stopwords allstopwords = stopwords.words('english') df.lower.apply(lambda x: " ".join(i for i in x .split() eğer tüm kelimelerde değilsem))
Dur kelimeleri Kaldırma
                                                                                          Kaynak: Yerel

Yazım düzeltme

Müşteri incelemelerinde, bloglarda veya tweet'lerde çıkarılan metin verilerinin çoğunda bazı yazım hataları olasılığı vardır.

Yazım hatalarını düzeltmek, model doğruluğunu artırır.

Yazım hatalarını düzeltmek için çeşitli kitaplıklar vardır, ancak en uygun yöntem bir metin bloğu kullanmaktır.

Gibi bir yöntem correct() metin bloğu nesneleri üzerinde çalışır ve yazım hatalarını düzeltir.

#textblob kitaplığını kurun !pip textblob'u textblob'dan yükleyin TextBlob'u içe aktarın
Yazım düzeltme
                                                                        Kaynak: Yerel

dizgeciklere

Tokenizasyon, metni anlamlı birim kelimelere bölmek anlamına gelir. Kelime belirteçlerinin yanı sıra cümle belirteçleri de vardır.

Cümle belirteç bir paragrafı anlamlı cümlelere bölerken, kelime belirteç bir cümleyi anlamlı sözcüklere böler. Birçok kitaplık SpaCy, NLTK ve TextBlob gibi simgeleştirme gerçekleştirebilir.

Tek tek birim kelimeleri elde etmek için bir cümleyi boşlukta bölmek, belirteçleştirme olarak anlaşılabilir.

import nltk mystring = "En sevdiğim hayvan kedidir" nltk.word_tokenize(mystring)
mystring.split(" ")

çıktı:

['Benim', 'favori', 'hayvan', 'is', 'kedi']

Ruh hali

Stemming, anlamdan bağımsız olarak bir takım kurallar kullanarak kelimeleri kök kelimelere dönüştürmektir. yani,

  • "balık", "balıklar" ve "balık tutma", "balık"a dönüştürülür.
  • "oynamak", "oynatılmak", "oynamak", "oynamak" anlamına gelir.
  • Stemming, kelime dağarcığını azaltmaya yardımcı olur, dolayısıyla doğruluğu artırır.

Kök alma gerçekleştirmenin en basit yolu, NLTK veya bir TextBlob kitaplığı kullanmaktır.

NLTK çeşitli köklendirme teknikleri sağlar, örneğin Snowball, PorterStemmer; farklı teknik, kelimeleri kök kelimelere dönüştürmek için farklı kurallar dizisi izler.

nltk'yi nltk.stem'den içe aktar PorterStemmer st = PorterStemmer() df['text'].apply(lambda x:" ".join([st.stem(word for word in x.split()])))
Ruh hali
Kaynak: yerel

"makale", "articl""lives“ — -> “live".

Lemmatizasyon

Lemmatizasyon, kelime eşleme kullanarak kelimeleri kök kelimelere dönüştürmektir. Lemmatization, konuşmanın bir kısmı ve anlamı yardımıyla yapılır; dolayısıyla anlamsız kök kelimeler üretmez. Ancak lemmatizasyon, köklendirmeden daha yavaştır.

  • "Tercih Etmenizin, ""daha iyi, ”Veya“en iyi” olarak lemmatized edilirTercih Etmenizin".
  • Lemmatization, tüm eşanlamlıları tek bir kök kelimeye dönüştürecektir. yani "araba""araba, "" kamyon, "" araçlar”, “otomobil” olarak lemmatize edilir.
  • Lemmatizasyon genellikle daha iyi sonuçlar alır.

Yani. leafs Kaynaklandı. saplanmış yapraklar leav süre leafs , leaves lemmatize leaf

Lemmatizasyon, NLTK, TextBlob kütüphanesi kullanılarak yapılabilir.

Lemmatizasyon
                                                                                                 Kaynak: yerel

Tüm veri setini lemmatize edin.

Lemmatizasyon 2 | NLP Eğitimleri
                                                                                                   Kaynak: yerel

2. Adım Keşfedici Veri Analizi

Buraya kadar ham veriyi aldıktan sonra yapılması gereken çeşitli metin ön işleme tekniklerini gördük. Verilerimizi temizledikten sonra artık keşifsel veri analizi yapabilir ve metin verilerini keşfedebilir ve anlayabiliriz.

Verilerde Kelime Sıklığı

Verilerimizdeki benzersiz kelimeleri saymak, verilerimizin en sık, en az kullanılan terimleri hakkında bir fikir verir. Model eğitimimizi daha genel hale getirmek için genellikle en az sıklıkta yapılan yorumları bırakırız.

nltk sağlar Freq_dist kelime sıklığını hesaplamak için sınıftır ve girdi olarak bir torba kelime alır.

all_words = [] df['processed'] içindeki cümle için: all_words.extend(sentence.split())

all_words Veri kümemizde bulunan tüm kelimeleri içerir. Buna genellikle kelime hazinesi deriz.

nltk'yi içe aktar nltk.Freq_dist(all_words)
Verilerdeki kelime sıklığı
                                                                                                 Kaynak: Yerel

Bu, kelimeyi anahtar olarak ve verilerimizdeki oluşum sayısını değer olarak gösterir.

kelime Bulutu

Wordcloud, veri kümesinin kelime sıklığının resimli temsilidir.WordCloud'un anlaşılması daha kolaydır ve metinsel verilerimiz hakkında daha iyi bir fikir verir.

The kütüphane wordcloud Birkaç satır kod ile bir kelime bulutu oluşturalım.

kitaplıkları içe aktarma:

wordcloud'dan WordCloud'u wordcloud'dan içe aktar STOPWORDS'i içe aktar matplotlib.pyplot'u plt olarak içe aktar

Verilerimizin tüm sözcüklerini içeren metni kullanarak bir sözcük bulutu çizebiliriz.

word = [] df'deki mesaj için['işlenmiş']:words.extend([STOPWORDS'de değilse, mesaj.split() içindeki kelime kelime]) wordcloud = WordCloud(genişlik = 1000, yükseklik = 500).generate( " ".join(words)) plt.imshow(wordcloud, interpolation='bilinear') plt.axis("off") plt.show()
Kelime Bulutu | NLP Eğitimleri
                                                             Kaynak: Yerel
  • background_color = 'white' Bu parametreyi kullanarak kelime bulutunun arka plan rengini değiştirebiliriz.
  • collocations = False False olarak tutmak, eşdizimli kelimeleri yok sayar. Eşdizimler, birlikte meydana gelen kelimelerin oluşturduğu kelimelerdir. Yani dikkat edin, ev işleri vb.
  • Parametreleri kullanarak yüksekliği ve genişliği ayarlayabiliriz.

not : Kelime bulutunu oluşturmadan önce mutlaka stopwords'ü kaldırın.

Son Notlar

Bu yazıda, metinsel veri ön işleme için gerekli çeşitli teknikleri gördük. Veri temizliğinden sonra kelime bulutu kullanarak keşifsel veri analizi yaptık ve bir kelime frekansı oluşturduk.

Bu serinin ikinci makalesinde aşağıdaki konuları öğreneceğiz:

Kaynak: https://www.analyticsvidhya.com/blog/2022/01/nlp-tutorials-part-i-from-basics-to-advance/

Zaman Damgası:

Den fazla Analitik Vidhya