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ı:
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)
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.
string.punctuation
tüm noktalama işaretlerini içeren bir dize döndürür.
kullanarak noktalama işaretlerini kaldırma düzenli ifadeler:
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))
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
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()])))
"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.
Tüm veri setini lemmatize edin.
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)
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()
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/
- "
- &
- Hakkımızda
- Türkiye
- analiz
- etrafında
- göre
- mal
- mevcut
- Kelime Çantası
- Temeller
- birisinde
- çağrı
- şansı
- değişiklik
- Temizlik
- bulut
- kod
- kodlama
- yorumlar
- Bilgisayar Bilimleri
- bilgisayarlar
- veri
- veri analizi
- derin öğrenme
- farklı
- Değil
- Damla
- verim
- İngilizce
- vb
- evrim
- Ad
- sabit
- takip et
- oluşturmak
- alma
- yardım et
- yardımcı olur
- tarih
- Ana Sayfa
- HTTPS
- Fikir
- önemli
- geliştirme
- bireysel
- bilgi
- IT
- koruma
- keras
- anahtar
- dil
- dizüstü bilgisayar
- ÖĞRENİN
- öğrenme
- tebliğ
- Kütüphane
- makine öğrenme
- Yapımı
- orta
- model
- Daha
- nlp
- Popüler
- tahmin
- sağlar
- Python
- Çiğ
- işlenmemiş veri
- Okuma
- azaltmak
- değiştirmek
- Sonuçlar
- İade
- Yorumları
- kurallar
- Bilim
- Dizi
- set
- beden
- So
- uzay
- başlama
- kalmak
- kök
- konuşma
- teknikleri
- tensorflow
- birlikte
- dizgeciklere
- Konular
- Eğitim
- Öğreticiler
- us
- genellikle
- değer
- sözler
- çalışır
- X
- sıfır