Doğal Dil İşlemede Tokenizasyon
Yayınlanan: 2020-12-01Metinsel verilerle uğraşırken, en temel adım metni tokenize etmektir. 'Belirteçler' tek tek kelimeler, cümleler veya herhangi bir minimum birim olarak kabul edilebilir. Bu nedenle cümleleri ayrı birimlere ayırmak Tokenizasyondan başka bir şey değildir.
Bu eğitimin sonunda, aşağıdakiler hakkında bilgi sahibi olacaksınız:
- Tokenizasyon Nedir?
- Farklı Tokenizasyon türleri
- Tokenleştirmenin farklı yolları
Tokenizasyon, bir NLP boru hattındaki en temel adımdır.
Ama neden bu?
Bu kelimeler veya belirteçler daha sonra bilgisayarın anlayabilmesi ve anlam çıkarabilmesi için sayısal değerlere dönüştürülür. Bu tokenlar temizlenir, ön işleme tabi tutulur ve ardından “Vektörleştirme” yöntemleriyle sayısal değerlere dönüştürülür. Bu vektörler daha sonra Makine Öğrenimi algoritmalarına ve sinir ağlarına beslenebilir.
Tokenizasyon sadece kelime seviyesinde değil, aynı zamanda cümle seviyesinde de olabilir. Yani, metin ya simgeler olarak sözcüklerle ya da simgeler olarak cümlelerle belirtilebilir. Belirteçleştirmeyi gerçekleştirmenin birkaç yolunu tartışalım.

İçindekiler
Python Bölünmüş()
Python'un split() işlevi , belirtilen karakter tarafından bölünmüş belirteçlerin listesini döndürür. Varsayılan olarak, kelimeleri boşluklara böler.
Kelime Tokenizasyonu
| Mystr = “Bu bir tokenizasyon öğreticisidir. Farklı tokenleştirme yöntemlerini ve yollarını mı öğreniyoruz? NLP görevlerinde tokenizasyon esastır.” Jetonlar = Mystr.split() |
| #Çıktı: >> [ 'Bu' , 'is' , 'a' , 'belirteçleştirme' , 'eğitici' , 'Biz' , ' varız' , 'öğrenme' , 'farklı' , 'belirteçleştirme' , 'yöntemler' , 've' , 'yollar?' , 'Tokenizasyon' , 'is' , 'temel' , 'in' , 'NLP' , 'görevler'. ] |
Cümle Tokenizasyonu
Ayırıcı “.” şeklinde geçirilerek aynı metin cümlelere bölünebilir.
| Mystr = “Bu bir tokenizasyon öğreticisidir. Farklı tokenleştirme yöntemlerini ve yollarını mı öğreniyoruz? NLP görevlerinde tokenizasyon esastır.” Jetonlar = Mystr.split( “.” ) |
| #Çıktı: >> [ 'Bu bir belirteçleştirme öğreticisidir' ' Farklı belirteçleştirme yöntemlerini ve yollarını mı öğreniyoruz? NLP görevlerinde tokenizasyon esastır' , ” ] |
Bu basit ve basit görünse de, birçok kusuru var. Ve fark ederseniz, son “.” den sonra bölünür. ilave olarak. Ve “?” Bir sonraki cümlenin göstergesi olarak, çünkü yalnızca bir karakter alır, yani “.”.
Gerçek hayat senaryolarındaki metin verileri çok kirli ve kelimelere ve cümlelere hoş bir şekilde yerleştirilmemiş. Bu şekilde tokenleştirmenizi çok zorlaştıracak çok sayıda çöp metin mevcut olabilir. Bu nedenle, daha iyi ve daha optimize edilmiş tokenleştirme yöntemlerine geçelim.
Mutlaka Okuyun: Bilmeniz Gereken En İyi 10 Derin Öğrenme Tekniği
Düzenli ifade
Normal İfade (RegEx), bir karakter kalıbıyla eşleştirmek için kullanılan bir karakter dizisidir. RegEx'i belirli kalıpları, kelimeleri veya karakterleri bulmak için kullanıyoruz veya bunlar üzerinde başka herhangi bir işlem yapıyoruz. Python, RegEx ile çalışmak için kullanılan re modülüne sahiptir. Metni re kullanarak nasıl belirtebileceğimizi görelim .
Kelime Tokenizasyonu
| Mystr = “Bu bir tokenizasyon öğreticisidir. Farklı tokenleştirme yöntemlerini ve yollarını mı öğreniyoruz? NLP'nin görevlerinde tokenizasyon esastır.” Belirteçler = re.findall( “[\w']+” , Mystr) |
| #Çıktı: >> [ 'Bu' , 'is' , 'a' , 'belirteçleştirme' , 'eğitici' , 'Biz' , 'are' , 'öğrenme' , 'farklı' , 'belirteçleştirme' , 'yöntemler' , 've' , 'yollar' , 'Belirteçleştirme' , 'is' , 'temel' , 'in' , 'NLP' , 'görevler' ] |
Peki, burada ne oldu?
re.findall() işlevi , kendisiyle eşleşen tüm dizilerle eşleşir ve bunları bir listede saklar. “[\w]+” ifadesi, herhangi bir karakter anlamına gelir – ister alfabeler, ister sayılar veya Alt Çizgi (“_”). “+” sembolü, desenin tüm oluşumları anlamına gelir. Bu nedenle, esasen tüm karakterleri tarayacak ve bir boşluk veya alt çizgi dışında herhangi bir özel karaktere çarptığında onları bir belirteç olarak listeye koyacaktır.
Lütfen “NLP'ler” kelimesinin tek bir kelime olduğuna dikkat edin, ancak regex ifademiz kesme işareti nedeniyle onu “NLP” ve “s” olarak ayırdı.
Cümle Tokenizasyonu
| Mystr = “Bu bir tokenizasyon öğreticisidir. Farklı tokenleştirme yöntemlerini ve yollarını mı öğreniyoruz? NLP'nin görevlerinde tokenizasyon esastır.” Belirteçler = yeniden derleme( '[.!?] ' ).split(Mystr) |
| #Çıktı: >> [ 'Bu bir belirteçleştirme eğitimi' , 'Farklı belirteçleştirme yöntemlerini ve yollarını öğreniyoruz' , 'NLP görevlerinde belirteçleştirme çok önemlidir.' ] |
Şimdi, burada birden çok bölme karakterini tek bir koşulda birleştirdik ve re.split işlevini çağırdık. Dolayısıyla bu 3 karakterden herhangi birine ulaştığında onu ayrı bir cümle olarak değerlendirecektir. Bu, bölmek için birden fazla karakter iletemeyeceğiniz python bölme işlevine göre RegEx'in bir avantajıdır.
Ayrıca Okuyun: Doğal Dil İşleme Uygulamaları
NLTK Belirteçleri
Natural Language Toolkit (NLTK), özellikle NLP görevlerini işlemek için bir Python kitaplığıdır. NLTK, tam NLP ardışık düzeninin bazı belirli süreçleri için yapılmış yerleşik işlevler ve modüllerden oluşur. NLTK'nın tokenleştirmeyi nasıl ele aldığına bir göz atalım.
Kelime Tokenizasyonu
NLTK, belirteçleştirme görevlerini yerine getirmek için ayrı bir NLTK.tokenize modülüne sahiptir. Word tokenization için, içerdiği yöntemlerden biri word_tokenize.
| nltk.tokenize'den word_tokenize'yi içe aktarın Mystr = “Bu bir tokenizasyon öğreticisidir. Farklı tokenleştirme yöntemlerini ve yollarını mı öğreniyoruz? NLP'nin görevlerinde tokenizasyon esastır.” word_tokenize(Mystr) |
| #Çıktı: >>[ 'Bu' , 'is' , 'a' , 'belirteçleştirme' , 'eğitici' , '.' , 'Biz' , ' varız' , 'öğrenme' , 'farklı' , 'belirteçleştirme' , 'yöntemler' ' , ' , 've' , 'yollar' , '?' , 'Tokenizasyon' , 'is' , 'temel' , 'in' , 'NLP' , 'görevler' , '.' ] |
Lütfen word_tokenize öğesinin noktalama işaretlerini ayrı belirteçler olarak kabul ettiğini unutmayın. Bunun olmasını önlemek için, bu adımdan önce tüm noktalama işaretlerini ve özel karakterleri kaldırmamız gerekiyor.

Cümle Tokenizasyonu
| nltk.tokenize'den import send_tokenize _ Mystr = “Bu bir tokenizasyon öğreticisidir. Farklı tokenleştirme yöntemlerini ve yollarını mı öğreniyoruz? NLP'nin görevlerinde tokenizasyon esastır.” send_tokenize(Mystr) |
| #Çıktı: >> [ 'Bu bir simgeleştirme eğitimidir.' , 'Farklı tokenleştirme yöntemlerini ve yollarını mı öğreniyoruz?' , 'NLP görevlerinde tokenleştirme esastır.' ] |
SpaCy Belirteçleri
SpaCy, muhtemelen NLP görevleri için en gelişmiş kitaplıklardan biridir. Neredeyse 50 dil desteğinden oluşur. Bu nedenle ilk adım, İngilizce dili için çekirdeği indirmektir. Ardından, belirteç, etiketleyici, ayrıştırıcı, NER ve kelime vektörlerini yükleyen İngilizce modülünü içe aktarmamız gerekiyor.
Kelime Tokenizasyonu
| spacy.lang.en'den İngilizce'yi içe aktarın nlp = İngilizce() Mystr = “Bu bir tokenizasyon öğreticisidir. Farklı tokenleştirme yöntemlerini ve yollarını mı öğreniyoruz? NLP'nin görevlerinde tokenizasyon esastır.” my_doc = nlp(Mystr) Jetonlar = [] my_doc içindeki belirteç için : Belirteçler.append(belirteç.metin) Jetonlar |
| #Çıktı: >> [ 'Bu' , 'is' , 'a' , 'belirteçleştirme' , 'eğitici' , '.' , 'Biz' , ' varız' , 'öğrenme' , 'farklı' , 'belirteçleştirme' , 'yöntemler' ' , ' , 've' , 'yollar' , '?' , 'Tokenizasyon' , 'is' , 'temel' , 'in' , 'NLP' , “'s” , 'görevler' , '.' ] |
Burada MyStr geçirilmiş nlp fonksiyonunu çağırdığımızda, onun için word token'larını oluşturuyor. Sonra onları indeksliyoruz ve ayrı bir listede saklıyoruz.
Cümle Tokenizasyonu
| spacy.lang.en'den İngilizce'yi içe aktarın nlp = İngilizce() sent_tokenizer = nlp.create_pipe( 'sentencizer' ) nlp.add_pipe(sent_tokenizer) Mystr = “Bu bir tokenizasyon öğreticisidir. Farklı tokenleştirme yöntemlerini ve yollarını mı öğreniyoruz? NLP'nin görevlerinde tokenizasyon esastır.” my_doc = nlp(Mystr) Gönderilenler = [] doc.sents'te gönderilenler için : Sents.append(gönderilmiş.metin) Gönderilenler |
| #Çıktı: >> [ 'Bu bir simgeleştirme eğitimidir.' , 'Farklı tokenleştirme yöntemlerini ve yollarını mı öğreniyoruz?' , “Tokenizasyon, NLP'nin görevlerinde esastır.” ] |
Cümle belirteçleri oluşturmak için, cümle belirteçleri oluşturan sentencizer bileşenini oluşturmak için creat_pipe yöntemini çağırın. Ardından boru hattını nlp nesnesine ekliyoruz. Metin dizesini nlp nesnesine ilettiğimizde, bu sefer onun için cümle belirteçleri oluşturur. Şimdi önceki örnekte olduğu gibi bir listeye eklenebilirler.
Keras Tokenizasyonu
Keras, şu anda en çok tercih edilen derin öğrenme çerçevelerinden biridir. Keras ayrıca metin işleme görevleri için özel bir sınıf sunar – keras.preprocessing.text. Bu sınıf, metinden sözcük düzeyi belirteçleri oluşturan text_to_word_sequence işlevine sahiptir. Hadi hızlıca bir göz atalım.
| keras.preprocessing.text'ten text_to_word_sequence içe aktarma Mystr = “Bu bir tokenizasyon öğreticisidir. Farklı tokenleştirme yöntemlerini ve yollarını mı öğreniyoruz? NLP'nin görevlerinde tokenizasyon esastır.” Belirteçler = text_to_word_sequence(Mystr) Jetonlar |
| #Çıktı: >> [ 'bu' , 'is' , 'a' , 'belirteçleştirme' , 'eğitici' , 'biz' , 'are' , 'öğrenme' , 'farklı' , 'belirteçleştirme' , 'yöntemler' , 've' , 'yollar' , 'belirteçleştirme' , 'is' , 'temel' , 'in' , “nlp'ler” , 'görevler' ] |
Lütfen “NLP'ler” kelimesini tek bir belirteç olarak ele aldığına dikkat edin. Ayrıca, bu keras belirteci, ek bir bonus olan tüm belirteçleri küçültmüştür.
Gensim Tokenleştiricisi
Gensim, NLP tabanlı görevleri ve konu modellemeyi işlemek için başka bir popüler kitaplıktır. gensim.utils sınıfı, belirteçleştirme görevlerimiz için kullanılabilecek bir belirteç yöntemi sunar.

Kelime Tokenizasyonu
| gensim.utils'den içe aktarma belirteci Mystr = “Bu bir tokenizasyon öğreticisidir. Farklı tokenleştirme yöntemlerini ve yollarını mı öğreniyoruz? NLP'nin görevlerinde tokenizasyon esastır.” list(tokenize(Mystr)) |
| #Çıktı: >> [ 'Bu' , 'is' , 'a' , 'belirteçleştirme' , 'eğitici' , 'Biz' , 'are' , 'öğrenme' , 'farklı' , 'belirteçleştirme' , 'yöntemler' , 've' , 'yollar' , 'Tokenizasyon' , 'is' , 'temel' , 'in' , 'NLP' , 's' , 'görevler' ] |
Cümle Tokenizasyonu
Cümle tokenizasyonu için gensim.summarization.textcleaner sınıfından split_sentences yöntemini kullanıyoruz .
| gensim.summarization.textcleaner'dan split_sentences içe aktar Mystr = “Bu bir tokenizasyon öğreticisidir. Farklı tokenleştirme yöntemlerini ve yollarını mı öğreniyoruz? NLP'nin görevlerinde tokenizasyon esastır.” Belirteçler = split_sentences( Mystr ) Jetonlar |
| #Çıktı: >> [ 'Bu bir simgeleştirme eğitimidir.' , 'Farklı tokenleştirme yöntemlerini ve yollarını mı öğreniyoruz?' , “Tokenizasyon, NLP'nin görevlerinde esastır.” ] |
Gitmeden önce
Bu eğitimde, metin verilerinizi uygulamalara dayalı olarak simgeleştirmenin çeşitli yollarını tartıştık. Bu, NLP ardışık düzeninin önemli bir adımıdır, ancak tokenleştirmeye geçmeden önce verilerin temizlenmesi gerekir.
Makine öğrenimi ve yapay zeka hakkında daha fazla bilgi edinmek istiyorsanız, çalışan profesyoneller için tasarlanmış ve 450+ saat zorlu eğitim, 30'dan fazla vaka çalışması ve ödev sunan IIIT-B & upGrad'ın Makine Öğrenimi ve Yapay Zeka alanında PG Diplomasına göz atın. IIIT-B Mezun statüsü, 5+ pratik uygulamalı bitirme projesi ve en iyi firmalarla iş yardımı.
