Doğal Dil İşleme (NLP) - Temel İşlemler - I

Gereksiz Kelimeleri (Stop Words) Kaldırma

Yayın tarihi :03-Şub-22
Bölüm kodlarını ve/veya veri setlerini indir.

Gereksiz Kelimelerler (Stop Words), bir dilde en çok kullanılan kelimelerdir. NLP ile veri analizi yaparken bu kelimeler cümlenin öğelerinde fazla bir anlam katmayacaklardır. Örneğin "Dışarda güneş vardı ama hava çok soğuktu." cümlesinde ama kelimesi cümlenin anlamına fazla bir anlam katmamıştır. 

Stop Words'lerin çıkartılmasındaki temel amaç; cümleyi oluşturan temel kelimelere daha çok yoğunlaşmayı sağlamaktır. Stop Words'ler çıkartıldığında;

  • Veri kümesinin boyutunda azalma olur ve daha kısa sürede model eğitme işlemi yapılır.
  • Daha anlamlı kelimeler kaldığından dolayı oluşturulan modelin performansı daha yüksek olacaktır.

Bir dil içerisinde bulunan Stop Words listesi için NLTK (Natural Language Toolkit - Doğal Dil Araç Seti) kütüphanesinin indirilerek içe aktarılması gerekmektedir.

pip install nltk
import nltk

NLTK kütüphanesi indirilip içe aktarıldıktan sonra "stopwords" paketinin de nltk aracılığı ile indirilmesi gerekecektir.

nltk.download("stopwords")

"stopwords" paketini de içe aktarıldıktan sonra kullanıma hazır olacaktır.

from nltk.corpus import stopwords

Hangi dillerin "stopwords" listesinin olduğunu görmek için;

stopwords.fileids()

Çıktı:

['arabic',
 'azerbaijani',
 'bengali',
 'danish',
 'dutch',
 'english',
 'finnish',
 'french',
 'german',
 'greek',
 'hungarian',
 'indonesian',
 'italian',
 'kazakh',
 'nepali',
 'norwegian',
 'portuguese',
 'romanian',
 'russian',
 'slovene',
 'spanish',
 'swedish',
 'tajik',
 'turkish']

Yukarda görüldüğü gibi "stopwords" listesi olan 24 dil listelenmiş oldu.

Türkçe için "stopwords" listesinde hangi kelimelerin olduğunu listeyelim:

print(stopwords.words("turkish"))

Çıktı:

['acaba', 'ama', 'aslında', 'az', 'bazı', 'belki', 'biri', 'birkaç', 'birşey', 'biz', 'bu', 'çok', 'çünkü',
 'da', 'daha', 'de', 'defa', 'diye', 'eğer', 'en', 'gibi', 'hem', 'hep', 'hepsi', 'her', 'hiç', 'için', 
'ile', 'ise', 'kez', 'ki', 'kim', 'mı', 'mu', 'mü', 'nasıl', 'ne', 'neden', 'nerde', 'nerede', 'nereye',
 'niçin', 'niye', 'o', 'sanki', 'şey', 'siz', 'şu', 'tüm', 've', 'veya', 'ya', 'yani']

İngilizce için "stopwords" listesinde hangi kelimelerin olduğunu listeyelim:

print(stopwords.words("english"))

Çıktı:

['i', 'me', 'my', 'myself', 'we', 'our', 'ours', 'ourselves', 'you', "you're", "you've", "you'll", "you'd",
 'your', 'yours', 'yourself', 'yourselves', 'he', 'him', 'his', 'himself', 'she', "she's", 'her', 'hers', '
herself', 'it', "it's", 'its', 'itself', 'they', 'them', 'their', 'theirs', 'themselves', 'what', 'which',
 'who', 'whom', 'this', 'that', "that'll", 'these', 'those', 'am', 'is', 'are', 'was', 'were', 'be', 'been', 
'being', 'have', 'has', 'had', 'having', 'do', 'does', 'did', 'doing', 'a', 'an', 'the', 'and', 'but', 'if',
 'or', 'because', 'as', 'until', 'while', 'of', 'at', 'by', 'for', 'with', 'about', 'against', 'between', '
into', 'through', 'during', 'before', 'after', 'above', 'below', 'to', 'from', 'up', 'down', 'in', 'out', 
'on', 'off', 'over', 'under', 'again', 'further', 'then', 'once', 'here', 'there', 'when', 'where', 'why', 
'how', 'all', 'any', 'both', 'each', 'few', 'more', 'most', 'other', 'some', 'such', 'no', 'nor', 'not', 
'only', 'own', 'same', 'so', 'than', 'too', 'very', 's', 't', 'can', 'will', 'just', 'don', "don't", 'should',
 "should've", 'now', 'd', 'll', 'm', 'o', 're', 've', 'y', 'ain', 'aren', "aren't", 'couldn', "couldn't", '
didn', "didn't", 'doesn', "doesn't", 'hadn', "hadn't", 'hasn', "hasn't", 'haven', "haven't", 'isn', "isn't",
 'ma', 'mightn', "mightn't", 'mustn', "mustn't", 'needn', "needn't", 'shan', "shan't", 'shouldn', "shouldn't", '
wasn', "wasn't", 'weren', "weren't", 'won', "won't", 'wouldn', "wouldn't"]

Yukarıda görüldüğü gibi Türkçe ve İngilizce dillerine ait stopwords listelenmiş oldu (liste halinde çıktı vermektedir.). Veri seti durumuna göre ilgili listelere eklemelerde yapılabilmektedir.

#Türkçe stopwords
stopwords_list=stopwords.words("turkish")
#örnek olarak "velhasıl" kelimesini stopwords listesine ekleyelim
stopwords_list.append("velhasıl")
print(stopwords_list)

Çıktı:

['acaba', 'ama', 'aslında', 'az', 'bazı', 'belki', 'biri', 'birkaç', 'birşey', 'biz', 'bu', 'çok', 'çünkü', 'da', 
'daha', 'de', 'defa', 'diye', 'eğer', 'en', 'gibi', 'hem', 'hep', 'hepsi', 'her', 'hiç', 'için', 'ile', 'ise', 
'kez', 'ki', 'kim', 'mı', 'mu', 'mü', 'nasıl', 'ne', 'neden', 'nerde', 'nerede', 'nereye', 'niçin', 'niye', 'o', 
'sanki', 'şey', 'siz', 'şu', 'tüm', 've', 'veya', 'ya', 'yani', 'velhasıl']

Örnek-1: Bir yazıya kullanılmayacak olan gereksiz kelimeleri kaldırma işlemi uygulayalım.

#ilgili yazımızı text değişkenine eşitleyelim.
text="""Gereksiz Kelimelerler (Stop Words), bir dilde en çok kullanılan kelimelerdir.
NLP ile veri analizi yaparken bu kelimeler cümlenin öğelerinde fazla bir anlam katmayacaklardır.
Örneğin "Dışarda güneş vardı ama hava çok soğuktu." cümlesinde ama kelimesi cümlenin anlamına
fazla bir anlam katmamıştır."""

#Alt satıra geçişleri kaldıralım
text=text.replace("\n"," ")

#Tüm yazıyıyı küçük harfe çevirelim
text=text.lower()

#Noktalama işaretlerini kaldıralım
import re
text=re.sub("[^\w\s]","",text)

#Son durumda text
text

Çıktı:

'gereksiz kelimelerler stop words bir dilde en çok kullanılan kelimelerdir nlp ile veri analizi
 yaparken bu kelimeler cümlenin öğelerinde fazla bir anlam katmayacaklardır örneğin dışarda güneş 
vardı ama hava çok soğuktu cümlesinde ama kelimesi cümlenin anlamına fazla bir anlam katmamıştır'
#Türkçe stopwords
stopwords_list=stopwords.words("turkish")
result_text=[]
for i in text.split(" "):
    if i not in stopwords_list:
        result_text.append(i)

result_text=" ".join(result_text)
result_text

Çıktı:

'gereksiz kelimelerler stop words bir dilde kullanılan kelimelerdir nlp veri analizi yaparken
 kelimeler cümlenin öğelerinde fazla bir anlam katmayacaklardır örneğin dışarda güneş vardı hava
 soğuktu cümlesinde kelimesi cümlenin anlamına fazla bir anlam katmamıştır'

Yukardaki örnekte de görüldüğü gibi ilgili yazıdan kullanılmayacak olan gereksiz kelimeler çıkartılmış oldu.

Paylaş:

Yorum Yap (*Yorumunuza kod eklemek isterseniz Kod Parçacığı Ekle butonuna tıklayarak ekleyebilirsiniz.)

Yorumlar

Henüz hiç yorum yapılmamış, ilk yorum yapan sen ol.