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 acikhackAş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_ADRESIAş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_ADRESIAş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 notebookyazı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/9formatında verilmişken bazıları ise2017/09formatı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/9formatında verilmişken bazıları ise2017 /09,2017 / 09gibi 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. KAYSISkaynaklı bazı verilerde asıl etiket değeri32945953-010.06.01-E.1046330kodunun1046330kısmı olarak verilmişken bazı verilerdeYIL/NUMARAolarak verilmiş. Satırlardan iki türlü de veri alabiliyoruz fakat beklenen formatın hangisi olduğu net olmadığı içinYIL/NUMARAformatı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/68870adresine 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İ 1930gibi 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_textiçinde 189 kayıttaDöneme benzer bir bilgi bulunmamaktadır. Bu nedenle dönem bilgisine erişilememektedir.
