4. Bölüm · Uygulamalı Doğal Dil İşleme
Mühendislik anlamında bir bake-off: birkaç aday yöntem, tek görev, tek protokol ve hepsi için aynı metrik.
LogisticRegression sınıfıC = 1.0 kullanıyor: TF-IDF satırları 1,0 normuyla geliyor, ortalaması alınmış vektörler normalleştirilmiyor — aynı C aynı düzenlileştirmeye karşılık gelmeyebilirSonuçlar yöntemlerin bu somut kurulumlarını karşılaştırır; aradaki farkı tek başına “temsil ailesinin etkisi” diye yorumlamayacağız.
İkili duygu sınıflandırması: olumlu ya da olumsuz etiketli 235.165 Türkçe ürün yorumu.
Bu veri kümesini üç nedenle seçtik:
Barmanbay 2020 — Türkçe ürün yorumları
drop_duplicates ilk satırı tutuyor ve bu dosyada olumlu yorumlar önce geliyor: 77 metnin tamamı olumlu etiketiyle kaldırows, seçilen satırların sıra numaralarından hesaplanan bir özettir: aynı 12 karakter aynı satırlar demektir; sınıf toplamları bunu göstermezHer yoruma “olumlu” deyin. Metne hiç bakmayın.
Bu kural yorum metnini hiç kullanmadan %93,68 doğruluk elde eder, çünkü test kümesinin %93,68’i olumludur — ve 632 olumsuz yorumun hiçbirini bulamaz.
\[\text{precision} = \frac{TP}{TP + FP}, \qquad \text{recall} = \frac{TP}{TP + FN}, \qquad F_1 = \frac{2\,TP}{2\,TP + FP + FN}\]
\[\text{macro-}F_1 = \frac{1}{K}\sum_{k=1}^{K} F_1^{(k)}\]
Macro-F1, sınıf başına F1 skorlarının eşit ağırlıklı ortalamasıdır. Doğruluk örneklere, macro-F1 sınıflara eşit ağırlık verir.
average= |
ne hesaplar | çoğunluk kuralının skoru |
|---|---|---|
"binary" (iki sınıf için varsayılan) |
yalnızca 1 numaralı sınıfın F1’i — burada çoğunluk sınıfı olan olumlu sınıf | 96,74 |
"micro" |
bölmeden önce bütün sayımları havuzda toplar; burada doğruluğa eşittir | 93,68 |
"weighted" |
her sınıfın F1’ini o sınıfın örnek sayısıyla ağırlıklandırır | 90,62 |
"macro" |
sınıflara eşit ağırlık verir | 48,37 |
class_weight="balanced") iki ayrı tasarım kararıdırBu bölümde yöntemleri karşılaştırırken başlıca özet skor macro-F1; doğruluk da bağlam sağlaması için raporlanıyor. Macro-F1 evrensel bir çözüm değil: olumsuz sınıfın recall’u, belirli bir yanlış alarm bütçesindeki precision ya da beklenen iş maliyeti daha doğrudan karar metrikleri olabilir.
str.lower() metodu Unicode’un varsayılan eşlemesini uygular ve yerel ayara göre değişmez: I için i, İ için ise i ile bir birleştirici nokta (U+0307) üretirBüyük-küçük harf dönüşümü dile bağlıdır; dile özgü küçük harf politikası da ön işleme ve tokenizer sözleşmesinin bir parçasıdır.
â, î, û ve birleştirici işaretler token’ı bölüyor!!!, 5/5 ya da bir emoji pekâlâ duygu taşıyabilir; bu deney onları modellemiyor ve skora etkisi ölçülmeditr_lower doğru yazımı varsayar: İngilizce klavyeyle yazılmış bir metinde IYI pekâlâ “İYİ” demek olabilir ve tr_lower onu ıyı yaparak yeni bir hata üretirASCII’leştirilmiş metin için gereken şey Türkçe karakter geri kazanımıdır (deasciification); ayrıntıları Türkçe NLP bölümünde.
min_df=2 sonrasında 30.195 sütun kalıyor: min_df derlem frekansını değil, belge frekansını sayar| ön ek | farklı biçim | örnekler |
|---|---|---|
kulla |
895 | kullanışlı, kullanıyorum, kullandım |
bekle |
285 | beklediğimden, beklediğim, beklemiyordum |
çalış |
247 | çalışıyor, çalışma, çalışan |
çıkar |
209 | çıkarıyor, çıkar, çıkartıyor |
düşün |
195 | düşünüyorum, düşünmeden, düşünenlere |
kullanışlı için öğrenilen katsayı kendiliğinden kullanıyorum sütununa aktarılmazTek bir kökün 895 çekimi değil: çekimler, türetimler ve yazım varyantları birlikte. Beş karakterlik ön ek, kök ya da biçimbirim çözümlemesi değildir.
| satır | vektörleştirici | sözlük eşiği ve token’lar | sütun |
|---|---|---|---|
| bag of words | CountVectorizer |
min_df=2, kelime deseni |
30.195 |
| tf-idf | TfidfVectorizer, sublinear_tf=True |
min_df=2, kelime deseni |
30.195 |
| tf-idf 1-2 gram | aynısı, ngram_range=(1, 2) ile |
min_df=2, kelime deseni |
101.659 |
| tf-idf char_wb 3-5 | analyzer="char_wb", ngram_range=(3, 5) |
min_df=3; desen kullanılmaz |
94.939 |
preprocessor=tr_lower, lowercase=False veriliyor: aksi hâlde scikit-learn Python’ın str.lower()’ını çağırırLogisticRegression; max_iter=2000, class_weight="balanced", random_state=42Aynı girdi iki analyzer’dan geçince: "5/5 harika!! ürün çok i̇yi 👍"
| analyzer | öznitelikler | ne oldu |
|---|---|---|
analyzer="word", token_pattern=[a-zçğıöşü]+ |
['harika', 'ürün', 'çok', 'i', 'yi'] |
5/5, !!, emoji düştü; birleştirici nokta “i̇yi”yi ikiye böldü |
analyzer="char_wb", ngram_range=(3, 5) |
[' 5/', '5/5', '/5 ', ' ha', 'har', 'ari', ...] |
rakam, eğik çizgi, ünlem ve boşluklar öznitelik olarak duruyor |
scikit-learn’de token_pattern yalnızca analyzer="word" iken kullanılır; char_wb onu tümüyle yok sayar ve kendi karakter akışını işlermin_df=3 kullanıyor; üç kelime şeması ise min_df=2: savunulabilir bir tercih, ama taranmadıKarakter satırının skor farkı, karakter öznitelikleriyle birlikte bu ön işleme seçimini de yansıtıyor olabilir.
lowercase=False ile de onsuz da ilk rauntun tablosu bayt bayt aynı çıktı: tekilleştirilmiş 233.508 yorumun 37.076.865 karakteri içinde tek bir büyük harf yoki harfinin ardındantavsiye, tavsi + ye diye bölünüyor; işareti silince 30.195 sütunluk sözlük 29.823’e iniyor: 595 sütun yalnızca bu parçalanma yüzünden var| sonuç | [a-zçğıöşü]+ ile token’lar |
||
|---|---|---|---|
'İYİ'.lower() |
'i̇yi̇' |
['i', 'yi'] |
ikiye bölünür |
'IYI'.lower() |
'iyi' |
['iyi'] |
yanlış birleşir |
Onarım, size verilen metinden bu işareti silmektir; küçük harfe farklı biçimde çevirmek değil. Kodu neden yine de düzelttik? Çünkü kodu kopyalayan okurun derlemi böyle olmayacak.
CountVectorizer ile TfidfVectorizer arasında aynı anda üç şey değişiyor: IDF ağırlıklandırması, altdoğrusal terim frekansı (log-TF) ve L2 satır normalleştirmesi. Aynı C = 1.0:
unigram kelime öznitelikleri, min_df=2 |
doğruluk | macro-F1 | F1(neg) |
|---|---|---|---|
| ham sayımlar (= “bag of words”) | 92,14 | 73,51 | 51,30 |
| sayım + L2 | 88,07 | 69,57 | 45,85 |
| log-TF + L2 | 88,37 | 70,00 | 46,53 |
| sayım + idf + L2 | 90,20 | 72,16 | 49,74 |
| log-TF + idf, normalleştirme yok | 92,67 | 71,83 | 47,61 |
| log-TF + idf + L2 (= “tf-idf”) | 90,07 | 71,95 | 49,41 |
Ham sayımlara L2 satır normalleştirmesi eklemek macro-F1’i 73,51’den 69,57’ye düşürüyor; IDF onun üstüne eklendiğinde skor 72,16’ya çıkıyor. “TF-IDF burada IDF yüzünden geride kaldı” cümlesi deneyin gösterdiği şey değil.
C doğrulamada seçilince sıralama tersine dönüyorC, eğitimden ayrılan bir doğrulama diliminde seçildi (eğitim için 32.000, doğrulama için 8.000); sonra model 40.000 belgenin tamamında yeniden eğitildi:
“Ham sayımlar TF-IDF’in önünde” sonucu eşit bir ayar bütçesine dayanamadı: temsilin değişmez bir özelliği değil, paylaşılan ve ayarlanmamış bir C’ye bağlıydı.
iyi değil, güzel değil gibi yerel dizileri ayrı öznitelik olarak tutar: ayrı bir kelimeyle kurulan olumsuzlamabeğendim ile beğenmedim unigram düzeyinde de ayrı özniteliklerdir4,26 puanın ne kadarının hangi olumsuzlama türünden geldiğini bu bölüm ölçmedi; bunu söylemek için hedefli bir hata çözümlemesi ya da ablasyon gerekir.
| olumluya doğru | olumsuza doğru | ||
|---|---|---|---|
gayet |
+8,04 | etmiyorum |
−8,16 |
ederim |
+6,94 | değil |
−6,95 |
mükemmel |
+6,13 | kötü |
−6,63 |
teşekkürler |
+6,09 | etmem |
−6,35 |
harika |
+5,93 | beğenmedim |
−6,21 |
memnunum |
+5,84 | iade |
−5,85 |
güzel |
+5,48 | fakat |
−5,52 |
Bu eğitim dağılımında öğrenilmiş genel (global) ilişkiler: kelimelerin evrensel duygu puanları değil, tek bir tahminin eksiksiz açıklaması da değil.
Word2vec, fastText ve doc2vec; 40.000 eğitim yorumunun metni üzerinde, etiketleri kullanmadan sıfırdan eğitildi. Ön eğitimli vektör ve test yorumları bu eğitimde kullanılmadı.
| model | eğitim ayarları | belge vektörüne giden adım |
|---|---|---|
| word2vec | vector_size=100, window=5, min_count=2, sg=1, negative=5, epochs=10 |
sözlükte bulunan token’larının vektörlerinin ortalaması; sözlükte hiç token’ı yoksa sıfır vektörü |
| fastText | aynısı, min_n=3, max_n=6, bucket=500_000 ile |
ortalamaya belgenin bütün token’ları girer: sözlük dışı biçimlere de alt kelime vektörlerinden bir vektör kurulur |
| doc2vec | vector_size=100, min_count=2, epochs=20, dm=0 |
eğitim belgeleri: doğrudan öğrenilir; test belgeleri: infer_vector ile, varsayılan ayarlarla |
Üç matris de ilk rauntla aynı lojistik regresyona verilir.
### both rounds, sorted by macro-F1
tf-idf 1-2 gram 92.57 76.21 56.47 101,659
bag of words 92.14 73.51 51.30 30,195
tf-idf 90.07 71.95 49.41 30,195
tf-idf char_wb 3-5 88.63 70.39 47.14 94,939
averaged word2vec 79.92 61.39 34.64 100
averaged fastText 79.64 61.36 34.79 100
doc2vec (PV-DBOW) 71.96 55.13 27.66 100
majority baseline 93.68 48.37 0.00 —Eşleştirilmiş bootstrap, 10.000 test yorumu: macro-F1 farkı ve %95 aralığı.
tf-idf 1-2 gram - bag of words +2.69 [ +1.60, +3.82]
bag of words - tf-idf +1.56 [ +0.53, +2.55]
tf-idf - tf-idf char_wb 3-5 +1.57 [ +0.59, +2.54]
tf-idf char_wb 3-5 - averaged word2vec +9.01 [ +7.97, +10.01]
averaged word2vec - averaged fastText +0.08 [ -0.60, +0.77]
averaged fastText - doc2vec (PV-DBOW) +5.85 [ +5.02, +6.69]
tf-idf 1-2 gram - averaged word2vec +14.83 [+13.65, +16.01]| bigram TF-IDF | ortalaması alınmış word2vec | |
|---|---|---|
| macro-F1 | 76,21 | 61,39 |
| olumsuz sınıfta F1 | 56,47 | 34,64 |
| olumsuz sınıfta recall | %76,3 | %84,2 |
| olumsuz sınıfta precision | %44,8 | %21,8 |
Bunlar test kümesi üzerindeki toplu oranlardır. Bu yanlış alarm örüntüsü, temsilin ayırt ediciliği kadar class_weight="balanced", karar eşiği ve C seçimiyle de ilişkili olabilir.
C hiçbir satır için ayarlanmadı; her satır tek bir bölmeden ve tek bir koşudan geliyorDerlem boyutuna bağlı olmayan şey ortalama alma kusuru: o arıza vektörlerde değil, havuzlama adımındadır. Bu bölümün genellenebilir sonucu budur; sıralama ise yerel bir sonuç.
| kelime TF-IDF matrisi | yoğun belge matrisi | |
|---|---|---|
| sütun | 30.195 | 100 |
| satır başına sıfır dışı değer | ortalama 19,8 | 100 |
| ölçülen eğitim matrisi belleği | 9,7 MB | 16,0 MB |
Belge başına 100 sayı ile 61,39 macro-F1’e karşılık, 101.659 sütunla 76,21. Maliyetleri hedef kullanımınızda ayrı ayrı ölçün.
### nearest neighbours for unseen word forms
kargolanmamış
word2vec KeyError
fastText kargolanmış, kargolandı, kargolanma, kargolanıp, kargolu
tavsiyelerim
word2vec KeyError
fastText tavsiyeleri, tavsiyeler, tavsiyeederim, tavsiyedir
hızlıcana (günlük konuşma dili)
word2vec KeyError
fastText hızlıca, hızlıda, hızlısı, hızlıydı, hızlıkargolanmamış’ın ilk komşusu, olumsuzluk eki taşımayan kargolanmış: biçim benzerliği olumsuzluk ayrımını gölgeleyebiliyor.
| sorgu | word2vec | fastText |
|---|---|---|
kargo |
teslimat, gönderim, gönderi, kargoda, kargoyla, kargolama — farklı kelimeler, aynı konu | kargocu, kargolu, kargosu, kargonuz, kargom, kargomun — hepsi aynı kökün çekimleri |
kalitesiz |
dandik, kullanışsız, dayanıksız, uyduruk, kırılacak — kötü demenin beş ayrı yolu, kökleri farklı | kalitesizmiş, kalitesizliği, kalitel, kalitesi, kalitesindeki — hepsi aynı kökün biçimleri |
fastText’in listesinde kalitesi var — eşanlamlı değil: -siz ekinin taşıdığı olumsuzluğu taşımayan bir isim biçimi. Bu ölçüm yalnızca yazımsal örtüşmeyi sayar; komşuların anlamca ne kadar uygun olduğunu söylemez.
| word2vec | fastText | |
|---|---|---|
| modelin vektör sunabildiği farklı test biçimleri | %53,6 | %100 |
| bu koşudaki macro-F1 | 61,39 | 61,36 |
Vektör üretmek doğru anlamı garanti etmez. İçsel (intrinsic) ölçümleri, kapsamayı ve görev başarısını ayrı ayrı ölçün.
İki sonuç da yalnızca incelenen iki kurulum ve bu test verisi için geçerli. Asıl ilginç soru, o 272 örneğin neye benzediği.
| yorum | gerçek | kim haklı |
|---|---|---|
"en guvenli alısveriş sitesi" |
olumlu | fastText — Türkçe karakterler kısmen düşmüş |
"çok hizli ve temi̇z tesli̇mat" |
olumlu | fastText — kelime ortasında bozuk karakter |
"çok sessiz çalışıyor makina ." |
olumlu | fastText — “makina”, “makine”nin konuşma dilindeki biçimi |
"sıkıcı edebi yonu cok zayif" |
olumsuz | TF-IDF — fastText olumlu diyor |
"koku ne çok kötü ne çok iyi" |
olumsuz | TF-IDF — “ne… ne…” yapısı |
"cok guzel! kedi bayildi buna" |
olumlu | TF-IDF — fastText olumsuz diyor |
### cosine between a review and its negation
averaged tf-idf
fastText
ürünü çok beğendim / ürünü hiç beğenmedim 0.776 0.193
kesinlikle tavsiye ederim / … tavsiye etmem 0.919 0.474
kargo çok hızlı geldi / kargo çok yavaş geldi 0.943 0.572
fiyatına göre gayet kaliteli / … hiç kaliteli değil 0.892 0.690
bu üründen memnun kaldım / … memnun kalmadım 0.962 0.582Ortalama alma, iki cümlenin paylaştığı kelimelerin katkısıyla, değişen tek kelimenin etkisini azaltabilir — ama farkın tamamını yalnızca ortalama işlemine bağlayamayız.
\[\mathbf{d}_+ - \mathbf{d}_- = \frac{1}{5}\left(\mathbf{v}_{\text{liked}} - \mathbf{v}_{\text{disliked}}\right)\]
beğendim ile beğenmedim arasındaki kosinüs fastText’te 0,74, word2vec’te 0,53Ortalama alma bazı sinyalleri zayıflatabilir; 14,82 puanlık toplam farktaki payını ise bu örnekler ölçmez.
### macro-F1 by labelled training size (same test set of 10,000)
n negatives tf-idf tf-idf char word2vec fastText
100 6 48.37 48.37 53.51 53.87
250 16 48.53 48.84 61.59 63.10
500 32 49.28 50.60 61.02 61.16
1,000 63 55.40 58.55 59.52 59.93
2,500 158 66.61 68.36 60.91 61.19
5,000 316 71.16 70.47 61.52 60.80
10,000 632 72.55 71.29 61.80 61.56
20,000 1,264 72.42 71.26 60.94 60.96
40,000 2,529 71.95 70.39 61.39 61.36| n | tf-idf | tf-idf 1-2 gram | fastText | tf-idf > fastText |
|---|---|---|---|---|
| 250 | 48,98 | 48,70 | 60,96 | 0 / 10 |
| 1.000 | 56,57 | 51,68 | 61,96 | 0 / 10 |
| 1.250 | 59,59 | 53,43 | 62,00 | 2 / 10 |
| 1.500 | 61,87 | 55,63 | 61,90 | 4 / 10 |
| 1.750 | 63,95 | 57,81 | 61,64 | 10 / 10 |
| 2.500 | 67,52 | 63,42 | 61,55 | 10 / 10 |
| 5.000 | 70,97 | 71,49 | 61,18 | 10 / 10 |
Bu kurulumda sıra 1.250 ile 1.750 etiket arasında değişiyor. Tek bir altörnekleme dayanan bir sıralamayı bu yayılımla birlikte okuyun.
Taşınabilir olan şey eşik değil, biçim: az etiket rejiminde etiketsiz metinden öğrenilmiş bir temsilin önceliği olabilir; etiket arttıkça seyrek doğrusal model bu önceliği kapatır.
Bu açıklamayı sınamak için az etiketli koşuldaki katsayılara, hatalara ve daha güçlü düzenlileştirme seçeneklerine bakmak gerekir; bu bölüm bunu yapmadı.
Genelleşen kısım, sorunun kendisi: bu görevde beni sınırlayan etiket mi, temsil mi, yoksa ayarlar mı?
Tek CPU çekirdeğinde, 40.000 eğitim belgesiyle; süreler tek koşudan.
training matrix sütunu yalnızca eğitim matrisinin belleğidir; modeli, sözlüğü ya da embedding tablosunu ve tepe RAM kullanımını kapsamazBu kısa ve gürültülü yorum görevinde doc2vec’in varsayılan tercih olmasını destekleyen bir ölçüm yok. Mutlak sayıya da bakın: belge başına 0,17 milisaniye, çoğu servis için hâlâ küçük.
| kurulum | macro-F1 |
|---|---|
| tek başına ortalaması alınmış fastText | 61,36 |
| tek başına karakter TF-IDF’i | 70,39 |
| karakter TF-IDF’i ⊕ ortalaması alınmış fastText, düz birleştirme (95.039 boyut) | 71,65 |
tek başına karakter TF-IDF’i, aynı ayar bütçesiyle (C = 30) |
73,46 |
yoğun bloğu L2 ile normalleştirilip ölçeklenen melez (\(\alpha = 2\), C = 10) |
74,69 |
| kelime bigram TF-IDF’i, ayarlanmamış | 76,21 |
Melezi yalnızca kendi parçalarıyla karşılaştırıp başarı diye bildirmek, tam da bu bölümün karşı çıktığı şey olurdu: işinize gelen baseline’ı seçmek.
| bu deneyde ölçülen | ne zaman seçilir | |
|---|---|---|
| Bag of words | Sabit C = 1.0 ile kelime TF-IDF’inden yüksek skor aldı (73,51’e karşı 71,95). Belge uzunluğunu kendiliğinden normalleştirmez |
Kısa belge sınıflandırması için ilk baseline’lardan biri; ayarları doğrulama kümesinde seçin |
| TF-IDF (kelime) | C doğrulamada ayarlanınca 74,71 macro-F1 aldı ve ham sayımların önüne geçti; paylaşılan ve ayarlanmamış C ile gerisinde kaldı |
Genel amaçlı ilk seyrek baseline; vektörleştirici ve C seçimini eğitim/doğrulama sınırı içinde yapın |
| TF-IDF (kelime unigram + bigram) | Bu bölümdeki en yüksek macro-F1: 76,21. Az etikette unigram TF-IDF’in altında kaldı | Birkaç bin etiketiniz varsa ve yerel kalıpların önemli olabileceği kısa metin görevlerinde — duygu, niyet, triyaj |
| TF-IDF (karakter n-gram’ları) | 1.000 etikette kelime TF-IDF’inin 3,2 puan önündeydi; 144,8 MB eğitim matrisi; tam veride daha düşük macro-F1 (70,39) | Yazım değişkense ve ölçtüğünüz bellek ile skor uygunsa |
| bu deneyde ölçülen | ne zaman seçilir | |
|---|---|---|
| Ortalaması alınmış word2vec | 100 boyutlu belge vektörüyle 61,39 macro-F1. 1.000 etikete kadar on etiket örnekleminin hepsinde kelime TF-IDF’inin önünde. Farklı test biçimlerinin %46,4’ü sözlükte yok | Etiket kıtsa ya da yoğun vektör araması gerekiyorsa; hedef veride sınanacak bir aday olarak |
| Ortalaması alınmış fastText | Bütün test biçimleri için vektör kurdu. Tek altörneklemli eğride 250 etikette en yüksek skor (63,10). Macro-F1’i word2vec’inkinden ayırt edilemedi | Yazım ve biçim çeşitliliği yüksekse; görev başarısını ve belleği ölçerek |
| doc2vec (PV-DBOW) | Bu koşudaki en düşük skor: 55,13. Yeni belge için vektör çıkarımı ek optimizasyon gerektirir (ortalamanın 16 katı) | Belge vektörünü doğrudan öğrenmenin kendi verinizde ortalama almayı geçtiğini ayrı bir deneyle gösterebildiğinizde |
Yöntem seçimi göreve ve veri bütçesine göre yapılmalı.
Bu bir eşik listesi değil, bir soru listesi. Bu bölümün gözlediği sayılar 5. adımda birer başlangıç beklentisi olarak işe yarar, 1. adımda birer kural olarak değil.
Belge düzeyindeki duygu analizi bu kaybı, yön (aspect) düzeyindeki görevlere göre daha iyi tolere edebilir; “müşteri hangi bileşenden şikâyet ediyor” sorusunda ise aynı kayıp görevi doğrudan engelliyor.
Daha uzun ilişkiler için temsilin kelime dizisinin bir fonksiyonu olması gerekir: kelime sırasını hesaba katan encoder’lar (kodlayıcılar); Kısım II bu sınırdan başlıyor.
Müşterinizin Türkçe 400 etiketli destek talebi ve 2 milyon etiketsiz talebi var. Hangi temsil?
Bir meslektaşınız %93 doğruluk bildirip modeli yayına almak istiyor. Ne istersiniz?
fastText biçim kapsamasını %100’e çıkardı. Skor neden yükselmedi?
300 boyutlu ya da ön eğitimli vektörler kararı değiştirir miydi?
Bölümün altı sorusundan üçü. Cevapların neredeyse hepsi bu bölümün ölçtüğü bir şeye dayanıyor.
Önce görevde belirleyici olan ekseni adlandırın: etiket miktarı, biçim çeşitliliği, sıra gereksinimi ya da maliyet. Ardından ilgili ölçümü verin ve sonucu hangi yeni verinin ya da deneyin değiştireceğini söyleyin.
C’ye bağlıydıclass_weight="balanced" ayarını kaldırıp her modeli yeniden koşturunBölüm: Metin Temsillerini Karşılaştırmak. Laboratuvar, notebooks deposundaki bölüm notebook’unu izliyor: tr/chapters/04-karsilastirma/04-karsilastirma.ipynb.
Uygulamalı Doğal Dil İşleme · Applied NLP