iflGARAJI10100 / taMAM

taMAM - Tarayıcı Mevzuat Arama Motoru
MIT License
9 stars 4 forks source link

Veri Kümesi ve Model Eğitimi #9

Closed sertacates closed 2 years ago

sertacates commented 2 years ago

Bugün Tuba Hanım ve Bora Beyin toplantıda bahsettikleri veri kümesi için "Veri Seti Kullanım Protokolü" nü imzalayıp ilettik. e-Posta ekinde veri kümesi geldi. 24 Temmuz 2022'de bir zoom toplantısı yapalım. Veri ön işlemleri ve model eğitimi konusunda konuşalım, olur mu?

S-Toprak commented 2 years ago

İncelemeye başladım hocam, daha sonra üzerinde konuşuruz

ErAk042 commented 2 years ago

Hocam ben de küme üzerinde çalışıyorum şu anda

sertacates commented 2 years ago

Tamam, o zaman Eray, bu başlığı IN PROGRESS (Üzerinde Çalışılıyor) kısmına alır mısın? Pazar günü galiba sen yolda olacaksın biz Seyithan Toprak ile zoom toplantısı yaparız. Buraya kararları yazarız. Sen de buradan takip edersin.

sertacates commented 2 years ago

Veri Kümesi ile ilgili yapmamız gerekenler:

  1. Elimizde hangi veri var? ( Hangi alanlardan / sütunlardan oluşuyor, kaç adet kayıt / satır var, veri kaynağı neresidir? )
  2. Elimizdeki veri kümesinde hangi veri ön işlemleri yapacağız (Veri temizleme {Gereksiz alanların silinmesi, verilerden fazla boşluk karakterlerinin silinmesi, anlamsız veya anlamlı bir farklılık oluşturmayacak noktalama işaretleri ile tarih/rakam silinmesi, belki anlamlı bir farklılık oluşturmayacaksa büyük küçük harf farkını kaldıralım, yine anlamlı bir farklılık oluşturmayacak kelimeleri kaldıralım (Stop Words)}, verileri anlamlı bir şekilde küçültelim (Tokenization), Stemming ve Lemmatization yapalım yani bağlaçlardan kelimeleri arındıralım ve kökleri ortaya çıkartalım. )
  3. https://www.nltk.org/ altında nltk araç setini ve https://spacy.io/ altında spaCy'yi inceleyelim.
  4. Veri madenciliği yapalım. (CountVectorizer ve TF-IDF (Term Frequency — Inverse Document Frequency) ile ilgili ön çalışmamızı yapalım)
  5. Veri Kümesi ön işlemlerinden sonra Sınıflandırma ve Öneri Motoru aşamasına geçebiliriz.

NOT: Özellik çıkarma, eğitim ve tahmin için model arama / derin öğrenme kısmına odaklanacağız.

S-Toprak commented 2 years ago
  1. Hocam veri kümesiyle birlikte verilen README.html dosyasında gerekli alanlar mevcutmuş, aşağıya listeliyorum: Alanlar:
    • id : İçerik kimliği
    • kategori : İçerik Türü/Kategorisi
    • baslik : İçerik Başlığı
    • rega_no : İçeriğin yayınlandığı Resmi Gazete Sayısı
    • mukerrer_no : İçeriğin yayınlandığı Resmi Gazete Mükerrer Numarası (0 ise mükerrer olmadığını belirtir)
    • rega_tarihi : İçeriğin yayınlandığı Resmi Gazete Tarihi (date:yyyy-mm-dd formatında)
    • kurum : İçeriği(Genelge, Cumhurbaşkanlığı(CB) Kararnamesi, Tüzük, Yönetmelik, Tebliğ) çıkaran kurum adı
    • mevzuat_no : İçeriğin ilgili numarası (Detaylar için ilgili kategoriye bakınız)
    • belge_sayi : Genelge üzerindeki Sayı ifadesinin değeri (sadece işlenebilenler)
    • mevzuat_tarihi : İçeriğin ilgili Tarihi (date:yyyy-mm-dd formatında)
    • donem : Komisyon Raporunun dönemini (örn: "27. Dönem")
    • sira_no : Komisyon Raporunun Sıra Sayısı (örn: "230", "42 ek 1" vb.)
    • madde_sayisi : İçeriğin(Kanun, KHK, CB Kararnamesi, Tüzük, Yönetmelik) bölümlerini (Madde sayısını ve işlenemeyen hükümleri/maddeleri, madde metinlerinin içindeki "Madde - ..." ifadeleri hariç )
    • data_text : İçerik metni (Büyük/Küçük Harf, Noktalama ve "\n" içermektedir)
    • url : İçerik metninin esas alındığı websayfasının linki (kaynak linkler güncel olmayabilir)
    • kanunum_url : İçeriğin Kanunum linki

Kategori | İçerik Sayısı | İlgili alanlar (Üst Veriler)

sertacates commented 2 years ago

Veri kümesindeki işlemleri yaparken bize verilen README.html dokümanındaki alanları da kontrol edelim. Orada istenilenlere göre aramayı yaparız. data_text üzerinde işimiz oldukça fazla...

sertacates commented 2 years ago

Veri Kümesi Ön işlemlerini Kanun @ErAk042 ve KHK @S-Toprak kategorilerinin rega_no, rega_tarihi, mevzuat_no ve mevzuat_tarihi alanlarını doldurulmadan yapmak gerekiyor. data_text alanının içinde veri ön işleme yapmayı ihmal etmeyelim.

sertacates commented 2 years ago

data_text ve baslik alanlarını temizledikten sonra Doğal Dil İşleme yapıyorsunuz değil mi?

ErAk042 commented 2 years ago

Hocam date_text ve baslik alanında şimdilik sadece whitespace, \n ve \r temizledik. Veri işlerken karşılaştığımız büyük bir problem yok ama lowercase yapmayı da ihmal etmeyiz.

sertacates commented 2 years ago

Hocam date_text ve baslik alanında şimdilik sadece whitespace, \n ve \r temizledik. Veri işlerken karşılaştığımız büyük bir problem yok ama lowercase yapmayı da ihmal etmeyiz.

Bence tüm alanları küçük harfe (lowercase) çevirin, ileride problem yaşamayalım, madde sayısını bulurken bir sürü madde yazım şekli olacak sonra çorbaya dönecektir.

ErAk042 commented 2 years ago

Hocam, küçük harf işi problem çıkartıyor.

def kategoriBul(verilenMetin): verilenMetin = verilenMetin.replace(' ','') verilenMetin = verilenMetin.replace('\n','') verilenMetin = verilenMetin.replace('\r','')

Mesela yukarıdaki gibi temizlik yapsak yeterli olur olur mu?

sertacates commented 2 years ago

Her veri için geçerli değil ama (' ',''), (' ',''), ('\n',''), ('\r',''), (':',''), ('.',''), ('ý','ı'), ('i̇','i') ve ('\','') gibi noktalama işaretleri ve Türkçe olmayan ama çeviri esnasında ı ve i için kullanılan harfleri de temizleme sürecine dahil edebilirsiniz.

sertacates commented 2 years ago

lower metodunu veri temizleme kullanmayalım, veri üzerinde işlem yaparken kullanalım mı?

sertacates commented 2 years ago

Bugünkü e-posta doğrultusunda sadece veri doldurmaya yöneliyoruz. Kural bazlı gideceğiz ve zamanımız kalırsa modellerdeki performansımızı da yansıtacağız.

S-Toprak commented 2 years ago

Model bazlı arama yapmayacağımıza kararlaştırdığımız için issue'yı kapatıyorum hocam

sertacates commented 2 years ago

Elinize sağlık gençler, artık yarışma gününü bekleyeceğiz.