Doğal Dil İşleme (NLP) - Stemmer (Köklendirme)
SnowballStemmer
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.