Skip to content

Adını Fineas ve Ferb adlı çizgi-diziden alan Combine-Inator adlı projemiz ses, metin ve görüntü şeklinde alınan verileri kullanarak doğal dil işleme projelerine dönüştürebilmektedir.

License

Notifications You must be signed in to change notification settings

combineinator/combine-inator-acikhack2021

Repository files navigation

combine-inator-acikhack2021

Birçok farklı kaynaktaki verileri işleyebilen Combine-Inator ile tanışın! Adını Fineas ve Ferb adlı çizgi-diziden alan Combine-Inator adlı projemiz ses, metin ve görüntü şeklinde alınan verileri kullanarak doğal dil işleme projelerine dönüştürebilmektedir.

Projemizi burada yer alan .ipynb dosyası ile Colab üzerinden deneyebilirsiniz.

Amacımız

  • Proje fikri kapsamında; metin, ses ve görüntü verileri gibi farklı kaynaklardan elde edilen bilgilerin Türkçe dili özelinde anlamlı hale getirilmesini sağlayacak yapay zeka uygulamaları yer almaktadır.

  • Bahsedilen problemlerin son kullanıcının dahi kullanabileceği şekilde kolay bir yapı içerisinde sunulması ve geliştiriciler tarafından kolay bir şekilde kullanılabilecek bir kütüphane ve kullanım kolaylığı açısından web arayüzü olarak sunulması amaçlanmıştır.

  • Projenin kapsamının, derin öğrenmenin birçok alanından gelen çıktılarının (Görüntü işleme, Sinyal İşleme vb.) doğal dil işlemeye yönelik kullanımlarını içermesi ve kullanıcı dostu bir yapı içerisinde sunuluyor olması nedeni ile "Türkçe Doğal Dil İşleme" alanında oldukça faydalı olacağına inanmaktayız.

  • Kütüphane dahilinde sunduğumuz Türkçe veri toplama aracı ile de özellikle sınıflandırma problemlerinde karşılaşılan Türkçe veri yetersizliği sorununun çözülebileceğini düşünmekteyiz.

  • Python kodlama dili kullanılan çalışmada literatürdeki en güncel algoritmalara ve mimarilere (State-Of-Art) de yer verilmiş, bu sayede doğruluk oranlarının yüksek olması hedeflenmiştir.

Gereksinimler

Kütüphane gereksinimlerine buradan ulaşabilirsiniz.

Modüller

Wikipedia Web Scrapper

Türkçe dili için veri yetersizliğine çözüm olacak bu modül sayesinde yalnızca birkaç parametre ile tonlarca veri toplanabilmektedir.

Kullanım:

import WikiWebScraper

PATH = "_path_to_save_" # verinin kaydedileceği dizin
scraper = WikiWebScraper() # scraper objesi
scraper.categorical_scraper("barış", PATH, 20, text_into_sentences_param=False) # scraperın çalıştırılması
scraper.text_scraper_from_pagelist("page_list_path", "save_path" , page_per_save=1000) # scraper fonksiyonu ile ayıklanıp kaydedilmiş sayfa listesindeki sayfa metinlerinin ayıklanması

Çıktı:

Sayfa taranıyor.: 100%|██████████| 20/20 [00:00<00:00, 92.01it/s]
Sayfa Ayrıştırılıyor: 100%|██████████| 20/20 [00:02<00:00,  7.71it/s]

20 adet sayfa bulundu ve içerisinden 20 satır farklı metin ayrıştırıldı.

Web Arayüz:

Bu kütüphanemiz kullanım kolaylığı sağlanması amacıyla bir web arayüzüne entegre edilmiştir. Arayüz demo videosuna buradan ulaşabilirsiniz. Ayrıca .ipynb dosyasında yer alan kod sayesinde canlı olarak deneme gerçekleştirebilirsiniz. .ipynb dosyasına buradan ulaşabilirsiniz. Arayüz üzerinde gerçekleştirdiğiniz deneme sonucunda toplanan verinin kaydedildiği .txt dosyasında Colab üzerindeki "/content" dosyasından ulaşabilirsiniz.

.py:

Kütüphane fonksiyonlarının kullanımının sağlanmasına alternatif sunulması amacıyla repomuzda .py uzantılı bir dosya da mevcuttur. Dosyaya buradan ulaşabilirsiniz.

Benzer Kütüphaneler:

Varolan diğer kütüphanelere ek olarak geliştirdiğimiz kütüphane ile Wikipedia içerisinde bulunan herhangi bir kategoride istenilen kadar sayfa içerisinden kategorik olarak kullanılabilecek sayfa ayıklanarak spesifik kategori için kullanılabilecek veri seti oluşturulabilmesi sağlanır.

Speech Translator Modülü

Bu modül sayesinde kullanıcıdan Türkçe veya İngilizce olarak alınan ses verisi uçtan uca oluşturulmuş yapı sayesinde hedeflenen dilde tercümesi yapılıp, kullanıcının sesi şeklinde veya metin şeklinde çıktı verilebilmektedir.

Örnek Çalışma:

Verilen Ses Kaydındaki Cümle Text'te Dönüştürülen Cümle Çevirilen Cümle
Merhaba nasılsın günün iyi geçiyor mu Merhaba nasılsın günün iyi geçiyor mu hello how are you having a good day

Kullanım:

import speechModule

filename = "_audio_file_path_" # ses dosyasının kayıtlı olduğu dizin
speechM = speechModule() # speechModule objesi
speechM.get_repo() # gerekli reponun çekilmesi
speechM.speech2text2trans2speech(filename, "tr", "speech") # modülün çalıştırılması

Yararlanılan Kaynaklar:

Benzer Kütüphaneler:

  • marcominerva/TranslatorService : Bu kütüphanenin kullanımı için Azure servislerine kayıt gereklidir. Ancak geliştirdiğimiz kütüphanede açık kaynaklı transformatör modelleri kullanıldığından dolayı herhangi bir servise bağımlılığı yoktur.

  • Google Cloud Speech Translation Bu kütüphanenin kullanımı için Google Cloud servislerine kayıt gerekli ve hizmet bedeli alınmaktadır. Ancak geliştirdiğimiz kütüphanede açık kaynaklı transformatör modelleri kullanıldığından dolayı herhangi bir servise bağımlılığı olmamakla birlikte herhangi bir hizmet bedeline de gereksinim duyulmamaktadır.

  • respeaker/Python-Speech-Translate : Azure servislerine ihtiyaç duyan kütüphane ayrıca Python 2 diline yönelik yazılmıştır. Hem servis bağlılığı bulunan hem de Python'ın eski sürümünü kullanan bu kütüphanenin kullanımı sırasında paket uyumsuzluğu gibi durumlarla karşılaşılabilir. Oysa Python 3.6 sürümü ile yazılmış kütüphanemiz kullanılan paketler açısından güncelliğini korumaktadır.

  • auto-translation : Selenium kütüphanesi yardımıyla Google Translate üzerinden çeviri yapan bu kütüphanenin kullanımı için online bir çeviri hizmeti sunulmasından dolayı çevrimiçi bağlantıya ihtiyaç duyulmaktadır. Geliştirdiğimiz kütüphane ilgili transformatör tabanlı modelleri içe aktardığından, modellerin içe aktarılması sonrasında internet bağlantısına ihtiyaç duymamakta ve offline olarak çalışabilmektedir.

LXMERT Modülü

Kullanıcıdan alınan görselin işlenerek metin halinde görsele dair sorulan bir sorunun cevabını verebilen bu modül sayesinde görüntü işleme ve doğal dil işleme alanları birleştirilmiştir.

Kullanım:

import Lxmert

lxmert = Lxmert() # lxmert objesi

PATH = '_path_to_image_' # imgenin yer aldığı dizin
turkce_soru = 'Resimde neler var' # imgeye dair sorulacak soru
lxmert.resim_uzerinden_soru_cevap(PATH, turkce_soru) # modülün çalıştırılması

Çıktı:

ANSWER: laptop

image

Yararlanılan Kaynaklar:

Mimari Yapı

Untitled Diagram (1)

Ekibimiz

Oğuzhan Ölmez (Takım Kaptanı)

1999 yılında doğmuş olup, Celal Bayar Üniversitesi Yazılım Mühendisliği mezunudur. Eylül 2020-Ocak 2021 arasında BulutMD Yazılım Şirketi’nde Java Developer olarak staj yapmış ve bir segmentasyon projesi üzerine çalışmıştır. 2021 Mart-2021 Temmuz ayları arasında AdresGezgini şirketinde makine öğrenmesi ve derin öğrenme üzerine araştırma stajyeri olarak görev almıştır. Şuan içerisinde bulunduğu araştırma grubu ile NLP alanında araştırmalar yapmaya devam etmektedir.

1999 yılında doğmuş olup, Marmara Üniversitesi Mekatronik Mühendisliği mezunudur. Teknofest Roket Yarışması’nda 2 sene Marmara Dynamics roket takımı kaptanlığı ve 1-2 sene gibi çeşitli sürelerde çeşitli kulüplerin yönetim kurulu üyeliği görevlerini üstlenmiştir. Yapay zeka üzerine son 1.5 yıldır, doğal dil işleme özelinde ise son 7 aydır çalışmaktadır. Bitirme projesini panoramik röntgenler üzerinden derin öğrenme ile diş ve hastalık tespiti üzerine gerçekleştirmiştir. Doğal dil işleme alanında ise geçtiğimiz aylarda tamamlamış olduğu transformatör mimarilerine dayanan bir akademik yayın çalışması mevcuttur. Medium üzerinde "Deeper Deep Learning" kanalında bilgilerini paylaşmaya çalışmakta ve bir yandan makine öğrenmesi, derin öğrenme alanlarında kendini geliştirmeye devam etmektedir. Şu anda Areal.ai şirketinde NLP Engineer olarak çalışmaktadır.

About

Adını Fineas ve Ferb adlı çizgi-diziden alan Combine-Inator adlı projemiz ses, metin ve görüntü şeklinde alınan verileri kullanarak doğal dil işleme projelerine dönüştürebilmektedir.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published