J'essaie de créer un ensemble de données sur plusieurs fichiers journaux de l'un de nos produits.
Les différents fichiers journaux ont leur propre mise en page et leur propre contenu; Je les ai regroupés avec succès, il ne reste qu'une étape ...
En effet, les "messages" du journal sont les meilleures informations. Je n'ai pas la liste complète de tous ces messages, et c'est une mauvaise idée de coder en dur sur la base de ceux-ci car cette liste peut changer tous les jours.
Ce que je voudrais faire, c'est séparer le texte d'identification du texte de la valeur (par exemple: "Fichier chargé XXX" devient (identification: "Fichier chargé", valeur: "XXX")). Malheureusement, cet exemple est simple et dans le monde réel, il existe différentes dispositions et parfois plusieurs valeurs.
Je pensais à utiliser des noyaux de chaîne, mais il est destiné au clustering ... et le cluseting n'est pas applicable ici (je ne connais pas le nombre de types de messages différents et même si ce serait trop).
Avez-vous une idée?
Merci de votre aide.
PS: Pour ceux qui programment, cela peut être plus facile à comprendre. Disons que le code contient en tant que logs printf ("blabla% s", "xxx") -> je voudrais que "blabla" et "xxx" soient séparés
la source
Réponses:
Que diriez-vous de considérer chaque chaîne comme une trace de processus et d'appliquer un algorithme alpha? Cela vous donnerait un graphique et des nœuds avec un grand nombre de bords extérieurs pointeraient très probablement vers des valeurs.
Vous pouvez marquer ces nœuds et pour chaque nouvelle chaîne analyser / parcourir le graphique jusqu'à ce que vous atteigniez ces zones.
la source
Cela ne semble pas être un problème de Data Science. Cependant, il existe de très bons outils pour faire exactement cela, checkout: logstash, flume et fluentd. En fait, si vous voulez être en mesure de filtrer Kibana de manière rapide et "intelligente" à partir des gars d'ElastichSearch ( http://www.elasticsearch.org/overview/kibana ). Ces outils sont suffisants pour résoudre votre problème de manière très efficace.
la source
Si vous essayez simplement de séparer les informations textuelles et numériques, il existe une solution basée sur des expressions régulières ou même simplement sur le fractionnement de chaînes.
Vous pouvez même faire quelque chose comme trouver le premier caractère numérique et diviser le texte en deux juste avant.
Avec les expressions régulières, vous pouvez faire correspondre tous les caractères numériques qui se suivent. Le modèle serait
([0-9]+)
avec un drapeau mondial. Cela correspondrait à tous les groupes de nombres et vous pourrez ensuite faire ce que vous voulez avec eux.Regex Tester est bon pour jouer avec ce genre de choses.
la source