Saya mencoba membuat kumpulan data pada beberapa file log dari salah satu produk kami.
File log yang berbeda memiliki tata letak dan konten sendiri; Saya berhasil mengelompokkan mereka bersama, hanya satu langkah tersisa ...
Memang, log "pesan" adalah informasi terbaik. Saya tidak memiliki daftar lengkap semua pesan itu, dan itu adalah ide yang buruk untuk kode keras berdasarkan itu karena daftar itu dapat berubah setiap hari.
Yang ingin saya lakukan adalah memisahkan teks identifikasi dari teks nilai (misalnya: "File Loaded XXX" menjadi (identifikasi: "File Loaded", nilai: "XXX")). Sayangnya, contoh ini sederhana, dan di dunia nyata ada tata letak yang berbeda dan terkadang beberapa nilai.
Saya sedang berpikir tentang menggunakan kernel string, tetapi ini dimaksudkan untuk pengelompokan ... dan cluseting tidak berlaku di sini (saya tidak tahu jumlah berbagai jenis pesan dan walaupun, itu akan terlalu banyak).
Apakah kamu punya ide?
Terima kasih atas bantuan Anda.
PS: Bagi yang memprogram, ini bisa lebih mudah dimengerti. Katakanlah kode tersebut berisi log printf ("blabla% s", "xxx") -> Saya ingin memisahkan "blabla" dan "xxx"
sumber
Jawaban:
Bagaimana dengan mempertimbangkan setiap string sebagai jejak proses dan penerapan alfa-algoritma? Itu akan memberi Anda grafik dan node dengan angka besar out-edge kemungkinan besar akan menunjuk ke nilai.
Anda dapat menandai simpul-simpul ini dan untuk setiap string baru mengurai / melintasi grafik sampai Anda mencapai area tersebut.
sumber
Ini sepertinya bukan masalah Ilmu Data. Namun ada alat yang sangat bagus untuk melakukan hal itu, checkout: logstash, flume dan fluentd. Sebenarnya jika Anda ingin dapat memfilter dengan cepat dan "pintar" cara checkout Kibana dari orang-orang ElastichSearch ( http://www.elasticsearch.org/overview/kibana ). Alat-alat itu cukup untuk menyelesaikan masalah Anda dengan cara yang sangat efisien.
sumber
Jika Anda hanya mencoba untuk memisahkan informasi tekstual dan numerik maka ada solusi berdasarkan pada ekspresi reguler atau bahkan hanya pemisahan string.
Anda bahkan dapat melakukan sesuatu seperti menemukan karakter numerik pertama dan membagi teks menjadi dua tepat sebelum itu.
Dengan ekspresi reguler, Anda dapat mencocokkan semua karakter numerik yang mengikuti satu sama lain. Polanya akan
([0-9]+)
dengan bendera global. Itu akan cocok dengan semua kelompok angka dan Anda dapat melakukan apa pun dengan Anda setelahnya.Regex Tester baik untuk bermain-main dengan hal-hal itu.
sumber