Analiza pliku dziennika: wyodrębnianie części informacyjnej z części wartościowej

10

Próbuję zbudować zestaw danych na kilku plikach dziennika jednego z naszych produktów.

Różne pliki dziennika mają własny układ i własną zawartość; Z powodzeniem pogrupowałem je razem, pozostał tylko jeden krok ...

Rzeczywiście, „wiadomości” dziennika są najlepszą informacją. Nie mam wyczerpującej listy wszystkich tych wiadomości, a kodowanie na podstawie tych kodów jest złym pomysłem, ponieważ ta lista może się zmieniać każdego dnia.

Chciałbym oddzielić tekst identyfikujący od tekstu wartości (na przykład: „Załadowany plik XXX” staje się (identyfikacja: „Załadowany plik”, wartość: „XXX”)). Niestety, ten przykład jest prosty, aw prawdziwym świecie istnieją różne układy, a czasem wiele wartości.

Myślałem o użyciu jądra łańcuchów, ale jest on przeznaczony do klastrowania ... i cluseting nie ma tu zastosowania (nie znam liczby różnych typów komunikatów i chociaż to by było za dużo).

Masz jakiś pomysł?

Dzięki za pomoc.

PS: Dla programistów może to być łatwiejsze do zrozumienia. Powiedzmy, że kod zawiera jako logi printf („blabla% s”, „xxx”) -> Chciałbym mieć oddzielne „blabla” i „xxx”

Michael Hooreman
źródło
Czy możesz podać reprezentatywny wybór przykładów, które pokazują różnorodność elementów, które algorytm będzie musiał przeanalizować?
Emre
2
Można to zrobić na sto sposobów. Zastanów się, w jakich narzędziach lub języku musisz to zrobić. Czy jest w tym aspekt naukowy? wydaje się po prostu parsowaniem dziennika.
Sean Owen

Odpowiedzi:

3

A może traktować każdy ciąg jako ślad procesu i zastosować algorytm alfa? To dałoby ci wykres, a węzły z dużą liczbą krawędzi zewnętrznych najprawdopodobniej wskażą wartości.

Możesz zaznaczyć te węzły i dla każdego nowego łańcucha parsować / przemierzać wykres, aż dojdziesz do tych obszarów.

Juan Leni
źródło
Wielkie dzięki. Nie znałem algorytmów alfa. Sprawdzę w tym kierunku.
Michael Hooreman,
2

To nie wydaje się problemem Data Science. Istnieją jednak bardzo ładne narzędzia do tego, kasa: logstash, flume i płynnie. Właściwie, jeśli chcesz mieć możliwość filtrowania w szybki i „inteligentny” sposób, sprawdź Kibana od facetów z ElastichSearch ( http://www.elasticsearch.org/overview/kibana ). Te narzędzia wystarczą, aby rozwiązać problem w bardzo wydajny sposób.

Javierfdr
źródło
Myślę jednak, że ekstrakcja funkcji jest częścią analizy danych. Cóż, to tylko opinia ;-) Mówiąc poważnie, nie mówię o łatwych standardowych plikach dziennika, ale niestandardowych z bardzo konkretnego oprogramowania. To naprawdę
wyciąga
1

Jeśli próbujesz po prostu oddzielić informacje tekstowe i liczbowe, istnieje rozwiązanie oparte na wyrażeniach regularnych, a nawet po prostu dzielenie ciągów.

Możesz nawet zrobić coś takiego jak znalezienie pierwszego znaku numerycznego i przedtem podzielić tekst na pół.

Za pomocą wyrażeń regularnych można dopasować wszystkie następujące po sobie znaki numeryczne. Wzór byłby ([0-9]+)z flagą globalną. Pasowałby do wszystkich grup liczb i możesz potem robić z nimi wszystko, co chcesz.

Regex Tester jest dobry do zabawy z tymi rzeczami.

LauriK
źródło
Dzięki Laurik. Niestety nie tylko liczby i nie wiem też, jakie będą przyszłe wiadomości. Naprawdę potrzebuję AI.
Michael Hooreman,