Kami mengotomatiskan bus di sini; baru-baru ini, dengan bantuan kami, semua tiket di Rusia telah menjadi elektronik . Pasar baru saja memasuki TI, dan masih banyak hal yang dilakukan di buku lumbung.
Saya akan memberi tahu Anda tentang satu episode otomatisasi sederhana, yang telah diselesaikan puluhan tahun yang lalu dalam penerbangan dan kereta api, tetapi baru saja dimulai dengan kami. Jadi, situasinya: ada sekitar seratus sistem informasi berbeda yang mengirimi kami data tentang rute bus. Ini adalah kumpulan otomatisasi yang ditulis sendiri dari berbagai operator dan produk komersial yang bersaing. Setiap sistem memiliki format tersendiri untuk mencatat bagaimana pengembalian tiket bus dilakukan. Paling sering - catatan yang dapat dibaca manusia dalam bahasa Rusia, ditulis untuk operator dan kasir, tetapi sekitar 20% sistem tidak mengirim data pengembalian sama sekali.
Beberapa aturan tumpang tindih, dan mungkin ada beberapa level bersarang: “ Semua tiket tidak dapat dikembalikan, tetapi ke arah ini kami kembali ke sana sesuai dengan 259-FZ, kembali - dengan ketentuan ini . "
Kami perlu menunjukkan kepada penumpang persyaratan pengembalian dana tiket (dapat dikembalikan, tidak dapat dikembalikan, pengembalian dana 100% atau tidak, jika memungkinkan untuk pengembalian dana), gunakan parameter ini untuk mencari, membandingkan, dan, pada kenyataannya, mengotomatiskan pengembalian dana.
Nah, saya perlu memahami cara mengubah beberapa ribu teks dalam bahasa Rusia menjadi parameter tiket, di mana menyimpannya, dan cara mengelola semuanya.
Seperti apa tanggapan sumber data itu?
Berikut beberapa contohnya:
Hal pertama yang terlintas dalam pikiran adalah penguraian NLP. Untuk mengajari mesin jaringan neural NLP untuk mengurai semua ini, Anda memerlukan seperangkat aturan yang akan membentuk korpus untuk pelatihan. Untuk mendapatkan sekumpulan aturan, Anda perlu mengurai semuanya secara manual dan menguranginya menjadi kumpulan aturan tertentu dalam satu format.
Solusinya ternyata sesederhana batang kayu. Hampir semua aturan pengembalian tidak berubah selama bertahun-tahun, dan hanya beberapa baris baru yang datang dalam sebulan. Kami memiliki departemen konten yang mengumpulkan data dari berbagai sumber - misalnya, memanggil stasiun bus, mengumpulkan data perhentian, dan sebagainya. Beberapa di antaranya otomatis, beberapa tidak. Apa yang sedang otomatis dicakup oleh skrip dan tes dan masuk ke prod. Apa yang dilakukan secara manual dapat disederhanakan dengan fakta bahwa data yang sudah disiapkan akan masuk ke konten, yaitu kita akan memanggil operator manusia melalui beberapa API yang berisi formulir permintaan tipikal.
Mengurai semuanya secara manual sekali dan mempertahankan perubahan secara manual ternyata lebih murah daripada mengacaukan dan mempertahankan otomatisasi, lalu memantau kebenarannya. Hasilnya, kami menggunakan jaringan saraf kompleks - langsung ke otak operator. Dan mereka menunjukkan kinerja yang sangat tinggi.
Kemudian kami menambahkan aturan hashing sesuai dengan MD5 setelah mengosongkan ruang non-fungsional dan mengonversinya ke satu kasus - untuk memahami bahwa itu telah berubah. Jika telah berubah, otomatisasi menetapkan tugas untuk departemen konten, dan departemen konten memasukkan aturan baru ke dalam sistem kami.
Sekali lagi, benar menggunakan keputusan kelas BRMS untuk menyimpan banyak aturan. Tetapi semuanya ternyata lebih sederhana bagi kami, seluruh rangkaian aturan direduksi menjadi matriks seperti itu:
Dalam iterasi ini, kami memutuskan untuk memberi skor pada pengubah. Pertama, tidak jelas apa itu. Kedua, mereka tampaknya digunakan di beberapa tempat. Setidaknya sampai saat ini belum ada kebutuhan khusus akan mereka.
Itu berubah menjadi teks seperti format terpadu:
Oleh karena itu, kami menyimpannya langsung di sistem kami yang mengelola parameter tiket. Artinya, pada kenyataannya, kami hanya menambahkan ke database di setiap tiket tautan ke aturan untuk pengembaliannya dari perusahaan ini.
Beginilah awalnya terlihat:
GDS adalah sumber, lalu ada "keruntuhan" penerbangan (penerbangan yang sama dapat datang dari sumber yang berbeda dengan beberapa perubahan, ada lebih banyak tentang neraka ini di sini , misalnya).
Beginilah cara kerja pencocok aturan. Dari setiap penerbangan, aturan pengembalian diperoleh, sesuai dengan hashnya, aturan terkait kami dicari (diuraikan ke dalam bentuk yang kami butuhkan), dan jika semuanya berhasil, itu diterapkan:
Seringkali GDS tidak mengirim aturan pengembalian untuk suatu aturan tertentu penerbangan. Dalam kasus ini, kita dapat memiliki aturan pengembalian "manual" kita sendiri. Misalnya, kita dapat menerapkan standar yang ditentukan dalam undang-undang federal. Ngomong-ngomong, yang menarik, secara teori, ini harus menjadi kondisi minimum untuk semua orang, tetapi dalam praktiknya sering kali diperbaiki atau diperparah oleh operator.
Operator mungkin memiliki aturan lokal, seperti yang saya berikan contoh - "untuk semua penerbangan begini, tapi pada penerbangan Moskow - St. Petersburg seperti ini". Khusus untuk ini, kami telah membuat parameter "prioritas" untuk aturan "manual". Akibatnya, aturan pengembalian "manual" tersebut terdiri dari tiga bagian: parameter yang kami pahami bahwa aturan ini sesuai (kota keberangkatan / kedatangan, pengangkut, GDS), prioritas dan hasil (pada kenyataannya, interval dengan retensi persentase). Ketika GDS mengeluarkan penerbangan tanpa aturan pengembalian uang, kami pergi ke pangkalan dengan aturan "manual", pilih semua yang sesuai dan ambil yang dengan prioritas tertinggi. Selanjutnya, penerbangan tersebut didekorasi dengan aturan yang diterima ini.
Tentu saja, kami mungkin tidak mencakup sesuatu dengan aturan "manual" seperti itu. Untuk ini, kami membuat laporan, yang memuat arahan yang tidak tercakup dalam aturan. Ini dibongkar secara manual oleh staf departemen konten.
Seperti ini. Seperti yang saya katakan, semuanya cukup sederhana, tetapi masih banyak situasi seperti itu di pasaran, karena pasar bus baru saja membuka penjualan elektronik, dan ada banyak sekali solusi yang ditulis sendiri, atau seringkali tidak ada otomatisasi di semua.
Nah, sekarang kami telah membuat basis terpadu aturan pengembalian uang tiket untuk setiap rute bus resmi di Rusia yang kami ketahui.