Ich versuche, einen Datensatz auf mehreren Protokolldateien eines unserer Produkte zu erstellen.
Die verschiedenen Protokolldateien haben ein eigenes Layout und einen eigenen Inhalt. Ich habe sie erfolgreich gruppiert, nur noch ein Schritt ...
In der Tat sind die Protokoll "Nachrichten" die besten Informationen. Ich habe nicht die umfassende Liste all dieser Nachrichten, und es ist eine schlechte Idee, Code basierend auf diesen zu erstellen, da sich diese Liste jeden Tag ändern kann.
Was ich tun möchte, ist, den Identifikationstext vom Wertetext zu trennen (zum Beispiel: "Geladene Datei XXX" wird (Identifikation: "Geladene Datei", Wert: "XXX")). Leider ist dieses Beispiel einfach und in der realen Welt gibt es unterschiedliche Layouts und manchmal mehrere Werte.
Ich habe über die Verwendung von String-Kerneln nachgedacht, aber es ist für das Clustering gedacht ... und Cluseting ist hier nicht anwendbar (ich kenne die Anzahl der verschiedenen Arten von Nachrichten nicht und obwohl es zu viel wäre).
Hast du irgendeine Idee?
Danke für Ihre Hilfe.
PS: Für diejenigen, die programmieren, kann dies leichter zu verstehen sein. Nehmen wir an, der Code enthält als Protokoll printf ("blabla% s", "xxx") -> Ich möchte "blabla" und "xxx" getrennt haben
quelle
Antworten:
Wie wäre es, wenn Sie jede Zeichenfolge als Prozessablaufverfolgung betrachten und den Alpha-Algorithmus anwenden? Das würde Ihnen ein Diagramm geben und Knoten mit einer großen Anzahl von Außenkanten zeigen höchstwahrscheinlich auf Werte.
Sie können diese Knoten markieren und für jede neue Zeichenfolge das Diagramm analysieren / durchlaufen, bis Sie diese Bereiche erreichen.
quelle
Dies scheint kein Data Science-Problem zu sein. Es gibt jedoch sehr nette Tools, um genau das zu tun, Checkout: Logstash, Flume und Fluentd. Wenn Sie in der Lage sein möchten, Kibana schnell und "intelligent" zu filtern, sollten Sie Kibana von den Jungs von ElastichSearch ( http://www.elasticsearch.org/overview/kibana ) auschecken . Diese Tools reichen aus, um Ihr Problem auf sehr effiziente Weise zu lösen.
quelle
Wenn Sie lediglich versuchen, Text- und Zahleninformationen zu trennen, gibt es eine Lösung, die auf regulären Ausdrücken oder sogar nur auf der Aufteilung von Zeichenfolgen basiert.
Sie könnten sogar so etwas wie das erste numerische Zeichen finden und den Text direkt davor in zwei Hälften teilen.
Mit regulären Ausdrücken können Sie alle aufeinander folgenden numerischen Zeichen abgleichen. Das Muster wäre
([0-9]+)
mit einer globalen Flagge. Es würde mit allen Zahlengruppen übereinstimmen und Sie können danach alles damit machen, was Sie wollen.Regex Tester ist gut, um mit diesem Zeug herumzuspielen.
quelle