Auto-Train ile Duygu Analizi via Huggingface (Tek satır kod yazmadan)

Emre Tasar
Garanti BBVA Teknoloji
5 min readOct 22, 2022

Yapay zekâ uygulama alanlarından birisi olarak bilinen doğal dil işleme (DDİ); herhangi bir dile ait metinler üzerinde duygu analizi, özetleme, metinlerin kategorik sınıflandırılması vb. konularda çözüm üretebilen bir alandır. Günümüzde teknolojinin gelişmesi sayesinde DDİ alanında da gelişmeler meydana gelmiş, özellikle DDİ kullanılarak üretilen sohbet robotları insansı bir davranış sergileyebilmektedir. Ayrıca yine DDİ sayesinde uzun metinler analiz edilebilmektedir. Çeşitli amaçlara özgü metinler içerisinden kategorik sınıflandırma, duygu analizi, soru-cevap, niyet tespiti, içerik sınıflandırması, kök kelime analizleri, metin benzerlikleri bulunması mümkün olabilmektedir[*].

Büyük verinin, uzmanlar eşliğinde analizi ile kullanışlı bilgiye dönüşümü DDİ’nin önemli bir konusudur. Duygu analizi konusu ise girdi olarak verilen metin dokümanının içerisindeki duygunun önceden belirlenen kategorilere göre (pozitif, negatif, olumlu, olumsuz vb.) ayrıştırılmasıdır. Finans, bankacılık, pazarlama, müşteri hizmetleri, sosyal medya analizi ve ürün yorumları gibi farklı alanlarda sıklıkla kullanılmaktadır. İngilizce, Fransızca, Çince, İspanyolca gibi geniş coğrafyalarda konuşulan diller ile ilgili bu konuda çok fazla çalışma olmasına rağmen Türkçe dili için duygu analizi konusu, halen gelişmeye uygundur [*].

GarantiBBVA teknoloji bünyesinde Doğal Dil İşleme özelinde yapılan çalışmalarda da duygu analizi önemli bir yer tutmaktadır. Bu konu ile ilgili geliştirilen yapay zeka modellerin omurgasında ise dönüştürücü (Transformers) modelleri önemli bir yer tutmaktadır. Tasarımdan uygulamaya kadar geçen süreç içerisinde veri bilimi uzmanları ve veri mühendislerinin bir arada çalıştığı doğal dil işleme çözümlerimiz, kurum içi ihiyaçlarımıza özel olacak şekilde geliştirilmiştir.

Birçok şirket için yorumların analizi çok büyük önem taşımaktadır. Fakat doğal dil işleme konusunda böyle modeller üretebilecek nitelikli personel istihdam etmek veya bu hizmeti almak halen günümüzde birçok işletmenin karşılayamayacağı bir masraf niteliği taşımaktadır. Tam bu noktada da bu yazıda anlatacağımız çalışma devreye girmektedir.

Bu yazımda size, Türkçe dilinde doğal dil işleme konusunun bir alt dalı olan ve birçok organizasyon tarafından sıklıkla kullanılan Duygu Analizi konusunda bir yapay zeka modeli geliştirmeyi adım adım göstereceğim.

Üstelik bütün bu işlemleri hiç kodlama bilmeden gerçekleştirmek mümkün. Yapay zeka modelleri için bir depo gibi de çalışan bir girişim olan huggingface içerisinde 1000 lerce yapay zeka modeli ve 1000 lerce veri seti bulunmaktadır. Buradaki veri setleri ve yapay zeka modelleri kullanılarak yine site içerisinde bulunan auto-train modülü ile birçok farklı görevde çalışabilecek yapay zeka modelleri geliştirmek mümkündür.

Açık kaynaklı paylaşılan modellere ait bir ekran görüntüsü

1.Aşama: Veri Setinin Seçilmesi

https://huggingface.co/datasets adresine girilerek, geliştirmek istediğimiz yapay zeka modeli için bir veri seti seçmemiz gerekmektedir. Burada bulunan hazır veri setlerini seçebileceğimiz gibi, kendi veri setimizi de yükleyerek bu aşamayı atlayabiliriz.

Bu linki kullanarak Türkçe dili özelinde, metin sınıflandırma alt görevinde bulunan veri setlerini filtreleyebiliriz.

Filtrelenmiş datasetlerin görüntüsü buradan winwoker tag’li olanı seçeceğiz.

Burada birçok doğal dil işleme alt görevinde kullanılabilecek veri setleri bulunmaktadır. Bizim seçtiğimiz veri seti ise pozitif negatif ve nötr yorumlarında derlenmiş olduğu yaklaşık 500.000 adet verinin buluduğu winvoker-turkish-sentiment-analysis-dataset adındaki veri setidir.

Bu veri setine ait ekrana giriş yaptıktan sonra buradan train in autotrain seçeneğini tıklıyoruz.

Buradan Create Project seçeneğini tıklayara auto train modülüne geçiş yapıyoruz.

2.Aşama: Auto-Train Arayüzü ve Model Eğitilmesi

Create project seçeneği bizi huggingface auto train arayüzüne taşımaktadır. Aşağıda görseli bulunan ana menü üzerinden Project Name (Proje Adı) olarak belirlediğimiz bir isim girdikten sonra (burada proje ismini yazarken boşluk olmamasına dikkat etmemiz gerekmektedir örn: proje 1 değil proje_1 şeklinde yazmamız gerekmektedir.), Task (Görev) menüsünden bir seçim yapmamız gerekiyor. Bu makalenin yazıldığı esnada burada 3 ayrı ana görev bulunmaktadır, Vision; görsel veriler için, Tabular; tablo şeklindeki veriler için, Text ise bizim kullanacağımız metin verileri için olan ana görevdir. Biz buradan text seçeneğini seçiyoruz. Bu seçeneği seçtikten sonra karşımıza bir alt menü çıkıyor. Burada text classification (metin sınıflandırma) bizim kullanacağımız alt menü. Bu alt menü de binary ve multi-class olarak iki alt seçeneğe sahip. Bizim veri setimizde 3 kategori olduğu için multi-class seçeneğini seçiyoruz.

Model choice alt menüsünde ise Automatic ve Manual şeklinde iki seçenek bulunmakta. Burada modelimizin öğrenme aktarması yapacağı ana modeleri otomatik mi yoksa manuel olarak mı seçemek istersinize cevap vermiş oluyoruz. Çok spesifik bir model geliştirmeyecekseniz buna automatic dememiz yeterli olacaktır. Aksi takdirde kendiniz de modeller içerisinden uygun gördüklerinizi burada seçebiliyorsunuz.

Language seçeneğini de Turkish olarak seçtikten sonra, otomatik olarak seçili şekilde gelen datasetimiz ile birlikte bir sonraki aşamaya geçmek için create project butonuna basıyoruz.

Burada model için kullanacağımız veri setinde hangi kolonun metin verisi içerdiğini ve hangi kolonun ise kategorik veriyi içerdiğini seçmemiz gerekiyor. Bu seçimleri de gerçekleştirdikten sonra eğitim ve test veri setimizi oluşturmuş oluyoruz.

Bir sonraki aşamada modelin eğitim işlemleri uzaktaki sunucu tarafından gerçekleşiyor. Bu işlemler yaklaşık olarak 1 saat kadar sürüyor. Ücretli bir işlem olan bu eğitimden sonra modellerin performanslarını ve performans metriklerini görüntüleyebiliyoruz.

Veri setimizin 5 ayrı modelde denenmesi sonucu modellerin doğruluk değerleri
Modellerin doğruluk, kesinlik ve f-1 gibi performans metrikleri
Eğitilen modellerimizin doğruluk, kesinlik, duyarlılık ve F1 değerlerinin kategorik dağılımları

Artık modellerimiz hazır ve Huggingface kişisel hesabımıza yüklenmiş durumdalar. Bu aşamaya kadar hiç bir kodlamaya ihtiyaç duymadık ve bir görev için çalışan bir yapay zeka modeli üretmiş olduk.

3.Aşama: Eğitilen Modelin Kullanılması

Bu çalışma özelinde eğitmiş olduğumuz model, https://huggingface.co/emre/turkish-sentiment-analysis adresinden görüntülenebilir. Modeli web sitesi üzerinden kullanmak mümkündür.

Auto-Train ile eğitilmiş duygu analizi modeli

Ayrıca modeli kullanmak için aşağıdaki kodlardan da faydalanılabilir.

from transformers import AutoTokenizer, AutoModelForSequenceClassificationmodel = AutoModelForSequenceClassification.from_pretrained("emre/turkish-sentiment-analysis", use_auth_token=True)tokenizer = AutoTokenizer.from_pretrained("emre/turkish-sentiment-analysis", use_auth_token=True)inputs = tokenizer("Bu ürün gerçekten güzel çıktı", return_tensors="pt")outputs = model(**inputs)

Yukarıdaki şekilde model objesi olarak import edilen kod üzerinden seçilen metinler skorlanabilir. Yukarıdaki sorgu sonucunda “positive” cevabı geri dönecektir.

Model ayrıca cURL üzerinden de kullanılabilir. Bunun için de aşağıdaki kod yapısının kullanılması gerekecektir.

$ curl -X POST -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"inputs": "Bu ürün gerçekten güzel çıktı"}' https://api-inference.huggingface.co/models/emre/turkish-sentiment-analysis

Siz de farklı görevler için bu veya benzeri auto-train auto-ai toolları kullanarak nitelikli teknik beceriye sahip olmadan basit görevleri yerine getiren yapay zeka modelleri üretebilirsiniz.

--

--