Ana içeriğe geç

Python Bag of Words Model: Kapsamlı Bir Rehber

Python’da bag of words modelinin nasıl uygulanacağına dair bilmeniz gereken her şeyi keşfedin.
· 12 dk. oku

Yapay Zeka ile Keşfedin

Bag of Words (BoW), Doğal Dil İşleme (NLP) alanında bir tekniktir. Metin verilerini dilbilgisi ve kelime sırasını dikkate almadan, özellikle sayısal değerlere dönüştürerek makine tarafından okunabilir formata getirmek için yaygın olarak kullanılır. BoW’u anlamak, metin verileriyle çalışan herkes için önemlidir. Python, Bag of Words’ü etkili bir şekilde uygulamak için birden fazla araç ve kütüphane sunar.

Bu eğitimde BoW’a derinlemesine bakacak, kavramlarını tanıtacak, kullanım alanlarını ele alacak ve Python’da ayrıntılı bir uygulamasını adım adım göstereceğiz. Eğitimin sonunda Bag of Words modelini gerçek dünya problemlerine uygulayabileceksiniz. NLP’ye yeni başlıyorsanız, daha fazlası için Python ile Doğal Dil İşleme beceri yolumuza göz atın. 

Bag of Words nedir?

Bag of Words, metin verilerinden özellikleri çıkarmak için kullanılan bir tekniktir; metin sınıflandırma ve duygu analizi gibi makine öğrenmesi görevlerinde kullanılır. Bu önemlidir çünkü makine öğrenmesi algoritmaları metin verisini doğrudan işleyemez. Metni sayılara dönüştürme süreci, özellik çıkarımı veya özellik kodlama olarak bilinir.

Bir Bag of Words, bir belgedeki kelimelerin görülme sıklığına dayanır. Süreç, metindeki kelime dağarcığını bulmak ve bunların görülme sıklığını ölçmekle başlar. “Çanta” olarak adlandırılır çünkü kelimelerin sırası ve yapısı dikkate alınmaz, yalnızca görülme durumları önemlidir. 

Bag of Words modeli, etrafındaki kelimeleri kullanarak bir hedef kelimeyi tahmin eden ve kelimeler arasındaki anlamsal ilişkileri yakalayan yoğun kelime gömme (embedding) lerini öğrenen Sürekli Bag of Words Modeli’nden (CBOW) farklıdır. CBOW, büyük bir derlem üzerinde eğitilmesini gerektirir ve kelime bağlamının önemli olduğu karmaşık NLP uygulamaları için değerli, düşük boyutlu vektörler üretir.

Boyut

BOW

CBOW

Amaç

Her kelimenin görülme sayısını sayar

Bağlama göre hedef kelimeyi tahmin eder

Çıktı Türü

Yüksek boyutlu, seyrek vektör

Düşük boyutlu, yoğun gömme

Bağlamı Dikkate Alır

Hayır (kelime sırasını yok sayar)

Evet (çevredeki kelimeleri kullanır)

Temsil

Seyrek frekans vektörü

Anlamı yakalayan yoğun vektör

Karmaşıklık

Düşük (eğitim gerektirmez)

Yüksek (büyük bir derlemde eğitim gerektirir)

Tipik Uygulamalar

Metin sınıflandırma, duygu analizi

Kelime gömmeleri, bağlam gerektiren NLP görevleri

Neden Bag of Words Kullanılır?

Bag of Words, birçok NLP görevinde kullanışlıdır; kullanımına ilişkin bazı nedenler şunlardır:

  • Özellik çıkarımı: Yapılandırılmamış metin verilerini, çeşitli makine öğrenmesi algoritmalarına girdi olarak kullanılabilecek yapılandırılmış verilere dönüştürür.
  • Basitlik ve verimlilik: BoW hesaplaması basit bir şekilde uygulanır ve küçükten orta büyüklüğe metin derlemlerinde iyi çalışır.
  • Belge benzerliği: Kosinüs benzerliği gibi tekniklerle metin belgeleri arasındaki benzerlik hesaplanabilir.
  • Metin sınıflandırma: Naive Bayes gibi tekniklerle birleştirildiğinde, BoW spam sınıflandırma ve duygu analizi gibi metin sınıflandırma görevlerinde etkilidir.

Bununla birlikte, semantik, kelime yapısı veya kelime sırasını dikkate almaması gibi dezavantajları da vardır.

Python’da Bag of Words’ün Uygulanma Adımları

Bir bag-of-words modeli oluşturmak için, bir derlemdeki tüm kelimeleri alır ve her kelime için bir sütun oluştururuz. Satırlar cümleleri temsil eder. Belirli bir kelime cümlede varsa 1, yoksa 0 ile temsil edilir. Sütundaki her kelime tek bir özelliği temsil eder.

Sonuçta seyrek bir matris elde ederiz. Seyrek matris, çok sayıda sıfır içeren matristir. 

Veri ön işleme

Python’da bir Bag of Words modeli oluşturmak için birkaç ön işleme adımı gerekir. Bu adımlar arasında tokenleştirme ve durak (stop) kelimelerin kaldırılması bulunur.

Tokenleştirme, bir metni genellikle kelimeler olacak şekilde daha küçük birimlere ayırma işlemidir. Tokenleştirmeyi NLTK ile gerçekleştirebilirsiniz. 

Durak kelimeler İngilizce’de "the", "that" ve "a" gibi, bir cümlenin kutbuna (polarity) katkı sağlamayan yaygın kelimelerdir.

import nltk
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize

# Download stopwords and tokenizer if you haven't already
nltk.download("punkt")
nltk.download("stopwords")

# Example sentence
sentence = "This is an example showing how to remove stop words from a sentence."

# Tokenize the sentence into words
words = word_tokenize(sentence)

# Get the list of stop words in English
stop_words = set(stopwords.words("english"))

# Remove stop words from the sentence
filtered_sentence = [word for word in words if word.lower() not in stop_words]

# Join the words back into a sentence
filtered_sentence = " ".join(filtered_sentence)
print(filtered_sentence)

Çıktı:

example showing remove stop words sentence.

Kelime dağarcığı oluşturma

Kelime dağarcığı (vocabulary), bir metin derleminde bulunan benzersiz kelimelerin bir koleksiyonudur. Bir kelime dağarcığı oluşturmak, derlemdeki tüm benzersiz kelimeleri toplamak ve görülme sayılarını saymayı içerir. Bu kelime dağarcığı, dil modelleme, kelime gömmeleri ve metin sınıflandırma gibi çeşitli NLP görevleri için kullanışlıdır.

Aşağıdaki kod, derlemdeki kelimelerin basit bir frekans dağılımını oluşturur; bu, bir kelime dağarcığı oluşturma veya metin içeriğini anlama gibi temel NLP görevleri için kullanışlıdır:

  • corpus değişkeni birkaç örnek cümle tutar. Gerçek uygulamalarda bu, daha büyük ve çeşitli metin verilerini içerir.
  • vocab = defaultdict(int), kelime frekansı sayımını kolaylaştırır; yeni herhangi bir kelimeyi otomatik olarak 0 ile başlatır ve doğrudan artırıma izin verir.
  • Her cümle, küçük harfe dönüştürülerek ve düzenli ifadeler kullanılarak kelimeler çıkarılarak tokenleştirilir. \b\w+\b deseni yalnızca alfasayısal karakterlerden oluşan kelimeleri tanımlar; noktalama işaretlerini ve diğer sembolleri yok sayar.
  • Her kelimenin sayısı vocab sözlüğünde güncellenir.
  • Kelime dağarcığı, en sık geçen kelimelerin üstte görülebilmesini sağlamak için azalan düzende frekansa göre sıralanır ve referans için görüntülenir.
import re  
# Import the regular expressions module to help with text processing
from collections import (
    defaultdict,
)  

# Import defaultdict to easily handle word frequency counting

# Sample corpus of text - a small dataset of sentences to analyze
corpus = [
    "Tokenization is the process of breaking text into words.",
    "Vocabulary is the collection of unique words.",
    "The process of tokenizing is essential in NLP.",
]

# Initialize a defaultdict with integer values to store word frequencies

# defaultdict(int) initializes each new key with a default integer value of 0
vocab = defaultdict(int)

# Loop through each sentence in the corpus to tokenize and normalize
for sentence in corpus:
    # Convert the sentence to lowercase to ensure consistency in counting (e.g., 'Tokenization' and 'tokenization' are treated as the same word)
    # Use regular expressions to find words composed of alphanumeric characters only
    words = re.findall(r"\b\w+\b", sentence.lower())
    # For each word found, increment its count in the vocab dictionary
    for word in words:
        vocab[word] += 1

# Convert the defaultdict vocab to a regular dictionary for easier handling and sorting

# Sort the dictionary by word frequency in descending order and convert it to a new dictionary
sorted_vocab = dict(sorted(vocab.items(), key=lambda x: x[1], reverse=True))

# Display the sorted vocabulary with each word and its frequency count
print("Vocabulary with Frequencies:", sorted_vocab)

Çıktı:

Vocabulary with Frequencies: {'is': 3, 'the': 3, 'of': 3, 'process': 2, 'words': 2, 'tokenization': 1, 'breaking': 1, 'text': 1, 'into': 1, 'vocabulary': 1, 'collection': 1, 'unique': 1, 'tokenizing': 1, 'essential': 1, 'in': 1, 'nlp': 1}

Büyük derlemler için kelime dağarcığını elle oluşturmak zaman alıcı olabilir. Scikit-learn’ün CountVectorizer’ı bu süreci otomatikleştirir ve ileride göreceğimiz gibi daha esnek metin işleme olanağı sunar. 

Python ile Bag of Words Uygulaması (Sıfırdan)

Python’da sıfırdan basit bir Bag of Words uygulamasıyla başlayalım. Bu, perde arkasındaki yapı taşlarını ve çalışma mantığını anlamanıza yardımcı olacaktır.

Manuel uygulama

Adım 1: Metin Verisinin Ön İşlenmesi

Tokenleştirme, küçük harfe dönüştürme ve noktalama işaretlerini kaldırma dahil olmak üzere metni işlemek için basit bir fonksiyon tanımlayarak başlayacağız.

from collections import defaultdict
import string

# Sample text data: sentences
corpus = [
    "Python is amazing and fun.",
    "Python is not just fun but also powerful.",
    "Learning Python is fun!",
]
# Function to preprocess text
def preprocess(text):
    # Convert to lowercase
    text = text.lower()
    # Remove punctuation
    text = text.translate(str.maketrans("", "", string.punctuation))
    # Tokenize: split the text into words
    tokens = text.split()
    return tokens

# Apply preprocessing to the sample corpus
processed_corpus = [preprocess(sentence) for sentence in corpus]
print(processed_corpus)

Çıktı:

[['python', 'is', 'amazing', 'and', 'fun'], ['python', 'is', 'not', 'just', 'fun', 'but', 'also', 'powerful'], ['learning', 'python', 'is', 'fun']]

Adım 2: Kelime Dağarcığını Oluşturma

Şimdi, tüm belgeleri tarayıp benzersiz kelimelerin tam bir listesini, yani kelime dağarcığımızı oluşturmalıyız.

# Initialize an empty set for the vocabulary
vocabulary = set()

# Build the vocabulary
for sentence in processed_corpus:
    vocabulary.update(sentence)

# Convert to a sorted list
vocabulary = sorted(list(vocabulary))
print("Vocabulary:", vocabulary)

Adım 3: Kelime Sıklıklarını Hesaplama ve Vektörleştirme

Şimdi, işlenmiş derlemdeki her belge için kelime dağarcığındaki her kelimenin sıklığını hesaplayacağız.

def create_bow_vector(sentence, vocab):
    vector = [0] * len(vocab)  # Initialize a vector of zeros
    for word in sentence:
        if word in vocab:
            idx = vocab.index(word)  # Find the index of the word in the vocabulary
            vector[idx] += 1  # Increment the count at that index
    return vector

Bu noktada, derleminizdeki her belge için bir Bag of Words temsili oluşturmuş olacaksınız.

# Create BoW vector for each sentence in the processed corpus
bow_vectors = [create_bow_vector(sentence, vocabulary) for sentence in processed_corpus]
print("Bag of Words Vectors:")
for vector in bow_vectors:
    print(vector)

Çıktı:

Bag of Words Vectors:
[0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1]
[1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1]
[0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1]

Scikit-learn’ün CountVectorizer’ını Kullanma

Bag of Words modelini elle kurmak öğrenmek için iyidir; ancak üretim uygulamaları için Scikit-learn gibi verimli ve optimize kütüphaneleri kullanmak isteyeceksiniz.

Tokenleştirme için kullandığımız Python fonksiyonu, sklearn.feature_extraction.text içinden içe aktarılan CountVectorizer’dır. CountVectorizer’ın özelliklerinden biri max_features’tır; bu, bag of words modelinde bulunmasını istediğiniz azami kelime sayısını temsil eder. Bu örnekte None kullanıyoruz; bu da tüm özelliklerin kullanılacağı anlamına gelir. 

Bir CountVectorizer örneği oluşturduktan sonra, bag of words modelini oluşturmak için .fit_transform() yöntemini kullanın. Ardından, bag of words modelini bir makine öğrenmesi modeline beslenebilecek numpy dizilerine dönüştürmek için .toarray() kullanın.

Uygulama tamamlandığında CountVectorizer, özellik indekslerinin bir sözlüğünü oluşturmuş olur. Kelime dağarcığındaki bir kelimenin indeks değeri, tüm eğitim derlemi boyunca frekansı ile ilişkilendirilir.

from sklearn.feature_extraction.text import CountVectorizer
# Original corpus
corpus = [
    "Python is amazing and fun.",
    "Python is not just fun but also powerful.",
    "Learning Python is fun!",
]
# Create a CountVectorizer Object
vectorizer = CountVectorizer()
# Fit and transform the corpus
X = vectorizer.fit_transform(corpus)
# Print the generated vocabulary
print("Vocabulary:", vectorizer.get_feature_names_out())
# Print the Bag-of-Words matrix
print("BoW Representation:")
print(X.toarray())

Çıktı:

markdownVocabulary: ['also' 'amazing' 'and' 'but' 'fun' 'is' 'just' 'learning' 'not'

 'powerful' 'python']

BoW Representation:

[[0 1 1 0 1 1 0 0 0 0 1]

 [1 0 0 1 1 1 1 0 1 1 1]

 [0 0 0 0 1 1 0 1 0 0 1]]

Örnek: Bag of Words Uygulaması

Tüm süreci göstermek için şimdi BoW modelini üç film eleştirisinden oluşan küçük bir metin derlemine uygulayalım. 

Bu küçük metin derlemine BoW modelini uygulamak için Scikit-learn’ün CountVectorizer’ını kullanacağız.

İzleyeceğimiz adımlar şunlardır:

  • CountVectorizer metni tokenleştirir, noktalama işaretlerini kaldırır ve kelimeleri otomatik olarak küçük harfe çevirir.
  • .fit_transform(corpus), derlemi bir belge-terim matrisine dönüştürür; burada her satır bir belgeyi, her sütun ise kelime dağarcığındaki bir kelimeyi temsil eder.
  • X_dense, her belgede her kelimenin sıklığını temsil eden yoğun matristir.
from sklearn.feature_extraction.text import CountVectorizer
# Sample corpus of movie reviews
corpus = [
    "I loved the movie, it was fantastic!",
    "The movie was okay, but not great.",
    "I hated the movie, it was terrible.",
]

# Initialize the CountVectorizer
vectorizer = CountVectorizer()

# Fit and transform the corpus to a document-term matrix
X = vectorizer.fit_transform(corpus)

# Convert the document-term matrix into a dense format (optional for visualization)
X_dense = X.toarray()

# Get the vocabulary (mapping of words to index positions)
vocab = vectorizer.get_feature_names_out()

# Print the vocabulary and document-term matrix
print("Vocabulary:", vocab)
print("Document-Term Matrix:\n", X_dense)

Çıktı:

Vocabulary: ['but' 'fantastic' 'great' 'hated' 'it' 'loved' 'movie' 'not' 'okay' 'terrible' 'the' 'was']
Document-Term Matrix:
 [[0 1 0 0 1 1 1 0 0 0 1 1]  # First review: "I loved the movie, it was fantastic!"
  [1 0 1 0 1 0 1 1 1 0 1 1]  # Second review: "The movie was okay, but not great."
  [0 0 0 1 1 0 1 0 0 1 1 1]] # Third review: "I hated the movie, it was terrible."

Yukarıdaki çıktıyı şu şekilde yorumlayabiliriz:

  • Derlemdeki her benzersiz kelimeye bir indeks atanır ve kelimeler alfabetik olarak sıralanır. Örneğin, "but" 0. indekste, "fantastic" 1. indekste, "movie" 6. indekste yer alır, vb.
  •  Belge matrisindeki her satır bir film eleştirisini, her sütun ise kelime dağarcığındaki bir kelimeyi ifade eder. Matristeki değerler, ilgili belgede her bir kelimenin sıklığını temsil eder.
    • Birinci İnceleme: [0 1 0 0 1 1 1 0 0 0 1 1] şu anlama gelir:
      • "fantastic" kelimesi bir kez geçer (1, indeks 1’de),
      • "loved" kelimesi bir kez geçer (1, indeks 5’te),
      • "movie" kelimesi bir kez geçer (1, indeks 6’da),
      • "it" kelimesi bir kez geçer (1, indeks 4’te),
      • Ve benzeri.

BoW vektörü şu şekilde yorumlanabilir:

  • Her belge, kelime sayımlarını temsil eden sayıların bir vektörüdür. Vektörün boyutları, kelime dağarcığının boyutuna eşittir. Bu durumda kelime dağarcığı 12 kelimeden oluşur; dolayısıyla her eleştiri 12 boyutlu bir vektöre dönüştürülür.
  • Her satırdaki kelimelerin çoğu sıfırdır; çünkü her belge, kelime dağarcığındaki her kelimeyi içermez. Bu nedenle BoW modelleri genellikle seyrektir; yani birçok sıfır içerir.

Bag of Words’ün Avantajları ve Sınırlamaları

Şimdi Bag of Words modelinin bazı avantaj ve sınırlamalarını ele alalım.

Avantajlar

  1. Uygulaması ve yorumlaması basittir: Bag of Words, en doğrudan metin temsil tekniklerinden biridir ve bu da onu yeni başlayanlar için ideal kılar. Basitliği, karmaşık ön işleme veya özelleşmiş modellere gerek olmadan hızlı uygulamaya olanak tanır.
  2. Metin sınıflandırma görevlerinde kullanımı kolaydır: Bag of Words, metin sınıflandırma, duygu analizi ve spam tespiti gibi temel görevler için uygundur. Bu görevler çoğu zaman sofistike dil modelleri gerektirmez; bu nedenle BOW temsili yeterli ve verimlidir.

Sınırlamalar

  1. Kelime dağarcığı boyutu, temsillerin seyreklik düzeyini etkiler: Kelime dağarcığı büyüdükçe temsil daha seyrek ve yüksek boyutlu hale gelir. Bu seyreklik, modellerin etkili şekilde öğrenmesini zorlaştırabilir ve aşırı hesaplama maliyetlerinden kaçınmak için kelime dağarcığı boyutunun dikkatle ayarlanmasını gerektirir.
  2. Hesaplama açısından maliyetli seyrek matrisler üretir: Her belge, potansiyel olarak büyük bir kelime dağarcığındaki her kelimenin sıklığıyla temsil edildiği için, ortaya çıkan matrisler çoğu zaman büyük ölçüde sıfırlardan oluşur; bu da makine öğrenmesi boru hatlarında depolama ve işlemeyi verimsiz kılabilir. Seyrek matrisler önemli miktarda bellek tüketir ve özellikle büyük veri kümelerinde verimli depolama ve hesaplama için sıklıkla özel araç ve kütüphaneler gerektirir.
  3. Anlam ve bağlamı kaybeder: BOW, kelime sırasını ve cümle yapısını göz ardı eder; bu da dilbilgisel ilişkilerin ve anlamın kaybına yol açar. Bu sınırlama, bağlamın, nüansın ve kelime sırasının önemli olduğu çeviri veya karmaşık cümlelerde duygu tespiti gibi görevler için onu daha az uygun kılar.

Bag of Words’te kelime dağarcığının boyutunu azaltmak için şu stratejiler kullanılabilir:

  • Büyük-küçük harf farkını yok sayma. 
  • Noktalama işaretlerini kaldırma.
  • Durak kelimeleri (the ve a gibi yaygın kelimeler) kaldırma. 
  • Tüm kelimelerin doğru yazıldığından emin olma. 
  • Kelimeleri kök biçimlerine indirgemek için gövdeleme (stemming) tekniklerini kullanma.

Sonraki Adımlar: Bag of Words’ün Ötesi

Bag of Words modelinin sınırlamalarından biri, tüm kelimeleri eşit şekilde ele almasıdır. Ne yazık ki bu, bazı kelimelerin yalnızca sık göründükleri için gereğinden fazla önem kazanmasına yol açabilir. 

TF-IDF (Terim Frekansı - Ters Belge Frekansı) bu soruna bir çözümdür; çünkü kelimelerin ağırlığını tüm belgeler boyunca ne kadar sık göründüklerine göre ayarlar.

TF-IDF: Bag of Words’e Bir Uzantı

Terim Frekansı (TF), bir belgede bir terimin görülme sıklığını temsil eder. Ters Belge Frekansı (IDF), birden çok belgede yaygın olarak geçen kelimelerin etkisini azaltır. TF-IDF puanı bu iki ölçütün çarpımıyla hesaplanır. 

200 kelime içeren bir belge düşünün; love kelimesi 5 kez geçiyor olsun. love için TF (5 / 200) = 0,025’tir. Bir milyon belgemiz olduğunu ve love kelimesinin bunların bininde geçtiğini varsayalım; bu durumda ters belge sıklığı (IDF) log(1000000 / 1000) = 3 olarak hesaplanır. TF-IDF ağırlığı bu iki değerin çarpımıdır: 0,025 * 3 = 0,075.

Scikit-learn’de bu, TfidfVectorizer sınıfı kullanılarak nispeten kolayca hesaplanır.

from sklearn.feature_extraction.text import TfidfVectorizer
# Sample corpus
corpus = [
    "Python is amazing and fun.",
    "Python is not just fun but also powerful.",
    "Learning Python is fun!",
]

# Create the Tf-idf vectorizer
tfidf_vectorizer = TfidfVectorizer()

# Fit and transform the corpus
X_tfidf = tfidf_vectorizer.fit_transform(corpus)

# Show the Vocabulary
print("Vocabulary:", tfidf_vectorizer.get_feature_names_out())

# Show the TF-IDF Matrix
print("TF-IDF Representation:")
print(X_tfidf.toarray())

Çıktı:

Vocabulary: ['also' 'amazing' 'and' 'but' 'fun' 'is' 'just' 'learning' 'not'
 'powerful' 'python']
TF-IDF Representation:
[[0.         0.57292883 0.57292883 0.         0.338381   0.338381
  0.         0.         0.         0.         0.338381  ]
 [0.40667606 0.         0.         0.40667606 0.24018943 0.24018943
  0.40667606 0.         0.40667606 0.40667606 0.24018943]
 [0.         0.         0.         0.         0.41285857 0.41285857
  0.         0.69903033 0.         0.         0.41285857]]

Yukarıda uygulanan TF-IDF matrisi, ham frekanslar yerine ağırlıklı bir ölçüm sağlar.

Bag of Words modelinin, özellikle daha büyük ve karmaşık veri kümeleri için sınırlamaları olsa da, birçok NLP uygulamasında hâlâ temel bir yapı taşıdır. Bunu anlamak, kelime gömmeleri ve Transformerlar gibi daha gelişmiş modelleri keşfederken size yardımcı olacaktır.

Buradan, projelerinizde BoW ile deneyler yapabilirsiniz; örneğin spam tespiti, duygu analizi, belge kümeleme ve daha fazlası.

Bag of Words’ün ötesinde daha fazla iyileştirme isterseniz, Word2Vec ve GloVe gibi yöntemleri veya BERT gibi derin öğrenme modellerini inceleyebilirsiniz.

Son Düşünceler

Bag of Words tekniği, Doğal Dil İşleme’de kullanılan temel bir tekniktir. Yapılandırılmamış metni, makine öğrenmesi algoritmaları tarafından kullanılabilir sayısal özelliklere dönüştürmenin basit ama etkili bir yolunu sunar. Bu eğitimde şunları ele aldık:

  • Bag of Words (BoW) modeli nedir?
  • Makine öğrenmesi modelleri kurmada Bag of Words modelinin faydaları.
  • Bag of Words modelinin Python’da nasıl uygulanacağı.
  •  Bag of Words’ün avantajları ve sınırlamaları.
  • Bag of Words modelinin arkasındaki teori ve motivasyon.
  • Geleneksel Bag of Words yaklaşımına bir iyileştirme olarak TF-IDF’in tanıtımı.

Doğal dil işlemeye derinlemesine dalmak için Python ile Doğal Dil İşleme beceri yolumuza göz atın. 

Derrick Mwiti

Yazar

Derrick Mwiti

Konular

İlgili