Eser sahibi: Aravind Pai
Çeviri: Wang Weili
Düzeltme: Zhang Yihao
Bu makale hakkında 3400 kelime , Okumanız tavsiye edilir 10+ dakika
Bu makale Pytorch çerçevesini kullanarak metin sınıflandırmasının uygulanmasına ilişkin temel bilgi noktalarını tanıtmaktadır, bunlara Kelime Dağarcığı Dışı kelimelerin nasıl kullanılacağı, değişken uzunluklu dizilerin eğitim probleminin nasıl çözüleceği ve özel örnekler verilmiştir.
Etiket: Natural Language Processing
Programlama yolculuğumda her zaman en gelişmiş mimariye dönüyorum. PyTorch, Keras ve TensorFlow gibi derin öğrenme çerçeveleri sayesinde artık gelişmiş mimarileri uygulamak daha kolay hale geldi. Bu derin öğrenme çerçeveleri, çok sayıda profesyonel bilgi ve programlama becerisine hakim olmanızı gerektirmeden karmaşık model mimarileri ve algoritmaları uygulamanın basit bir yolunu sağlar. Özetle, bu veri biliminin altın madenidir.
Bu yazıda, hızlı hesaplama gücü ile bilinen PyTorch çerçevesini kullanacağız. Bu nedenle, bu makalede, metin sınıflandırma problemini çözmek için kilit noktaları tanıtacağız. Ardından ilk metin sınıflandırıcımızı PyTorch çerçevesine uygulayacağız!
İpucu: Devam etmeden önce şu makaleyi okumanızı tavsiye ederim:
Yeni Başlayanlara Uygun Bir PyTorch Kılavuzu ve Sıfırdan Nasıl Çalışır:
https://www.analyticsvidhya.com/blog/2019/09/introduction-to-pytorch-from-scratch/?utm_source=blogutm_medium=building-image-classification-models-cnn-pytorch
1. Metin sınıflandırma problemlerini çözmek için neden PyTorch kullanılıyor?
1. Kelime Dağarcığı dışındaki kelimeleri çözün
2. Değişken uzunluktaki dizileri çözün
3. Sarıcı ve önceden eğitilmiş model
İkinci olarak, sorun senaryosunu anlayın
Üçüncüsü, metin sınıflandırmasını gerçekleştirin
Profesyonel kavramlara dalmadan önce, kendimizi hızlı bir şekilde PyTorch çerçevesine alıştıralım. PyTorch'un temel veri birimi, python'daki numpy dizisine benzeyen Tensor'dur. PyTorch kullanmanın en önemli iki avantajı şunlardır:
Metin verilerini işlemek için neden PyTorch'u kullanıyoruz diye düşündüğünüzden eminim? Daha sonra, özellikle metin verileriyle uğraşırken, PyTorch'un onu diğer çerçevelerden farklı kılan bazı inanılmaz özelliklerini tartışacağız.
1. Kelime Dağarcığı Dışı kelimelerin üstesinden gelin
Metin sınıflandırma modeli, sabit veri boyutuna sahip bir metin veri kümesine göre eğitilir. Ancak akıl yürütme problemleri için, kelime setinde bulunmayan bazı kelimelerle karşılaşabilirsiniz.Bu kelimelere Kelime Dağarcığı Dışı kelimeler denir. Kelime Dağarcığı Dışı kelimeleri görmezden gelmek bilgi kaybına neden olabilir, bu nedenle bu önemli bir konudur.
PyTorch, bu sorunu çözmek için, Kelime Dağarcığı Dışı kelimeler sorununu çözmemize yardımcı olmak için eğitim veri setindeki nadir kelimelerin bilinmeyen jetonlarla değiştirilmesini destekliyor.
Ayrıca PyTorch, değişken uzunluktaki dizileri işlemek için yöntemler de sağlar.
2. Değişken uzunluklu metin dizisini işleme
Değişken uzunluktaki diziler problemini çözmek için döngüsel sinir ağlarının kullanıldığını hiç duydunuz mu, nasıl uygulandığına dair herhangi bir şüpheniz var mı? PyTorch, dinamik tekrarlayan sinir ağını gerçekleştirmek için çok faydalı bir 'Paketlenmiş Dolgu sekansı' getiriyor.
Dolgu, cümlelerin başında veya sonunda ek simgeleri doldurma işlemidir. Her cümledeki kelime sayısı farklı olduğundan, farklı uzunluklarda cümleler giriyor, dolgu simgeleri ekliyoruz ve cümleleri eşit uzunlukta yapmak için genişletiyoruz.
Çerçevelerin çoğu statik ağları desteklediğinden, yani model eğitim sürecinde model çerçevesi değişmez, bu nedenle doldurma gereklidir. Dolgu, değişken uzunluklu diziler sorununu çözse de, aynı zamanda yeni sorunlar getiriyor - doldurma belirteci, yeni bilgiler / veriler ekler.Aşağıda, açıklamak için basit bir şema kullanacağım.
Aşağıdaki şekilde, son kelime bir doldurma belirtecini temsil eder, ancak aynı zamanda çıktı üretme sürecinde de rol oynar. Bu problem, pytorch'ta Paketlenmiş Dolgu dizisi ile çözülebilir.
Sıkıştırma dolgusu, doldurma belirteci bölümünü yok sayar. Bu değerler, tekrarlayan sinir ağının eğitim sürecinde asla görünmeyecek ve bu da dinamik, tekrarlayan bir sinir ağı oluşturmamıza yardımcı olabilir.
3. Paketlenmiş ve önceden eğitilmiş modeller
Pytorch, gelişmiş çerçeveler sunuyor. Hugging Face'in Transformers kitaplığı, doğal dili anlama ve doğal dil üretimi için 32'den fazla gelişmiş çerçeve sağlar.
Ek olarak, pytorch ayrıca çok az kodla metinden dile, nesne algılama ve diğer sorunları çözebilen önceden eğitilmiş bazı modeller de sağlar.
İnanılmaz hissettiriyor mu? Bunlar PyTorch'un çok kullanışlı bazı özellikleridir. Şimdi metin sınıflandırma problemini çözmek için PyTorch'u kullanalım.
Bu makalenin bir parçası olarak, çok ilginç bir soruyu inceleyeceğiz.
Quora, kullanıcıların bilgilerini paylaşırken kendilerini güvende hissedebilmeleri için platformlarındaki "samimiyetsiz" sorunları takip etmeyi umuyor. Bu durumda samimiyetsiz bir soru, faydalı cevaplar aramaktan çok, ifade etmek için tasarlanmış bir soru olarak tanımlanır. Bunu daha ayrıntılı olarak incelemek için, belirli bir sorunun samimiyetsiz olduğunu gösterebilecek bazı özellikler şunlardır:
Eğitim seti yukarıda sorulan soruları ve samimiyetsiz olup olmadığını gösteren bir etiketi içerir (hedef = 1 samimiyetsiz demektir). Temel gerçeklerde gürültü var, yani eğitim seti mükemmel değil. Görevimiz, belirli bir sorunun "samimiyetsiz" olup olmadığını belirlemektir.
Veri indirme bağlantısı:
https://drive.google.com/open?id=1fcip8PgsrX7m4AFgvUPLaac5pZ79mpwX
Şimdi PyTorch'ta kendi metin sınıflandırma modelimizi yazmanın zamanı geldi.
Önce modelleme için gerekli tüm paketleri içe aktarın. İşte kullanacağımız paketlere kısa bir genel bakış:
Sonuçları tekrarlanabilir hale getirmek için bir çekirdek değeri belirledim. Derin öğrenme modellerinin rastlantısallığından dolayı, yürütme sırasında farklı sonuçlar üretilebilir, bu nedenle tohum değerinin belirlenmesi çok önemlidir.
Şimdi metin önişleme yapmak için alanları nasıl kullanacağımıza bakalım. İki tür etki alanı nesnesi vardır: Field ve LabelField. Aralarındaki farkı çabucak anlayalım:
Field'ı kullanmadan önce, farklı parametrelerine ve kullanımlarına bir göz atın:
Ardından, bir demet listesi oluşturun, her bir demet bir sütun adı içerir ve ikinci değer bir alan nesnesidir. Ek olarak, tuplelar csv dosyasındaki sütunların sırasına göre düzenlenir.Bir sütunu yok saydığımızda, onu temsil etmek için (Yok, Yok) kullanırız.
Gerekli sütunları, soruları ve etiketleri okuyun.
alanlar =Bu kod bloğunda, bir alan nesnesi tanımlayarak özel bir veri seti yükledim.
Şimdi veri kümesini eğitim ve doğrulama verilerine ayıralım
Bir sonraki adım, metnin kelime dağarcığını oluşturmak ve bunları bir tamsayı dizisine dönüştürmektir. Kelime hazinesi, metnin tamamındaki tüm bağımsız kelimeleri içerir ve her kelimeye bir dizin atanır. İşte parametreler:
Kelime hazinesi oluşturuyoruz ve kelimeleri önceden eğitilmiş kelime düğünleriyle vektörlere dönüştürüyoruz. Gömme sözcüğünü rastgele olarak başlatmak istiyorsanız, vektör parametresini göz ardı edebilirsiniz.
Ardından, modeli eğitmek için partiyi hazırlayın. BucketIterator, minimum doldurma miktarı gerektiren bir şekilde partiler oluşturur.
Şimdi bu ikili sınıflandırma problemini çözmek için modelin mimarisini tanımlamamız gerekiyor. Torch'daki nn modülü, tüm modeller için temel bir modeldir. Diğer bir deyişle, her model nn modülünün bir alt sınıfı olmalıdır.
İnit ve forward olmak üzere iki fonksiyon tanımladım. Bu iki fonksiyonun uygulama senaryolarını açıklamama izin verin.
Son olarak, her katmanın ayrıntılarını ve parametrelerini anlıyoruz.
Gömülü katman: NLP ile ilgili herhangi bir görev için, kelime gömme çok önemlidir çünkü bir kelimeyi dijital biçimde temsil edebilir. Gömme katmanı, her satırın bir sözcük yerleştirmeyi temsil ettiği bir arama tablosu alır. Gömme katmanı, metni temsil eden tamsayı dizisini yoğun bir vektör matrisine dönüştürebilir. Gömme katmanının iki önemli parametresi:
LSTM: LSTM, uzun bağımlılıkları öğrenebilen bir RNN çeşididir. İşte bilmeniz gereken bazı önemli LSTM parametreleri:
Doğrusal Katman: Doğrusal katman, yoğun katmana atıfta bulunur ve iki önemli parametreye sahiptir:
Sıkıştırılmış doldurma: Yukarıda tartışıldığı gibi, sıkıştırma dolgusu dinamik tekrarlayan sinir ağlarında kullanılır. Sıkıştırılmış dolgu kullanılmazsa, rnn ayrıca doldurmadan sonra dolgu girişini işler ve yastıklı öğenin gizli durumunu geri döndürür. Ancak sıkıştırılmış dolgu harika bir pakettir, dolgu girişini göstermez. Doldurulan kısmı doğrudan yok sayar ve doldurulmamış eleman kısmının gizli durumunu döndürür.
Artık bu mimarideki tüm bölümleri anladığımıza göre, şimdi koda bakabiliriz!
Bir sonraki adım, hiperparametreleri tanımlamak ve modeli başlatmaktır.
Model özetine bakalım ve gömme katmanını önceden eğitilmiş kelime düğünleriyle başlatalım.
Burada modelin optimize edicisini, kaybını ve metriğini tanımlıyorum:
Modellemenin iki aşaması:
Sonraki, modeli eğitmek için kullanılan işlevi tanımlayan kod bloğudur.
Dolayısıyla modeli eğitmek için bir işlevimiz var, ancak modeli değerlendirmek için de bir işleve ihtiyacımız var. Hadi gel!
Son olarak modeli belli bir miktar eğitip her dönem için en iyi modeli saklayacağız.
En iyi modeli yükleyelim ve kullanıcı tanımlı girdiyi kabul eden ve tahminler yapan bir çıkarım işlevi tanımlayalım! Birkaç sorunu tahmin etmek için bu modeli kullanalım.
PyTorch'ta kendi metin sınıflandırma modelimizi nasıl oluşturacağımızı gördük ve sıkıştırma ile doldurmanın önemini anladık. Performansı daha da iyileştirmek için uzun vadeli ve kısa vadeli modellerin hiperparametrelerini, gizli düğüm sayısı, gizli katman sayısı, vb. Gibi istediğiniz zaman kullanabilirsiniz.
Orijinal bağlantı:
https://www.analyticsvidhya.com/blog/2020/01/first-text-classification-in-pytorch/
Orjinal başlık:
PyTorch kullanarak İlk Metin Sınıflandırma modelinizi oluşturun
Editör: Huang Jiyan
Redaksiyon: Lin Yilin
Çevirmen Profili
Wang Weili , Yaşlı bakımı endüstrisinde BI uygulayıcısı. Öğrenmeye devam et.
-Bitiş-
Tsinghua-Qingdao Veri Bilimi Enstitüsü'nün resmi WeChat kamu platformunu takip edin " THU Veri Pastası "Ve kız kardeş numarası" Veri Pastası THU "Daha fazla ders avantajı ve kaliteli içerik elde edin.