Menggunakan Algoritma ML untuk Mengklasifikasikan Dokumen Berganda: Pengalaman VTB

Sebagai bagian dari konveyor kredit badan hukum, bank meminta dokumen asli dari berbagai perusahaan. Seringkali pemindaian dokumen-dokumen ini datang dalam bentuk file multi-halaman tunggal - "stream". Untuk kemudahan penggunaan, arus perlu dibagi ke dalam dokumen terpisah (satu halaman atau multi-halaman) dan diklasifikasikan. Di bawah potongan, kita berbicara tentang penerapan algoritma pembelajaran mesin dalam klasifikasi dokumen yang sudah tersegmentasi.



Jenis dokumen ditentukan oleh informasi teks dan visual. Misalnya, paspor atau buku kerja mudah dibedakan secara visual tanpa menganalisis teks di dalamnya. Selain itu, kualitas pengenalan teks dalam dokumen semacam itu agak rendah jika solusi non-khusus digunakan. Oleh karena itu, komponen visual membawa informasi yang jauh lebih relevan untuk klasifikasi. Perjanjian sewa dan piagam perusahaan mungkin secara visual serupa, namun, informasi tekstual yang dikandungnya sangat berbeda. Akibatnya, tugas mengklasifikasikan dokumen dikurangi menjadi model fusi data, yang harus menggabungkan dua sumber data tidak terstruktur: representasi visual dari dokumen dan hasil pengenalan informasi teks.

Perhatikan bahwa di perbankan, klasifikasi dokumen juga digunakan dalam konveyor individu pada pemindaian atau foto dokumen, untuk menyortir akumulasi dana dokumen, untuk menyaring ulasan pelanggan untuk meningkatkan kualitas layanan, untuk menyortir dokumen pembayaran, untuk penyaringan tambahan aliran berita, dll. . 

Model BERT


Untuk mengatasi masalah kami, kami menggunakan model BERT (Bidirectional Encoder Representations from Transformer) - ini adalah model bahasa yang didasarkan pada Transformer pengkodean bidirectional multilayer . Transformator menerima urutan token (kode kata atau bagian kata) sebagai input dan, setelah transformasi internal, menghasilkan representasi kode dari urutan ini - serangkaian embeddings. Selanjutnya, embeddings ini dapat digunakan untuk menyelesaikan berbagai masalah.


Arsitektur Model Transformer

Jika lebih terinci, maka urutan token dimasukkan ke input, dijumlahkan dengan kode posisi token ini dan kode segmen (penawaran) di mana token tersebut berada. Untuk setiap urutan input, Transformer menghasilkan representasi konteks-sensitif (satu set embedding untuk seluruh urutan) berdasarkan mekanisme adaptif "perhatian". Setiap output embedding dikodekan "perhatian" dari beberapa token relatif terhadap yang lain.


Kami menyandikan kata itu, bagian dari mekanisme "perhatian" yang difokuskan pada The Animal dan memperbaiki bagian perwakilannya dalam penyandiannya (dari blog Illustrated Transfomer )

Model BERT dibangun dalam dua langkah: pra-pelatihan dan penyetelan file. Selama pra-pelatihan, model memecahkan dua masalah: MLM (Model Bahasa Masked) dan NSP (Prediksi Kalimat Berikutnya). Dalam tugas MLM, proporsi token tertentu dalam urutan input diberi label secara acak (tertutup), dan tugasnya adalah mengembalikan nilai token yang telah ditutup. Tugas NSP adalah klasifikasi biner pada pasangan kalimat ketika perlu untuk memprediksi apakah kalimat kedua adalah kelanjutan logis dari kalimat pertama. Selama penyetelan, Transformer yang dilatih sebelumnya melatih kembali tugas-tugas khusus ini. Transformer tala berdasarkan telah membuktikan dirinya dalam banyak NLP ( Natural Language Processing ) tugas :. Otomatis chatting bots, penerjemah, analisis teks, dan lain-lain Transformer


sirkuituntuk penerjemah otomatis dari Bahasa Prancis ke Bahasa Inggris (dari blog The Illustrated Transfomer )

Sebelum model BERT muncul, metode untuk pemindaian halaman digunakan: tanda-tanda konvolusional dari gambar (diperoleh dengan menggunakan jaringan saraf convolutional CNN ), atribut teks frekuensi ( TF-IDF ) , tag teks tematik ( topik LDA ), tag teks konvolusional (konvolusi 1-D), embedding kata ( WordToVec , GloVe ) dan kombinasinya. 

Metode yang dikembangkan sebelumnya memberikan kualitas yang baik. Tetapi semakin dekat kualitas yang dipilih ke maksimum, semakin sulit untuk memperbaikinya. Seperti yang akan kami tunjukkan nanti, ketika kami sudah memiliki kualitas mendekati maksimum, penggunaan model BERT membuatnya semakin tinggi. 

Karena kami bekerja terutama dengan teks-teks Rusia, kami menggunakan model BERT, yang sudah dilatih sebelumnya pada beberapa kasus teks-teks Rusia ( RuBERT, Rusia, yang diambil dari DeepPavlov). 

Dataset kami 


Deskripsi


Pemilihan dokumen yang kami selesaikan masalah klasifikasi terdiri dari pemindaian dokumen perusahaan dari perusahaan yang diakumulasikan oleh VTB Bank selama bertahun-tahun. Dokumen-dokumen perusahaan multi-halaman disegmentasikan secara semi-otomatis dari aliran yang dipindai, dan halaman-halamannya diklasifikasikan dengan solusi berbayar.

Kebanyakan pindaian berwarna hitam dan putih, dan sebagian kecil berwarna (terutama karena cetakan warna).

Pelanggan unit bisnis mengidentifikasi 10 kategori utama dokumen (sekitar 30.000 dokumen multi-halaman sudah tersegmentasi, ~ 129.000 halaman). Dokumen harus dibersihkan secara manual karena kesalahan selama segmentasi. Satu kategori "Lainnya" juga diperkenalkan, di mana semua kategori lain dari dokumen yang kurang signifikan digabungkan (sekitar 300 kategori, ~ 43.000 dokumen multi-halaman sudah tersegmentasi, ~ 128.000 halaman). Sebagai hasilnya, kami akan membangun classifier dengan 11 kelas. Kami juga menambahkan sekitar 18.000 gambar dari dataset ImageNet ke kategori "Lainnya" (untuk "perlindungan dari orang bodoh").

10 kategori utama adalah:

  1. Kontrak sewa
  2. Ekstrak dari daftar peserta
  3. Piagam Perusahaan
  4. Sertifikat pendaftaran dengan otoritas pajak
  5. Kuisioner untuk badan hukum
  6. Paspor Rusia
  7. Lembar pendirian
  8. Sertifikat pendaftaran negara badan hukum
  9. Pesanan / Pesanan
  10. Keputusan / Protokol

Berbagai kartu lainnya identifikasi (paspor asing, kartu migrasi, dll), sertifikat lainnya, kuesioner IP, pernyataan, bertindak, surat kuasa, kuesioner, keputusan sidang arbitrase, gambar dari ImageNet, dll yang termasuk dalam kategori lain.
Kereta itu diambil sekitar 81% dari dokumen multi-halaman yang sudah tersegmentasi (dari jumlah semua dokumen tersebut), dev - 9%, tes - 10%. Untuk kemurnian percobaan, pemilihan dibagi sehingga halaman-halaman dari dokumen multi-halaman tersegmentasi jatuh seluruhnya dalam satu bagian: baik kereta, atau dev, atau tes.

Halaman Bersertifikat-Dijahit


Seringkali, klien perusahaan tidak menyediakan dokumen asli, tetapi salinan dokumen, banyak di antaranya disertifikasi oleh notaris atau oleh eksekutif perusahaan. Selain itu, dokumen multi-halaman sering dijilid, menentukan tanggal firmware, dan sekali lagi disertifikasi pada halaman terakhir. 

Oleh karena itu, dalam dataset kami terdapat banyak dokumen multi-halaman seperti itu, di mana pada pemindaian terakhir (halaman) ada segel, tanggal dan informasi lain mengenai firmware atau rincian saksi, tetapi tidak terkait dengan kelas dokumen. Di bawah ini adalah halaman terakhir dari dua dokumen multi-halaman berbeda yang disegmentasi dari aliran, yang hampir tidak mungkin untuk diklasifikasi dengan benar jika Anda tidak melihat sisa halaman.


Halaman-halaman terakhir dokumen yang identik dari berbagai kelas

Kualitas pindai


Meskipun pemindaian dokumen biasanya dilakukan di kantor bank (menggunakan peralatan penyalinan yang baik), pelanggan sering membawa salinan dokumen yang dipindai berulang kali. Dan kualitas salinan seperti itu sangat menderita: pada pemindaian ada banyak kebisingan dan artefak yang dapat muncul dari kualitas toner yang buruk, dari hologram dan tekstur pada banyak dokumen dan karena alasan lain.

Orientasi


Ada banyak dokumen dalam dataset dengan orientasi pemindaian yang salah, ini terutama berlaku untuk kartu ID dan dokumen teks yang dibuat dalam mode lansekap. Namun pada dasarnya, teks diputar dengan kelipatan 90 derajat (± 5 derajat). Saat mengekstraksi teks, kami juga menentukan orientasi gambar yang “benar” sehingga sebagian besar teks diorientasikan secara vertikal.

Baseline


Karena sebagian besar dokumen mulai memindai dari halaman pertama, biasanya ada informasi yang cukup di dalamnya untuk menentukan kelas, dan banyak dokumen multi-halaman berbeda dalam satu halaman pertama.

Oleh karena itu, kami akan membuat klasifikasi dasar untuk dokumen multi-halaman hanya pada halaman pertama. 

Perhatikan bahwa meskipun kami tidak mempertimbangkan masalah segmentasi multi-page stream (PSS - Page Stream Segmentation) dalam artikel ini, tetapi jika kami menambahkan halaman dokumen yang tersisa ke pelatihan classifier kami, dan bukan hanya yang pertama, kami dapat dengan mudah mendapatkan solusi untuk masalah segmentasi PSS dengan klasifikasi biner : untuk halaman dari aliran, dua kelas diprediksi pada gilirannya: "dokumen baru" atau "dokumen yang sama". 

Preprocessing


Karena banyak gambar pindaian besar, dan ini memengaruhi kecepatan pemrosesan, kami awalnya memampatkan semua pindaian sehingga kedua ukuran gambar (lebar dan tinggi) tidak lebih dari 2000 piksel.

Untuk mengekstrak teks dari gambar, kami menggunakan paket Tesseract 4.0 gratis dari Google. Versi 4.0 (dan lebih tinggi) dari paket ini berfungsi cukup baik dengan noise (tidak seperti versi sebelumnya), oleh karena itu kami tidak menghilangkan noise dari teks, tetapi menentukan orientasi "benar" sebelum mengekstraksi teks dari gambar pindai, yang kami juga menggunakan fungsi khusus di Tesseract 4.0

Klasifikasi konvolusional dalam gambar


Dari setiap dokumen, kami memperoleh tanda-tanda konvolusional menggunakan jaringan saraf convolutional pra-terlatih ( ResNet34 ). Untuk ini, output dari lapisan konvolusional terakhir - vektor 512 tanda konvolusional - diambil. Sebelum dijalankan melalui jaringan saraf, gambar-gambar pemindaian dari kereta api mengalami augmentasi untuk menahan pelatihan ulang.

Sebagai model pengklasifikasi pada tanda-tanda konvolusional, regresi logistik dan peningkatan dicoba dengan pemilihan parameter pada dev.

Kualitas model classifier konvolusional terbaik pada tes adalah sekitar 76,1% (akurasi) pada regresi logistik.

Metode ini memungkinkan kami untuk mengklasifikasikan pemindaian yang tampaknya sangat berbeda satu sama lain. Tetapi untuk menjalankan gambar melalui jaringan saraf, mereka dikompresi dengan ukuran input jaringan saraf (ResNet34 memiliki ukuran 224x224 piksel pada input), dan oleh karena itu kualitas klasifikasi rendah: cetakan dokumen menjadi tidak dapat dibaca, dan penggolong hanya dapat "menangkap" hanya untuk beberapa tanda konvolusional, diperoleh dari font besar, beberapa objek pada halaman dengan pengaturan khusus, dll., tetapi penggolong seperti itu tidak memperhitungkan esensi teks.


Pemindaian halaman pertama perjanjian sewa dan halaman pertama piagam perusahaan secara visual berbeda

Tetapi kami sedang memecahkan masalah mengklasifikasikan dokumen perusahaan, di mana banyak jenis dokumen sebagian besar berisi informasi tekstual, dan sulit untuk membedakan secara visual - sulit untuk "menangkap" secara visual hanya pada "tempat memanjang" dari garis dengan header dokumen yang identik:


Mengurangi salinan pindaian sertifikat dari dua kategori berbeda secara visual. hampir tidak dapat dibedakan

Kami menganggap bahwa atribut teks akan meningkatkan kualitas, dan oleh karena itu menambahkan atribut teks, atau lebih tepatnya, membuat penggolong teks untuk model baseline.

Klasifikasi teks


Untuk model dasar, kami akan membangun penggolong teks hanya pada tanda-tanda TF-IDF (Term Frequency - Inverse Document Frequency) pada teks yang diekstrak dari pemindaian. Sebelum mengkompilasi matriks termal TF-IDF, teks dikurangi menjadi huruf kecil; tanda baca, kata-kata berhenti dihapus dari teks; kata-kata diperiksa untuk ejaan dan dikurangi menjadi bentuk awal oleh lemmatization (paket Pymystem3). 

Sebagai model classifier, kami mencoba lagi regresi logistik dan peningkatan, parameter dipilih pada dev. Karena matriks termal dalam ukuran besar dan sangat jarang, regresi logistik menunjukkan kualitas yang baik, dan kualitasnya 85,4% (akurasi) per tes.

Ensemble pengklasifikasi


Untuk mendapatkan ensemble, kami mengambil perpaduan antara pengklasifikasian konvolusional dan teks dengan bobot yang dipilih pada sampel dev. Yaitu, untuk setiap pemindaian S kita ambil dengan bobot α probabilitas yang ditetapkan Y CNN (11 digit dengan jumlah kategori), yang dikeluarkan oleh pengelompokan konvolusional, kami juga mengambil probabilitas 11 digit yang ditetapkan Y TF-IDF , yang dikeluarkan oleh pengelompokan teks, dengan bobot 1 - α, dan merangkum set tertimbang ini untuk mendapatkan output dari pengelompokan baseline campuran:

Y CNN + TF-IDF (S) = α Y CNN + (1 - α) Y TF-IDF

Sebagai hasilnya, kami mendapatkan kualitas dari classifier campuran 90,2% (akurasi) pada pengujian.
Hasil pengklasifikasi: convolutional (Y CNN ), teks berdasarkan tf-idf (YTF-IDF ) dan ansambelnya (Y CNN + TF-IDF ):

  • Y CNN - 76,1%
  • Y tf-idf - 85,4%
  • Y CNN + TF-IDF - 90,2%

Klasifikasi dua langkah


Ketika menganalisis hasil ansambel classifier, ternyata ia sering melakukan kesalahan pada pemindaian dari kategori "Paspor (RF)", mengklasifikasikan paspor sebagai "Lainnya", karena kategori ini berisi banyak kartu identitas. Selain itu, pemindaian mereka, serta pemindaian paspor, juga seringkali berkualitas buruk, yang mengganggu klasifikasi kualitatif.
Oleh karena itu, kami memutuskan untuk melakukan klasifikasi dalam dua langkah.

Langkah 1


Kami mentransfer ke kategori "Paspor Federasi Rusia" semua kartu identitas dari kategori "Lainnya" sesuai dengan pemisahan awal menjadi kereta, dev dan tes.

10 kategori utama:

  1. Kontrak sewa
  2. Ekstrak dari daftar peserta
  3. Piagam Perusahaan
  4. Sertifikat pendaftaran dengan otoritas pajak
  5. Kuisioner untuk badan hukum
  6. Paspor Federasi Rusia + berbagai kartu ID (paspor asing, kartu migrasi, dll.)
  7. Lembar pendirian
  8. Sertifikat pendaftaran negara badan hukum
  9. Pesanan / Pesanan
  10. Keputusan / Protokol

Kategori "Lainnya":

  • Bukti lainnya
  • Kuesioner IP
  • Pernyataan
  • Tindakan
  • Surat kuasa
  • Kuisioner
  • Keputusan pengadilan arbitrase, dll.

Kami melatih ansambel pengklasifikasi pada sampel yang dimodifikasi tersebut. 

Langkah 2 


Sebagai langkah kedua, kami melakukan klasifikasi biner dalam kategori 6 yang diperoleh pada langkah pertama: "Paspor Federasi Rusia" (kelas 1) versus "Berbagai kartu ID" (kelas 0). Untuk melakukan ini, dengan analogi, kami melatih pengklasifikasi konvolusional dan teks (dalam kedua model ada regresi logistik) dan menimbang hasilnya, setelah menerima ansambel.

Kualitas klasifikasi keseluruhan pada dua langkah ternyata menjadi 95,7% (akurasi) per tes. Dalam hal ini, kualitasnya memenuhi persyaratan pelanggan bisnis kami (ambang batas - 95%).

Tanda-tanda BERT


Kami membangun klasifikasi dua langkah, mirip dengan yang kami lakukan di atas, tetapi pada setiap langkah, alih-alih fitur TF-IDF, kami menggunakan embeddings halaman teks yang diperoleh dari model RuBERT. Untuk setiap halaman, teks diberi tokenized, dan urutan 256 token pertama dipasok ke input model RuBERT (dengan padding pad hingga 512, mis., Dengan ukuran input model). 

Untuk efisiensi yang lebih besar, sebelum menerima embeddings teks, kami melatih model MLM (Masked Language Model) pada teks dari dataset kami, mirip dengan bagaimana penulis model BERT melakukannya: ketika kami memasukkan urutan token ke input model RuBERT, kami mengganti sebagian tertentu dengan token [MASK] diambil token. Untuk kemurnian percobaan, pra-pelatihan hanya dilakukan pada teks dari kereta. Urutan tanda diambil pada semua halaman dokumen tersegmentasi, dan tidak hanya pada yang pertama. Awal dari urutan dipilih secara acak dari teks tokenized.
Pada tahap embedding, vektor rata-rata dari output yang dihasilkan dari model RuBERT diambil sebagai embedding teks dari halaman.

Pra-pelatihan memberikan peningkatan dalam klasifikasi dua langkah: ketika menggunakan embeddings teks yang diperoleh dari model RuBERT, kualitasnya meningkat menjadi 96,3% (akurasi) dengan tes. Perhatikan fakta bahwa akurasi yang lebih dekat adalah 100%, semakin sulit untuk ditingkatkan. Oleh karena itu, peningkatan yang dihasilkan sebesar 0,6% dapat dianggap signifikan.

Peningkatan panjang urutan token input menjadi 512 (hingga ukuran input model BERT) tidak menghasilkan peningkatan yang nyata.

Apa yang kita punya


Skema akhir model:



Kualitas semua model yang diuji:

  • Y CNN - 76,1%,
  • Y TF-IDF - 85,4%,
  • Y CNN + TF-IDF - 90,2%,
  • Y CNN + TF-IDF + 2 langkah - 95,7%,
  • Y CNN + RuBERT + 2 langkah - 96,3%,

di mana Y CNN adalah classifier konvolusional, Y TF-IDF adalah classifier teks pada tag TF-IDF. 

Y CNN + TF-IDF - ansambel pengklasifikasi (Y CNN + TF-IDF (S) = α Y CNN + (1 - α) Y TF-IDF, α = 0,45).

Y CNN + TF-IDF + 2 langkah - klasifikasi dua langkah: 1) kartu ID ditransfer ke kategori “Paspor Federasi Rusia + kartu ID”, dan ansambel pengklasifikasi dibangun berdasarkan sampel yang dihasilkan dengan 11 kelas; 2) dalam kategori “Paspor Federasi Rusia + Kartu Identitas”, sebuah ensemble pengklasifikasi dengan dua kelas sedang dibangun: kelas 1 - Paspor Federasi Rusia, kelas 0 - Kartu Identitas.

Y CNN + RuBERT + 2 langkah- klasifikasi dua langkah; alih-alih tanda TF-IDF, embeddings teks dari model RuBERT yang sudah dilatih sebelumnya pada dataset kami diambil.

All Articles