Simgeleştirme

Jan 10 2023
Tokenizasyon Nedir? Kısaca, Metinleri kelimelere veya cümlelere ayırır… Burada NLP'de kullanabileceğimiz farklı belirteçleri ele alacağız ……… 2. Spesifik Bölme Beyaz boşlukla aynı, ancak burada bölmeyi istediğimiz herhangi bir ayırıcıyı veriyoruz 3.

Tokenizasyon Nedir? Kısacası metinleri kelimelere veya cümlelere ayırır...

Simgeleştirme

Burada NLP'de kullanabileceğimiz farklı belirteçleri ele alacağız ………

  1. 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:

word_toknizer: yukarıdaki Sarı işarete bakın

ll) sent_tokenize: Daha önce eğittiği modeller olarak bölünmüş metni kullanır.

sent_tokenize: bu benim alıntım, onu bir alıntı ve benim adım olarak ayırdı

lll) wordpunk_tokenize: Burada tüm sözcükleri ve noktalama işaretlerini ayırır.

wordpunk_tokenize: bize tüm sözcükleri ve noktalama işaretlerini içeren belirteç verir

lV) TreebankWordTokenizer: Metni bu noktalama işaretleri olarak böler ?!.,;, diğer yandan İngilizce kelimeler için çeşitli ortak kurallardır.

TreebankWordTokenizer: yukarıdaki sarı işarete bakın, bunun benim adım olduğunu bileceksiniz, böylece onu bir belirteç olarak görüyor

V) TweetTokenizer: Metni bu noktalama işaretleri olarak böler, ?!.,;böylece emojiler

TweetTokenizer

Vl) MWETokenizer: Burada tokeni istediğimiz gibi ekleyebiliriz, çünkü bu tokenizer bunu add_mweyapmamızı sağlar

MWETokenizer: sonuçta gördüğümüz gibi bir belirteç ekledik, o belirteci göreceksiniz

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.

Tüm kelimeleri, noktalama işaretlerini ve emojileri bize belirteci ve dizinini verir.

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.

burada tüm noktalama işaretlerini ve emojileri kaldırır

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.

  1. Sık kullanılan kelimeleri daha küçük alt kelimelere bölmeyin.
  2. 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.

aynı karakterler ama farklı anlamları var

Çö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