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

Noktalama İşaretlerini Kaldırma

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

Tüm verilerin içinde bulunan noktalama işaretlerinden kurtulma işlemi Doğal Dil İşleme (NLP) işlemlerinde ve sonrasında yapılacak işlemlerde yine çokça kullanılacak bir işlemdir.

Bunun için meta karakterlerden olan "[^\w\s]" ifdadesi kullanılabilmektedir. Ayrı ayrı incelemek gerekirse;

  • "^": Eğer karakter başında "^" işareti varsa bu karakterle başlayıp başlamadığını kontrol eder. Başlıyorsa ilgili değeri döndürürken, başlamıyorsa da boş liste döndürür.
  • \w: Bir dizenin alfanümerik karakterler(&,ά,λ,φ,α,_ vb.) içerip içermediğine bakar. Alfanümerik karakterler haricindeki değerlerle eşlenir. [a-zA-Z0-9]
  • \s: Bir dizenin boşluk içerip içermediğine bakar. Boşluk içeriyorsa sayısı kadar liste elemanı döndürür. [\t\n\t\f\v]

Büyük veri setleri üzerinden noktalama işaretlerini kaldırmak işlemini örnekler üzerinden inceleyelim.

Örnek-1: ABD'de bulunan Yelp şirketi üzerinden yapılan restorant yorumlarını içeren veri seti olan "yelp.csv" veri seti üzerinden küçük harfe çevirme işlemleri yapalım.

import pandas as pd
import warnings
warnings.filterwarnings("ignore")
#Veri seti okunur
df=pd.read_csv("yelp.csv")
#İlk 5 satır
df.head()

Çıktı:

#Veri setinde sadece "text" sütunu üzerinde çalışma yapalım
df[["text"]].sample(5)

Çıktı:

Yukarıdaki resimdeki "text" sütununda da görüldüğü gibi noktalama işaretleri yer almaktadır. Bu değerlerin tamamını görmek için "^" ifadesi kullanmadan, yani noktalama işaretlerini değil de diğer harfleri kaldırarak veri setini inceleyelim.

df["text"].str.replace("[\w\s]","")

Çıktı:

0                                   ..-...'.'..,..""'.,'!
1                    .,.....,:.,'.:...:."'".()".!.'!:.,..
2                                                     .:)
3                                      ,,!!!',,,,...-.,,!
4                  !!!,()''......",'"!!!.'!!..........:^)
                              ...                        
9995                          ...-.,&.-.,-.-&...-./.,-.'.
9996                                       !,,.,,..?.....
9997                      ,,.,,,...,,..,!.,...,,,,,$.,',!
9998    ,,.......',.'.().'...................""!!....!...
9999                         -.....,..,,,...,""..:,,,....
Name: text, Length: 10000, dtype: object

Yukarıdaki çıktıda da görüldüğü gibi bu noktalama yaklaşık olarak her satırda yer almaktadır. Bu ifadeleri kaldırarak devam edelim; 

df["text"]=df["text"].str.replace("[^\w\s]","")
df[["text"]].sample(5)

Çıktı:

Veri seti üzerindeki tüm satırlarda noktalama işareti kaldırılmış oldu. İlk satırdaki değerlerin tamamına bakacak olursak;

df["text"][0]

Çıktı:

'My wife took me here on my birthday for breakfast and it was excellent  The weather was perfect which made sitting outside overlooking their grounds an absolute pleasure  Our waitress was excellent and our food arrived quickly on the semibusy Saturday morning  It looked like the place fills up pretty quickly so the earlier you get here the better\n\nDo yourself a favor and get their Bloody Mary  It was phenomenal and simply the best Ive ever had  Im pretty sure they only use ingredients from their garden and blend them fresh when you order it  It was amazing\n\nWhile EVERYTHING on the menu looks excellent I had the white truffle scrambled eggs vegetable skillet and it was tasty and delicious  It came with 2 pieces of their griddled bread with was amazing and it absolutely made the meal complete  It was the best toast Ive ever had\n\nAnyway I cant wait to go back'
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.