Bu kütüphane, L2 Regülasyon takımının TeknoFest
yarışması Kamuda Mevzuat Arama Motoru Geliştirme
adlı alt kolu için hazırladığı konsept uygulamanın kaynak kodlarını içermektedir.
Kullandığınız conda
paket yöneticisinin en son sürümü kurulu olmalıdır. Lütfen bu linkteki yönergeleri izleyin.
Projeyi herhangi bir problem yaşamadan çalıştırabilmek için lütfen aşağıdaki komutları kullanarak sanal geliştirme ortamınızı oluşturun:
conda env create -f environment.yml
conda activate acikhack
Aşağıdaki kod ile tanımlayacağınız veri ile bütün süreci koşup çıktı alabilirsiniz. Sonuçlar aynı dizine ornek-eval-dataset.csv
ismi altında kaydedilecektir.
python run.py -data-path VERI_ADRESI
Aşağıdaki kod ile eğitim için verilen veriyi tanımlayarak süreci koşabilir ve başarı skorunu görüntüleyebilirsiniz.
python run_debug.py -data-path VERI_ADRESI
Aşağıdaki kod ile ürettiğiniz tahminleri ve ground-truth verileri besleyerek sadece skorlama rutinini çalıştırabilirsiniz.
python scorer.py -gt-data-path ORJINAL_VERI_ADRESI -pred-data-path TAHMIN_VERI_ADRESI
/notebook
klasörü altındaki notebook dosyalarını:
jupyter notebook
yazıp bir jupyter server açtıktan sonra inceleyebilirsiniz.
Verilen örnek veri üzerinde elde ettiğimiz sonuçlar aşağıdaki gibidir.
Sütun | Başarı Oranı |
---|---|
rega_no | 0.9830999517141478 |
sira_no | 0.990584258812168 |
mukerrer_no | 0.9693384838242395 |
donem | 0.9616127474649928 |
kategori | 0.9739256397875422 |
rega_tarihi | 0.9524384355383873 |
mevzuat_no | 0.9683727667793337 |
belge_sayi | 0.990584258812168 |
mevzuat_tarihi | 0.9589570255915016 |
madde_sayisi | 0.9954128440366973 |
Yarışma metriği: 0.831723804925157
Projeyi doğrudan çalıştırmak istiyorsanız bu adımı atlayabilirsiniz. Fakat proje ortamında kullanılan kütüphanelere ekleme veya değişiklik yapmak istiyorsanız aşağıdaki rutini izlemelisiniz.
Eğer bir kütüphane eklemek istiyorsanız, ismini req.in
dosyasına ekleyin, ve req.txt
dosyasını aşağıdaki komut ile yeniden oluşturun.
pip-compile req.in
ve oluşturduğunuz en güncel gereksinim listesini aşağıdaki komut ile ortamınıza kurun:
pip install -r req.txt
Yarışma dahilinde ekibimize sağlanan veride bazı tutarsızlıklar ve çıkmazlar olduğunu keşfettik. Bunlar aşağıdaki şekilde sıralanabilir:
- Genelge tipi mevzuat numaralarına ait asli etiket değerlerinin (ground truth) bazıları
2017/9
formatında verilmişken bazıları ise2017/09
formatında verilmiş. Ürettiğimiz çözüm başa sıfır koyma işlemini (zero-padding) yapmıyor olacak. (2017/09
) - Genelge tipi mevzuat numaralarına ait asli etiket değerlerinin (ground truth) bazıları
2017/9
formatında verilmişken bazıları ise2017 /09
,2017 / 09
gibi boşluk hataları ile verilmiş. Ürettiğimiz çözüm çıktıyı standardize etmek adına boşlukları siliyor (2017/09
). Bu yüzden bu tip hatalara sahip asli etiket değerine sahip olan satırlar tahmin yanlışmış gibi sahte bir sonuç üretebilir. KAYSIS
kaynaklı bazı verilerde asıl etiket değeri32945953-010.06.01-E.1046330
kodunun1046330
kısmı olarak verilmişken bazı verilerdeYIL/NUMARA
olarak verilmiş. Satırlardan iki türlü de veri alabiliyoruz fakat beklenen formatın hangisi olduğu net olmadığı içinYIL/NUMARA
formatında bıraktık.- Bazı verilerin mevzuat numaralarının tamamı ya da bir kısmı el ile yazıldığı için OCR tarafından eksik veya hatalı okunmuş. Modelin yanlışlarının bazıları OCR'dan gelen ham verinin yanlışlığından kaynaklanıyor. Orjinal siteye gidip veriyi özel bir şekilde işlemek hem zaman hem kaynak açısından problemli olacağından bu kol üzerine yoğunlaşmadık.
https://kms.kaysis.gov.tr/Home/Goster/68870
adresine sahip verinin text sütunu hatalı olduğu için herhangi bir şekilde veri çıkarmak mümkün değil.
- Kanun kategorisinde
25 TEŞRİNİSANİ 1931
,7 KÂNUNUSANİ 1930
gibi osmanlıca tarihler bulunmaktadır. Bu tarihleri haritalandırarak kodlamak mümkün olsa da, pdf formatından aktarılan metinlerdeki bozulma eski tarihli dosyaların tahminini güçleştirmektedir.
- Komisyon raporlarında
data_text
içinde 189 kayıttaDönem
e benzer bir bilgi bulunmamaktadır. Bu nedenle dönem bilgisine erişilememektedir.