Simgeleştirme
Tokenizasyon Nedir? Kısacası metinleri kelimelere veya cümlelere ayırır...
Burada NLP'de kullanabileceğimiz farklı belirteçleri ele alacağız ………
- Beyaz boşluk
text = 'Earth was born around 4.54 billion years ago.'
print(text.split())
# output
# ['Earth', 'was', 'born', 'around', '4.54', 'billion', 'years', 'ago.']
2. Belirli Bölünme
Beyaz boşlukla aynı ama burada splitistediğimiz ayırıcıyı veriyoruz
text = 'Egypt, a country linking northeast Africa with the Middle East, dates to the time of the pharaohs.'
print(text.split(','))
# output
# ['Egypt', ' a country linking northeast Africa with the Middle East', ' dates to the time of the pharaohs.']
3. NLTK
NLTK, insan dili verileriyle çalışacak Python programları oluşturmaya yönelik lider bir platformdur. Kullanabileceğimiz birçok belirteç var
l) word_toknizer: Bölme işlevindeki sorunu çözer:
ll) sent_tokenize: Daha önce eğittiği modeller olarak bölünmüş metni kullanır.
lll) wordpunk_tokenize: Burada tüm sözcükleri ve noktalama işaretlerini ayırır.
lV) TreebankWordTokenizer: Metni bu noktalama işaretleri olarak böler ?!.,;, diğer yandan İngilizce kelimeler için çeşitli ortak kurallardır.
V) TweetTokenizer: Metni bu noktalama işaretleri olarak böler, ?!.,;böylece emojiler
Vl) MWETokenizer: Burada tokeni istediğimiz gibi ekleyebiliriz, çünkü bu tokenizer bunu add_mweyapmamızı sağlar
4. MetinBlob'u
TextBlob, metin verilerini işlemek için bir Python (2 ve 3) kitaplığıdır . Konuşma parçası etiketleme, isim tamlaması çıkarma, duygu analizi, sınıflandırma, çeviri ve daha fazlası gibi yaygın doğal dil işleme (NLP) görevlerine dalmak için basit bir API sağlar.
from textblob import TextBlob
text="""But I'm glad you'll see me as I am. Above all, I wouldn't want people to think that I want to
prove anything. I don't want to prove anything, I just want to live; to cause no evil to anyone but myself.
I have that right, haven't I? Leo Tolstoy """
blob_object= TextBlob(text) # Word tokenization of the text
text_words = blob_object.words # To see all tokens
print(text_words) # To count the number of tokens
print(len(text_words))
# output
# ['But', 'I', "'m", 'glad', 'you', "'ll", 'see', 'me', 'as', 'I', 'am', 'Above', 'all', 'I', 'would', "n't", 'want', 'people', 'to', 'think', 'that', 'I', 'want', 'to', 'prove', 'anything', 'I', 'do', "n't", 'want', 'to', 'prove', 'anything', 'I', 'just', 'want', 'to', 'live', 'to', 'cause', 'no', 'evil', 'to', 'anyone', 'but', 'myself', 'I', 'have', 'that', 'right', 'have', "n't", 'I', 'Leo', 'Tolstoy']
# 55
5. ferah
spaCy, Python'da Doğal Dil İşleme için ücretsiz bir açık kaynaklı kitaplıktır . NER, POS etiketleme, bağımlılık ayrıştırma, kelime vektörleri ve daha fazlasını içerir.
6. Gensim
Gensim: Denetimsiz konu modelleme ve doğal dil işlemede kullanılan, Radim Rehurek tarafından yazılmış python dilinde açık kaynaklı bir kitaplıktır . Belgelerden semantik konuları çıkarmak için tasarlanmıştır. Büyük metin koleksiyonlarını işleyebilir.
7. Keralar
Keras, açık kaynaklı bir kütüphanedir ve en güvenilir derin öğrenme çerçevelerinden biridir. Simgeleştirme gerçekleştirmek için Class Keras.preprocessing.text sınıfından text_to_word_sequence yöntemini kullanıyoruz. Keras ile ilgili harika olan şey, alfabeyi simgeleştirmeden önce küçük harfe dönüştürmektir, bu da oldukça zaman kazandırabilir.
from keras.preprocessing.text import Tokenizer
from keras.preprocessing.text import text_to_word_sequence
text = "Two things are infinite: the universe and human stupidity; and I'm not sure about the universe. #Albert Einstein"
tokinzer = Tokenizer(num_words=20) # as recommended we put here the max text length we have
tokinzer.fit_on_texts(text)
tokens = text_to_word_sequence(text)
print(tokens)
# output
# ['two', 'things', 'are', 'infinite', 'the', 'universe', 'and', 'human', 'stupidity', 'and', "i'm", 'not', 'sure', 'about', 'the', 'universe', '', 'albert', 'einstein']
8. Alt kelime tabanlı simgeleştirme
Popüler simgeleştirme, kelime ve karakter tabanlı simgeleştirme arasında bir çözüm olan alt sözcük tabanlı simgeleştirmedir. Ana fikir, kelime tabanlı belirteçleştirme (çok büyük kelime dağarcığı boyutu, çok sayıda OOV belirteci ve çok benzer kelimelerin farklı anlamları) ve karakter tabanlı belirteçleştirme (çok uzun diziler ve daha az anlamlı bireysel belirteçler) ile karşılaşılan sorunları çözmektir.
Alt kelime tabanlı simgeleştirme algoritmaları aşağıdaki ilkeleri kullanır.
- Sık kullanılan kelimeleri daha küçük alt kelimelere bölmeyin.
- Nadir kelimeleri daha küçük anlamlı alt kelimelere ayırın.
Zorluklar
Simgeleştirme görevinin zorluklarını ve sınırlamalarını tartışalım.
Genel olarak, bu görev İngilizce veya Fransızca yazılmış metin külliyatı için kullanılır; burada bu diller, cümle sınırlarını tanımlamak için beyaz boşluklar veya noktalama işaretleri kullanarak sözcükleri ayırır. Ne yazık ki bu yöntem Çince, Japonca, Korece, Tayca, Hintçe, Urduca, Tamilce ve diğerleri gibi diğer diller için uygulanamadı. Bu sorun, tüm dilleri birleştiren ortak bir belirteç aracı geliştirme ihtiyacını doğurur.
Arapça bir dil olarak karmaşık bir morfolojiye sahip olduğundan, diğer bir sınırlama Arapça metinlerin simgeleştirilmesindedir. Örneğin, tek bir Arapça kelime, “عقد” (eaqad) kelimesi gibi altı adede kadar farklı belirteç içerebilir.
Çözüm
Belirteçleştirme ve kullanabileceğimiz birçok teknik hakkında konuştuk, gördüğümüz gibi bu alanda yapılmış birçok araştırma türü var ve bu alan büyüyor ve NLP'nin karşılaştığı birçok zorluk var ama gelecekte bu sorunların çözüleceğini göreceğiz.
bu linkteki kodu görebilirsin

![Bağlantılı Liste Nedir? [Bölüm 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































