Doğal Dil İşleme (NLP) - Stemmer (Köklendirme)

SnowballStemmer

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

SnowballStemmer, TurkishStemmer(sadece Türkçe) ve PorterStemmer(sadece İngilizce)'in aksine çoğu dilde kelimelerin köklerini bulmak için kullanılan bir modüldür.

Kullanılabilmesi için "nltk.stem" paketi altından  "SnowballStemmer" modülünün içe aktarılması gerekmektedir.

from nltk.stem import SnowballStemmer

SnowballStemmer ile köklerini bulabileceğimiz dilllerin listesi için;

print(SnowballStemmer.languages)

Çıktı:

('arabic', 'danish', 'dutch', 'english', 'finnish', 'french', 'german', 'hungarian', 'italian',
 'norwegian', 'porter', 'portuguese', 'romanian','russian', 'spanish', 'swedish')

Konu detayları için örnek üzerinden ilerleyelim.

Örnek-1: "SnowballStemmer" ile İnglizce kelimelerinin köklerini bulalım.

#İlgili kütüphaner import edilir
from nltk.stem import SnowballStemmer
from nltk.tokenize import word_tokenize
#Bir cümleyi text değişkenine atayalım
text="NLP, one of the most important topics of artificial intelligence; It takes textual data and analyzes them and allows use in every field."
#Cümlenin tamamını küçük harfe çevirelim.
text=text.lower()

#Noktalama işaretleri kaldırıldı
import re
text=re.sub("[^\w\s]","",text)
#Tokenize işlemi yapıldı.
text_tokenize=word_tokenize(text)
print(text_tokenize)

Çıktı:

['nlp', 'one', 'of', 'the', 'most', 'important', 'topics', 'of', 'artificial', 'intelligence', 'it', 
'takes', 'textual', 'data', 'and', 'analyzes', 'them', 'and', 'allows', 'use', 'in', 'every', 
'field']

İlgili cümleye tokenize işlemi yapıldı ve son durumda yukarıdaki gibi cümle parçalarına ayrılmış oldu. Şimdi de parçalara ayrılan kelimelere stemmer işlemi yapalım.

#SnowballStemmer ataması yapıldı
S=SnowballStemmer(language="english")
#Cümle içinde bulunan her kelimeye ayrı ayrı stemmer işlemi uygulandı 
for i in text_tokenize:
    print("Kelime:{} - Kökü:{}".format(i,S.stem(i)))

Çıktı:

Kelime:nlp - Kökü:nlp
Kelime:one - Kökü:one
Kelime:of - Kökü:of
Kelime:the - Kökü:the
Kelime:most - Kökü:most
Kelime:important - Kökü:import
Kelime:topics - Kökü:topic
Kelime:of - Kökü:of
Kelime:artificial - Kökü:artifici
Kelime:intelligence - Kökü:intellig
Kelime:it - Kökü:it
Kelime:takes - Kökü:take
Kelime:textual - Kökü:textual
Kelime:data - Kökü:data
Kelime:and - Kökü:and
Kelime:analyzes - Kökü:analyz
Kelime:them - Kökü:them
Kelime:and - Kökü:and
Kelime:allows - Kökü:allow
Kelime:use - Kökü:use
Kelime:in - Kökü:in
Kelime:every - Kökü:everi
Kelime:field - Kökü:field

Örnek-2: "SnowballStemmer" ile Arapça kelimelerinin köklerini bulalım.

#Bir cümleyi text değişkenine atayalım
text_arabic="البرمجة اللغوية العصبية ، أحد أهم مواضيع الذكاء الاصطناعي ؛ يأخذ البيانات النصية ويحللها ويسمح باستخدامها في كل مجال."
#Noktalama işaretleri kaldırıldı
import re
text_arabic=re.sub("[^\w\s]","",text_arabic)
#Tokenize işlemi yapıldı.
text_tokenize=word_tokenize(text_arabic)
print(text_tokenize)

Çıktı:

['البرمجة', 'اللغوية', 'العصبية', 'أحد', 'أهم', 'مواضيع', 'الذكاء', 'الاصطناعي', 'يأخذ', 'البيانات', 'النصية', 'ويحللها'
, 'ويسمح', 'باستخدامها', 'في', 'كل', 'مجال']

İlgili cümleye tokenize işlemi yapıldı ve son durumda yukarıdaki gibi cümle parçalarına ayrılmış oldu. Şimdi de parçalara ayrılan kelimelere stemmer işlemi yapalım.

#SnowballStemmer ataması yapıldı
S=SnowballStemmer(language="arabic")
#Cümle içinde bulunan her kelimeye ayrı ayrı stemmer işlemi uygulandı 
for i in text_tokenize:
    print("Kelime:{} - Kökü:{}".format(i,S.stem(i)))

Çıktı:

Kelime:البرمجة - Kökü:برمج
Kelime:اللغوية - Kökü:لغو
Kelime:العصبية - Kökü:عصب
Kelime:أحد - Kökü:احد
Kelime:أهم - Kökü:اهم
Kelime:مواضيع - Kökü:مواضيع
Kelime:الذكاء - Kökü:ذكاء
Kelime:الاصطناعي - Kökü:اصطناع
Kelime:يأخذ - Kökü:ياخذ
Kelime:البيانات - Kökü:بيان
Kelime:النصية - Kökü:النص
Kelime:ويحللها - Kökü:يحلل
Kelime:ويسمح - Kökü:يسمح
Kelime:باستخدامها - Kökü:استخدام
Kelime:في - Kökü:في
Kelime:كل - Kökü:كل
Kelime:مجال - Kökü:مجال

Yukardaki çıktılarda görüldüğü gibi ingilizce kelimelere "SnowballStemmer" ile hem ingilizce hem de Arapça kelimelerin kök ayırma işlemi yapı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.