Aturan hidup kita: mulailah judul artikel dengan huruf "T" dan cari pinjaman teks dengan cepat, akurat, dan yang paling penting, indah . Selama lebih dari setahun, kami telah berhasil menemukan pinjaman yang dapat ditransfer dan menulis ulang dengan bantuan jaringan saraf. Tetapi kadang-kadang Anda perlu "menembak diri sendiri dengan sengaja" dan, tertatih-tatih, menempuh jalan lain, yaitu. Jangan mengecek paraphrase atau plagiarisme, tetapi tinggalkan saja teks saja. Secara paradoks, itu menyakitkan, tetapi itu perlu. Katakanlah segera: kita tidak akan menyentuh bibliografi. Bagaimana menemukannya dalam teks? Mengapa mudah untuk mengatakannya, tetapi jauh lebih sulit untuk dilakukan daripada kelihatannya? Semua ini merupakan kelanjutan dari blog korporat Antiplagiarism , satu-satunya blog di mana mereka tidak suka dicoret teks .

Sumber Gambar: Fandom.com
Mengapa butuh waktu lama untuk menemukan itu?
Pertama, sedikit teori. Apa itu dokumen, dan bagaimana kita harus menghadapinya? Dalam "Arkeologi pengetahuan", M. Foucault mencatat: "Sejarah sekarang mengatur dokumen, membaginya, mengatur, mendistribusikan kembali level-level, menetapkan peringkat, mengkualifikasi mereka berdasarkan tingkat signifikansi, mengisolasi elemen, mendefinisikan unit, menggambarkan hubungan." Kami, tentu saja, bukan sejarawan ide, tetapi kami tahu dari pengalaman kami sendiri bahwa sebuah dokumen adalah selimut kain perca dari berbagai elemen yang dijahit bersama. Apa elemen-elemen ini dan bagaimana mereka saling berhubungan tergantung pada dokumen tertentu. Jika ini, misalnya, merupakan karya siswa, maka kemungkinan besar itu akan mencakup: halaman judul, bab dari teks utama, angka, tabel, formula, referensi, dan aplikasi. Dalam artikel ilmiah, kemungkinan besar akan ada anotasi, tetapi halaman judul mungkin benar-benar hilang. Dan koleksi artikel atau bahan konferensi mencakup seluruh artikel, yang masing-masing memiliki struktur sendiri. Singkatnya, setiap elemen dokumen menarik dan mandiri dan dapat memberi tahu banyak tentang jenis dokumen itu sendiri.
Idealnya, semua orang - baik kita dan para guru - ingin memiliki struktur dokumen yang ideal dan memproses setiap elemen dengan cara yang memenuhi tugas tertentu. Langkah pertama menuju sukses adalah menentukan apa nama barang itu. Stack_more_layers dan saya memutuskan untuk memulainya dengan last but not least , yaitu dengan elemen teks seperti "bibliografi". Ini adalah segmen di mana peminjaman teks paling tidak menarik bagi pengguna. Karena itu, perlu ditunjukkan dalam laporan bahwa kami "menangkap" daftar pustaka dan tidak mulai mencari apa pun di dalamnya.
Hidup adalah tontonan. Tidak peduli berapa lama itu berlangsung. Hal utama adalah bahwa harus ada daftar pustaka di akhir.
Di dunia yang sempurna, semuanya indah, dan penampilan dokumen juga. Teks dokumen yang ideal terstruktur, menyenangkan untuk dibaca, dan menemukan bibliografi dengan menarik slider dengan cepat sampai akhir tidak akan sulit sama sekali. Seperti yang telah ditunjukkan oleh praktik, kenyataan memiliki struktur yang sangat berbeda.
Untuk mulai dengan, dengan "bibliografi" banyak orang sama-sama berarti konsep-konsep berikut: "daftar referensi", "literatur yang digunakan", "daftar referensi" dan bahkan lebih dari seratus (sic!) Judul. Secara umum, untuk hal-hal seperti itu, ada aturan untuk desain referensi dan catatan bibliografi, yang menurutnya Anda dapat mengeluarkan daftar referensi dari lapisan teks. Katakan lebih banyak - bahkan ada GOST untuk desain rekaman ini . Di sini, misalnya, desain yang benar dari catatan bibliografi untuk buku terkenal:

Benar, perlu mempertimbangkan fakta bahwa manual tentang desain catatan "menurut GOST" membutuhkan hampir 150 halaman. Untuk pendaftaran referensi bibliografi dalam publikasi non-cetak, ada GOST terpisah untuk lebih dari 20 halaman. Namun, muncul pertanyaan yang masuk akal: berapa banyak orang akan mencurahkan waktu untuk membaca yang menghibur hanya untuk membuat beberapa referensi sastra dengan benar? Seperti yang ditunjukkan oleh latihan, ada beberapa. Tentu saja, ada sistem tata letak teks otomatis (misalnya, LaTeX ), tetapi di lingkungan siswa (dan ini adalah mayoritas "klien" kami) mereka tidak terlalu umum. Akibatnya, pada input kami memiliki teks yang berisi (atau mungkin tidak mengandung) setidaknya beberapa daftar sumber sastra terstruktur.
Kami akan mengklarifikasi satu hal lagi. Faktanya adalah bahwa kita tidak bekerja secara langsung dengan pekerjaan yang diunduh (pdf, docx, doc, dll.), Tetapi pertama-tama kita membawa mereka ke tampilan yang seragam, yaitu, kita mengekstrak lapisan teks . Ini berarti bahwa segala jenis pemformatan, misalnya, jenis atau ukuran font, dihapus dari teks. Akibatnya, kami hanya memiliki teks "mentah" yang kami miliki, yang sering terlihat sangat buruk karena berbagai artefak ekstraksi.
Harap perhatikan bahwa algoritme kami harus akurat dan mati . Pemilihan blok bibliografi hanyalah "fitur" tambahan dalam seluruh proses pemeriksaan dokumen, sehingga tidak harus menghabiskan banyak sumber daya. Ini berarti bahwa algoritma tidak boleh terlalu rumit.
Untuk melakukan ini, pertama-tama kita tentukan metrik kualitas yang dengannya kita akan mengevaluasi operasi algoritma kita. Kami akan menganggap tugas kami sebagai masalah klasifikasi. Setiap baris teks akan kita kaitkan dengan salah satu dari dua kelas - bibliografi atau non-bibliografi. Agar tidak menyulitkan kehidupan dengan indikator kualitas yang ditafsirkan dengan buruk (dan ada cukup ini!), Kami akan mempertimbangkan proporsi garis diklasifikasikan dengan benar dan salah. Kami bertindak dengan asumsi bahwa lapisan teks yang masuk dipecah menjadi beberapa baris. Dan lebih lagi bahwa klasifikasi seperti itu masuk akal, kita perlu satu baris untuk tidak menggabungkan bibliografi dengan teks asing. Ini adalah asumsi yang cukup kuat, tetapi hampir semua teks yang melewati DocParser kami memuaskannya. Dalam klasifikasi objek dua kelas, yang merupakan tugas kita, metrik kualitas paling populer adalah Precision dan Recall . Bagaimana tampilannya - lihat gambar di bawah ini:

Sumber gambar di atas: Wikipedia
Sumber gambar di bawah ini: Seri: Untuk Dummies
Gambar menunjukkan berapa kali algoritma dengan benar (atau tidak) mengklasifikasikan string, yaitu:
- TP adalah string bibliografi yang ditentukan algoritma dengan benar;
- TN adalah sebaris teks biasa yang ditentukan algoritma dengan benar;
- FP - sebaris teks biasa, yang algoritmanya didefinisikan sebagai bibliografi;
- FN adalah string bibliografi yang didefinisikan algoritma sebagai string teks biasa.
Persyaratan lain adalah bahwa algoritme kami harus cukup akurat (mis., Memiliki skor Presisi yang cukup tinggi). Ini dapat diartikan sebagai "lebih tepatnya, kita tidak memilih sesuatu yang diperlukan daripada memilih sesuatu yang tidak perlu."
All May Dreams Cam Tru
Menurut Anda, apa yang paling banyak dibutuhkan untuk menyelesaikan masalah penelitian? Pengembangan algoritma? Menanamkan solusi dalam sistem atau pengujian yang ada? Bagaimanapun caranya!
Anehnya, sebagian besar waktu dihabiskan untuk mengumpulkan data dan menyiapkannya. Juga dalam hal ini: untuk menghasilkan algoritma dan mengkonfigurasi parameternya, perlu memiliki cukup jumlah dokumen yang ditandai. Artinya, dokumen yang diketahui persis di mana mereka berisi catatan bibliografi. Akan mungkin untuk menarik penilai pihak ketiga, namun, untuk tugas-tugas kecil seperti itu, Anda biasanya dapat bertahan dengan sedikit darah dan menandai data sendiri. Hasilnya, melalui upaya bersama, kami memproses sekitar 1000 dokumen. Tentu saja, untuk pelatihan, misalnya, jaringan saraf, ini tidak cukup. Namun, ingat bahwa algoritme harus sederhana, yang berarti Anda tidak perlu banyak data untuk mengonfigurasikan parameternya.
Namun, sebelum mengembangkan suatu algoritma, Anda perlu memahami spesifikasi data. Setelah melihat sekitar 1000 dokumen acak, atau lebih tepatnya, lapisan teksnya, kita dapat menarik beberapa kesimpulan tentang bagaimana teks bibliografi berbeda dari yang biasa. Salah satu pola terpenting adalah bahwa hampir selalu bibliografi dimulai dengan kata kunci. Selain "daftar referensi" atau "sumber yang digunakan" yang populer, ada juga yang cukup spesifik, misalnya, "Buku Teks, manual, monograf".
Fitur lain yang sama pentingnya adalah penomoran catatan bibliografi. Sekali lagi, perlu disebutkan bahwa semua "tanda" dari daftar referensi ini sangat tidak akurat dan jauh dari selalu mungkin untuk menemukan semua catatan bibliografi dalam teks.
Namun, bahkan fitur yang tidak akurat tersebut cukup untuk mengembangkan algoritma paling sederhana untuk menemukan bibliografi di lapisan teks. Mari kita jelaskan secara lebih formal:
- Kami mencari "treble clefs" dalam teks - kata kunci bibliografi;
- Kami mencoba menemukan dalam teks di bawah ini penomoran catatan bibliografi;
- Jika ada penomoran, kita menelusuri teks sampai berakhir.
Algoritma sederhana ini menunjukkan akurasi hampir 100%, tetapi kelengkapannya sangat rendah. Ini menunjukkan bahwa algoritma kami hanya memilih garis bibliografi, tetapi melakukannya dengan selektif sehingga hanya menemukan sebagian kecil dari bibliografi. Kesulitannya adalah bahwa bibliografi dapat dengan mudah tidak diberi nomor, jadi kami akan menggunakan algoritma ini sebagai bantu.
Mari kita sekarang mencoba membangun algoritma lain yang menemukan jenis catatan bibliografi yang tersisa dalam teks. Untuk melakukan ini, sorot karakteristik yang membedakan garis teks biasa dari garis catatan bibliografi. Perlu dicatat bahwa teks bibliografi cukup terstruktur, meskipun masing-masing penulis membentuk struktur ini dengan caranya sendiri. Kami telah mengidentifikasi fitur-fitur khas berikut dari garis yang diinginkan:
- Kehadiran penomoran di awal baris - ini sudah disebutkan di atas ketika menggambarkan algoritma pertama;
- Kehadiran dalam deretan angka tahun. Selain itu, ini bukan hanya angka empat digit, (jika tidak akan ada banyak kebetulan), tetapi tahun-tahun tertentu yang paling sering digunakan ketika mengutip: dari tahun 1900-an hingga saat ini;
- Daftar nama lengkap penulis, editor dan orang lain yang berpartisipasi dalam publikasi publikasi, dalam berbagai format;
- Indikasi nomor halaman, volume dan informasi lain dari jenis yang serupa;
- Kehadiran di baris frasa yang menunjukkan nomor masalah;
- Kehadiran url di string;
- Kecanduan dalam jajaran kosakata profesional. Sebagian besar, ini adalah singkatan khusus, seperti 'conf.', 'Scientific-praktis.' dan singkatan serupa.
Kami mendefinisikan tanda-tanda ini sebagai biner dan melatihnya pada salah satu pengklasifikasi yang paling sederhana, tetapi pada saat yang sama cukup efektif - Random Forest . Algoritma Random Forest adalah metode klasifikasi ensemble. Ini terdiri dari banyak (biasanya sekitar 100) pohon keputusan sederhana, yang masing-masing membuat keputusannya sendiri, ke kelas mana objek tersebut menjadi milik. Jawaban dari keseluruhan algoritma dibuat sangat sederhana: kelas dipilih yang dibentuk oleh sebagian besar pohon keputusan:

Sumber Gambar: www.researchgate.net
Seperti disebutkan di atas, kami akan memilih parameter algoritma untuk memaksimalkan akurasinya. Mari kita coba terapkan algoritma ini pada beberapa dokumen dan lihat hasil pekerjaannya:

Pada gambar di atas, garis-garis yang dianggap algoritma bibliografi disorot dalam warna merah. Seperti yang Anda lihat, algoritme mengatasi tugasnya dengan cukup baik - hampir tidak ada sorotan yang tidak perlu dalam keseluruhan teks, namun, bibliografi itu sendiri ditentukan oleh "bagian". Ini mudah dijelaskan: karena algoritme diasah hingga akurasi tinggi, hanya dipilih garis-garis yang sangat mungkin menjadi bibliografi. Baris yang tidak dipilih, menurut algoritma, terlihat seperti potongan teks biasa.
Mari kita coba "sisir" hasilnya. Kita perlu menghilangkan dua masalah: pilihan tunggal acak dalam teks utama dan pemilihan bibliografi yang terputus itu sendiri. Solusi cepat dan efektif untuk masalah ini adalah operasi "perekatan" dan "penipisan". Nama-nama berbicara sendiri: kami akan menghapus baris bibliografi berdiri tunggal dan menempel garis yang berdekatan di mana ada beberapa baris yang tidak dipilih. Selain itu, kemungkinan besar, akan diperlukan untuk melakukan beberapa iterasi perekatan-penipisan, karena dengan satu pass, satu baris yang bukan bibliografi dapat tetap bersatu dan tidak dihapus. Kami mengonfigurasikan parameter operasi perekatan dan penipisan (jumlah lintasan, lebar perekatan, parameter penghapusan) pada subsampel yang terpisah (yang tidak tahu apa itu "pelatihan ulang", kami sarankan mencari di sini ).
Apa yang terjadi setelah perbaikan kami? Saat melihat beberapa dokumen, kami melihat ada daftar pustaka dengan "fitur" berikut:

Untungnya, kami memiliki algoritma yang sederhana namun efektif yang hanya memperhitungkan kasus-kasus seperti itu. Dan karena algoritma sederhana ini tidak memilih apa pun selain garis bibliografi yang diperlukan, kita dapat menggabungkan hasil dari kedua algoritma tersebut tanpa kehilangan kualitas.

Terlihat bagus. Tentu saja, karena algoritma ini probabilistik, ada kemungkinan bibliografi tidak dapat ditemukan dalam teks sama sekali. Kami secara khusus mengubah daftar bibliografi sehingga algoritme "tidak menyadarinya":

Tetapi bibliografi semacam itu, dalam pandangan yang sepenuhnya subjektif, tidak lagi jauh berbeda dari teks biasa.
Pada akhirnya, apa yang kita dapatkan? Kami telah mengimplementasikan modul untuk menyoroti catatan bibliografi dalam dokumen yang dapat diunduh. Modul ini terdiri dari dua algoritma, yang masing-masingnya dirancang untuk kekhususan operasi tertentu. Satu algoritma mengalokasikan blok bibliografi bernomor mengikuti kata kunci. Algoritme kedua memilih baris yang sangat mungkin menjadi bibliografi, dan kemudian melakukan beberapa operasi "perekatan" dan "penipisan". Hasil dari modul adalah gabungan dari algoritma yang dijelaskan.
Perlu juga dicatat bahwa kecepatan algoritma, bahkan pada dokumen besar, agak tinggi. Ini berarti bahwa algoritma kami sepenuhnya sesuai untuk persyaratan "fitur tambahan" selama proses verifikasi.
Kesimpulan
Jadi dari korek api dan biji-bijian ...Sebagai hasilnya, kami dapat menerapkan proses yang sederhana namun efektif untuk mengekstraksi catatan bibliografi dalam teks pengguna. Dan meskipun ini adalah bagian kecil dalam tugas menyoroti struktur dokumen, namun ini merupakan langkah besar dalam meningkatkan kualitas layanan sistem Anti-Plagiarisme . Ngomong-ngomong, hasil pekerjaan kami sudah bisa dilihat di laporan pengguna sistem. Buat dengan pikiran Anda sendiri!