Kami di perusahaan membuat layanan yang mengekstraksi fakta hukum dari korespondensi klien dan pelanggan. Layanan ini tumbuh dari satu ide sederhana - pelanggan reguler saya memutuskan untuk menyederhanakan pekerjaan manajer dan membuat "generator kontrak". Tugas pertama - untuk menarik detail klien dan pelanggan ke dalam kontrak, kami memutuskan dengan mudah.
Gagasan kedua muncul - untuk mencari tanggal dalam korespondensi dan memasukkannya ke dalam kerangka acuan, dokumen secara otomatis.
Namun, orang jarang menulis tanggal dalam obrolan dan pesan instan sehingga algoritme dapat dengan mudah mengenali mereka.
"Kami mulai minggu depan", "ini Jumat" - jika manajer relatif mudah untuk belajar bagaimana menulis tanggal dalam format yang benar, maka Anda tidak dapat membuat tuntutan seperti itu pada klien.
Saya menulis dengan python dan python segera datang ke modul NLP-library spaCy * - NER (nama entitas pengenalan) penyelamatan yang dengan mudah mengambil tanggal dari korespondensi dengan klien berbahasa Inggris. Akibatnya, kami mendapat banyak tanggal relatif: "dalam dua minggu", "Jumat", "Jumat ini", "siang ini", "siang hari Rabu".
Tetapi bagaimana menerjemahkan tanggal-tanggal ini menjadi objek yang dirasakan layanan (objek datetime)?
Sebuah perjalanan panjang dimulai di bidang "penguraian tanggal yang bisa dibaca manusia". Menyurvei lingkungan sekitar, saya hanya menemukan tiga pustaka python yang bekerja dengan segera dan tanpa siksaan: ini adalah timefhuman **, dateparser ***, dan datefinder ***.
Gambar menunjukkan perbandingan tiga perpustakaan:

Secara umum, jelas bahwa waktu manusia, tidak manja untuk perhatian, ternyata lebih nyaman, walaupun dengan sejumlah besar positif palsu, daripada dateparser yang kebanyakan orang gunakan.
Logika yang menarik dari pengembang parsing "Friday" memberi Jumat depan dalam kasus timefhuman dan Jumat terakhir di dateparser.
Secara umum, waktu manusia ternyata lebih hidup dan dipilih untuk pengembangan lebih lanjut dan pengujian prototipe.
*
spacy.io**
github.com/alvinwan/timefhuman***
github.com/scrapinghub/dateparser****
github.com/akoumjian/datefinder