Jika Anda lulus dari sekolah menengah pada saat USE, maka Anda tahu bahwa semua tugas di dalamnya memiliki seperangkat formulasi standar dan diurutkan berdasarkan jenis. Di satu sisi, ini memfasilitasi persiapan untuk ujian: siswa sudah tahu apa yang harus dilakukan dalam tugas tanpa membaca kondisinya. Di sisi lain, setiap perubahan dalam urutan pertanyaan dapat menyebabkan masalah baginya. Secara kasar, hasilnya mulai lebih dipengaruhi oleh seberapa banyak seseorang telah mengambil keputusan untuk otomatisme, dan bukan bagaimana dia bereaksi. Ujian menjadi seperti naskah.

Sebagai bagian dari konferensi Journey AI, kami memutuskan untuk mengadakan kompetisi untuk mengembangkan algoritma yang dapat lulus ujian tidak lebih buruk dari seseorang. Peserta diberikan versi uji tugas yang dapat digunakan untuk memvalidasi solusi dan untuk pelatihan. Sebagai karyawan Sberbank, kami tidak dapat mengklaim dana hadiah , namun kami mencoba menyelesaikan masalah ini dan ingin membicarakan bagaimana kami melakukannya. Spoiler - sertifikat yang kami terima.
Sedikit teori
Penerapan jaringan saraf untuk tugas apa pun saat ini sudah merupakan cerita dari seri: "Tidak pernah ada hal seperti itu, dan ini dia lagi." Tetapi tugas baru apa dari jaringan saraf yang benar-benar harus diterapkan?
Secara historis, ahli teori meletakkan kemampuan berikut dalam konsep Kecerdasan Umum Buatan:
- pengambilan keputusan dalam menghadapi ketidakpastian
- belajar mandiri
- mengoperasikan basis pengetahuan tentang dunia
- multidisiplin, pemrosesan bersama informasi dari berbagai sumber (teks, gambar, suara)
Metafora "otak sebagai komputer" sebagian besar telah menentukan persyaratan ini, dan tidak satu pun di antaranya, kecuali untuk pelatihan, belum sepenuhnya diterapkan oleh AI ¯ \ (ツ) / ¯
Dalam beberapa tahun terakhir, Anda dapat mengamati upaya pertama untuk menciptakan sistem yang lebih kompleks - misalnya, Aristo dari Allen Institute 90% menyelesaikan tes untuk pengetahuan umum untuk kelas delapan.
Ujian akhir dalam bahasa Rusia memiliki 27 tugas, 26 di antaranya adalah tugas dengan pilihan jawaban atau jawaban terbuka di mana Anda dapat memasukkan versi Anda sendiri, dan yang terakhir adalah esai tentang teks. Artinya, tugas pertama selalu tentang makna teks, yang keempat - tentang penekanan, yang ketujuh - tentang kesalahan bicara umum, dll. Tugas ini menempatkan sistem-ML dalam situasi "siswa sekolah menengah", di mana Anda perlu mendapatkan seperangkat keterampilan dan pengetahuan dasar terlebih dahulu, dan kemudian menjawab pertanyaan dengan benar menggunakan mereka.
Untuk lulus bahasa Rusia, siswa harus:
- belajar menulis dan berbicara dengan benar,
- belajarlah untuk menyusun pikiran Anda
- memahami koneksi logis dalam teks, mengetahui gaya, ejaan, ortoepy, dll.,
- bacalah daftar literatur yang mengesankan mulai dari monumen paling terkenal dari sastra Rusia kuno hingga modern dan operasikan pada karya-karya utama, plot, masalah atau
hapus buku .
Mengetahui bahwa metode NLP modern masih dapat mengatasi banyak tugas seperti itu, kami memutuskan untuk mencobanya.
Semua data yang kami terima disajikan dalam format json, terstandarisasi dan berisi kata-kata dan teks yang jelas yang Anda perlukan untuk menyelesaikan tugas, jawab opsi jika disediakan oleh pertanyaan.

Cuplikan layar dari Yandex.Tutor
Pertanyaan-pertanyaan dalam tugas dirumuskan terlalu lambat untuk mesin - Anda tidak hanya perlu melakukan tugas - untuk menemukan kesalahan dalam teks dan memperbaikinya, menempatkan huruf-huruf yang hilang, menemukan kalimat yang memenuhi persyaratan yang diberikan, tetapi juga menuliskan jawabannya dengan benar. Ini bisa berupa ekspresi itu sendiri dengan kesalahan atau, sebaliknya, contoh tanpa kesalahan, jumlah contoh ini, jumlah kalimat dalam urutan menaik, dll. Dan kemudian kami ingat yang klasik:
Dalam seni mengajukan pertanyaan, anggota parlemen Goracek benar-benar ahli. Dia memaksa para murid untuk mendaftar secara terbalik sepuluh perintah Tuhan atau menuntut:
- Ludwik, jawab dengan cepat, penjahat, perintah apa yang ada di tempat ketiga dari akhir, sebelum "Jangan bunuh"?
Yaroslav Hasek, "Pelajaran hukum Allah"
Bagaimana kita menangani hal ini pada awal?
Jawaban: ¡ɯǝɓn̯ɔ ʞɐɯ dan

Karena tidak ada lebih dari 27 jenis tugas, pada data pelatihan kami membuat parser json yang memilih kata-kata yang tepat dari seluruh teks tugas - apa dan bagaimana melakukan - dan dibuat pada formulasi ini pengelompokan linear paling sederhana pada n-gram kata dan SVM (mendukung mesin vektor), yang memperkirakan nomor pekerjaan, dan sistem menerima format pekerjaan dan respons: https://github.com/sberbank-ai/ai-journey-2019 .
Secara potensial, saya ingin menerapkan mekanisme perhatian atau sesuatu yang serupa di bagian solusi ini untuk menemukan hubungan antara formulasi dan jenis pertanyaan. Kami berharap salah satu peserta mengimplementasikan solusi seperti itu.
Evaluasi Keputusan
Dalam menilai solusi semacam itu, untuk perbandingan dengan seseorang, metrik klasifikasi biasa (akurasi, ukuran-f.) Tidak digunakan, tetapi skala penilaian 100 poin diambil, di mana poin untuk tugas yang diselesaikan dengan benar dirangkum.
Solusi masalah diperiksa secara otomatis, dan apa yang harus dilakukan dengan esai akhir? Guru dan ahli metodologi dari Moskow dan Novosibirsk mengambil bagian dalam evaluasi esai dalam kerangka kompetisi. Mereka mengevaluasi esai yang dikumpulkan sesuai dengan kriteria independen, termasuk ejaan, tanda baca, koherensi logis dari teks, keberadaan argumen sastra, dan posisi penulis. Secara umum, semuanya seperti di sekolah.
Desain dasar
Setelah menerapkan json parser dan pengelompokan pertanyaan, kami menerima jenis tugas tertentu. Mereka turun ke daftar ini:
- periksa ejaan, masukkan huruf, koreksi kesalahan (H dan HH, NOT dan NI, bersama - secara terpisah, root dengan pergantian, dll.);
- memahami dalam konteks makna kata multi-nilai (pilihan jawaban dalam konteks);
- sorot pemikiran utama dalam teks (pemilihan dari daftar kalimat);
- beri tanda baca (pilih tempat di mana koma, tanda hubung, dll diperlukan);
- menekankan kata-kata (menemukan kesalahan);
- menemukan kesalahan tata bahasa dalam contoh-contoh dan menunjukkan jenisnya (berkorelasi);
- hapus aliansi antar bagian teks (berdasarkan logika teks);
- menulis esai pada teks (temukan masalah dan ungkapkan).
Dengan menggunakan metode peering lebih lanjut, kami mengurangi semua jenis tugas menjadi metode pemrosesan teks yang terkenal.
EmbeddersEmbedders (word2vec, fasttext, GloVe) digunakan untuk mendapatkan representasi vektor dari kata, kalimat, dan teks individual. Kami menggunakan BERT di pytorch - transformator universal, lebih sering digunakan untuk mendapatkan properti kata-kata (dari Google). Transformator seperti itu memberikan hasil yang tinggi pada tugas-tugas di mana Anda perlu memahami makna kata yang bernilai banyak, menyoroti kalimat yang paling bermakna dalam teks, dll. - tugas dikurangi menjadi pilihan penyematan terdekat dengan ukuran cosinus.
Model BahasaModel bahasa dapat memberikan informasi yang berguna tentang probabilitas kata berikutnya, perkalian kalimat. Dalam hubungannya dengan ujian, mereka dapat digunakan untuk mendeteksi dan memperbaiki kesalahan bicara (mengganti fragmen non-frekuensi dengan yang serupa) dan untuk menghasilkan teks. Pada awal, kami menggunakan basis frekuensi n-gram korpus nasional bahasa Rusia, memilih kata-kata normatif dari itu, dan mereka yang tidak hadir dianggap kandidat untuk kesalahan. Kami juga menggunakan basis ini untuk mengganti huruf yang hilang menjadi kata-kata. Untuk menghasilkan teks esai, kami juga mengambil "model universal" - ULMFit . Ini adalah fast.ai's LSTM beberapa dropout, sangat baik untuk menghasilkan urutan. Kami melatihnya di esai sekolah tentang sastra, yang kami kumpulkan secara online. Ternyata, meskipun sia-sia, tetapi hampir tanpa kesalahan.
Parser dari morfologi dan sintaksisUntuk menentukan bagian ucapan, kasus, jumlah, jenis kelamin, bentuk normal kata dan hubungan antara kata, kami menggunakan pymorphy2 dan UDPipe.
PengklasifikasiTugas tanda baca dapat direduksi menjadi klasifikasi - menempatkan koma di tempat tertentu atau tidak, dengan aturan apa tanda hubung diatur, dll.
Kami menyelesaikan dua jenis tugas dengan jenis arsitektur berikut:
Jaringan saraf Siam menerima dua embel-embel BERT sepasang kalimat pada input, memutuskan apakah tanda hubung, titik dua atau tidak ditetapkan sesuai dengan satu aturan.
Klasifikasi CatBoost menerima jendela input untuk tag bagian ucapan 6 (dari bentuk “KATA BENDA KATA KERJA ADJ KATA BENDA KATA BENDA”) dan memutuskan apakah akan menempatkan koma di tengah atau tidak.
Basis pengetahuanApa yang perlu diingat dan dipelajari siswa, kami kumpulkan dari sumber terbuka:
1 kamus Orthoepic (stres) - seperti dalam kurikulum sekolah.
2 Kamus kiasan - sarana sastra: sinonim, antonim, paronim, unit frasa, dll., Dikumpulkan dari situs pada literatur.
3 Koleksi esai sekolah tentang sastra - untuk pendidikan lebih lanjut dari model generatif.
Model KomposisiPembuatan teks, peringkasan, pemodelan tematik. Di sini cakupan pemikirannya luar biasa. Pada akhirnya, kami mengambil, sebagaimana telah disebutkan, ULMFit untuk menghasilkan teks. Tetapi esai harus dalam teks dan memenuhi banyak kriteria. Jika kami menganggap bahwa kami mendapatkan ejaan dan koherensi teks karena ULMFit, maka setidaknya posisi penulis dan koherensi tematik dari pekerjaan kami dan teks ini tetap ada.
Kami memecahkan subtugas ini sebagai berikut:
- LDA + menyiapkan frasa pertama . Versi esai sekolah yang dikumpulkan dikelompokkan berdasarkan kata n-gram menjadi 30 topik yang telah kami artikan. Setiap topik ternyata terkait dengan karya satu atau dua penulis pada topik terkait - karya tentang nasib Rusia, tentang situasi rakyat, tentang karya Dostoevsky, tentang karya A. Akhmatova dan signifikansinya bagi budaya Rusia abad ke-20, dll.
- Templat TextRank + . Algoritma peringkasan menarik 2-3 kalimat paling bermakna dari teks yang diberikan, dan kalimat-kalimat ini dimasukkan ke dalam serangkaian template yang membingkai kutipan dengan posisi penulis.
Final pipeline: model tematik menentukan topik teks dan memberikan frasa pertama ke model generatif. Model generatif menerima kalimat pertama dan melanjutkannya sampai akhir komposisi. Kemudian model peringkasan memasukkan paragraf kedua dalam teks ini, yang mencerminkan posisi penulis.
Berikut ini adalah contoh komposisi khas yang kami peroleh pada model seperti itu (template dicetak miring, frasa pertama dari model tematik dicetak tebal).
Nasib manusia dalam perang, cinta tanah airnya, cintanya pada ibunya adalah topik yang menarik bagi Tolstoy , mereka yang meninggalkannya. dan dua pangeran Andrei Tolstoy - Pierre dan Andrei - menjalani perang. Hubungan manusia yang jahat juga tidak dalam jalurnya, tetapi dalam kehidupan, standar sipil dan moral. Kebebasan terletak pada kenyataan bahwa mereka adalah orang yang baik dan mengerikan, rasa keterbukaan dan pengkhianatan. Mereka adalah kebebasan - dari Tuhan - untuk Napoleon, untuknya - Napoleon. Itu membawa mereka baik dan jahat, jadi pahlawan besar membentuk apa yang merupakan wakil dari orang yang sama.
Penulis mengilustrasikan masalah ini dengan contoh kalimat “Ketika saya mengatakan bahwa seseorang tidak boleh menentang nuraninya, tidak boleh membuat kesepakatan dengannya, saya tidak bermaksud sama sekali bahwa seseorang tidak bisa atau tidak boleh membuat kesalahan, tersandung.” dan "Saya menjawab kepadanya bahwa itu tidak hanya mungkin, tetapi juga perlu untuk menulis tentang kesalahan orang-orang hebat, bahwa seorang pria hebat bukan karena dia tidak salah dalam hal apa pun." Menurut pendapat saya, pembaca mengamati posisi penulis dalam kalimat: "Tetapi bahkan jika Anda gagal mempertahankan kehormatan masa muda Anda, Anda dapat dan harus mendapatkannya kembali di masa dewasa, hancurkan diri Anda, temukan keberanian dan keberanian untuk mengakui kesalahan."
Perang adalah bagian dari kepribadian yang harus memberi seseorang kemungkinan layanan universal lain. Masa depan adalah pembebasan, keinginan untuk kebebasan, cinta yang kuat untuk tanah air. Ini adalah keyakinan akan kemungkinan Tanah Air. Kita dapat mengatakan bahwa, terlepas dari agama Kristen, Pierre tidak dapat mengganggu jalannya sejarah, tetapi kenyataannya ia melakukannya. Perang 1812 Tolstoy menunjukkan bagaimana perjuangan Napoleon baru dengan lingkungan rakyat yang sederhana dan dengan rakyat.
Kita dihadapkan dengan seluruh Rusia, dan Novgorod adalah bagian dari Rusia. Gagasan utama yang ia miliki adalah hubungan orang-orang Rusia dengan alam. Novel Tolstoy "War and Peace" adalah sebuah karya di mana masalah sosial terkait erat, kehidupan terdiri dari kenyataan bahwa suara, kebaikan dan kejahatan - semua ini tidak menyembunyikan Tolstoy. Dostoevsky menulis bahwa bagi Tolstoy ini adalah posisi politik. Penulis menempatkan tempatnya dalam novel: di sini penulis menunjukkan orang-orang yang berada di balik dinding tanah air. Tolstoy memberikan contoh ini dan memberikan contoh karakter pertama dan utama.
Arsitektur dasar yang dihasilkan
Solusi akhir memiliki logika berikut:
- Pekerjaan yang masuk diketik oleh classifier - ia mendapatkan tipe dari 1 hingga 27.
- Masing-masing dari 27 tugas memiliki solver sendiri - sebuah skrip dengan formulasi tugas parsing, yang menerima informasi yang diperlukan dari kumpulan model-ML yang tersedia dan basis pengetahuan dan mengeluarkan jawaban dalam format yang benar.
Kumpulan model dan basis pengetahuan untuk semua pemecah adalah umum, ia dimuat ke dalam memori satu kali.

Apa hasilnya?
Baseline (sejauh ini tanpa verifikasi esai) memberi 27 poin dari 100 - lebih dari 60 tim memanfaatkan solusi dasar. Menurut kriteria ujian akhir, untuk mendapatkan sertifikat, Anda harus mencetak angka 24, tetapi untuk menyerahkan dokumen ke universitas, Anda membutuhkan minimal 36 poin. Tanda ini sekarang telah melewati 2 tim terbaik.

Banyak peserta menggunakan solusi kami sebagai pendekatan dasar, peningkatan dan penyempurnaan. Jika Anda tertarik pada kecerdasan buatan dan siap untuk mencoba tangan Anda pada tugas yang menarik, maka Anda memiliki beberapa minggu lagi! Dan kami sendiri terus meningkatkan model, mengikuti kompetisi dengan julukan CDS_team
Final kompetisi akan diadakan pada 8 dan 9 November di konferensi AI Journey di Moskow. Daftarkan kompetisi dan konferensi di sini .