2017-07-11 6 views
0

ハードウェア設計のシミュレーションで生成される大きなエラーメッセージがあります。これらのメッセージには、文法や言語の概念がありません。どちらもよく定義された構文はありません。メッセージには、エラーが発生した時刻、@、:、[、]、(、)のようなランダムな記号(設計者が表示していると思われる内容に応じて!)などの数式が含まれている場合があります。メッセージには不要な場所があり、必要なスペースはありません。Pythonでエラーメッセージのクラスタを作成する

このメッセージセットに類似のメッセージを含むバケットにグループ化できるアルゴリズムを適用して、どのような種類のエラーが表示されているのかを簡単に識別できるようにしたいと考えています。

私はLevenshteinの距離または余弦の類似性を使って文字列間の距離を調べることを読んだ。 k-meansクラスタリングを使用します。私はword2vecとそれに似た図書館についても読んでいます。しかし、彼らはより構造化された英語のような入力データで最もうまくいくと感じていますか?

私にはどのような方法がおすすめですか?もちろん、すべてのランダムなシンボルをスペースで置き換えたり、複数のスペースを1つにまとめるなどのように、最初にデータの前処理をたくさん行いますが、メッセージには意味のある単語はありません。

+1

間違いなくword2vecですが、Levenshtein + k-meansを試してみましたか?パッケージがあり、うまく動いているようです:https://pypi.python.org/pypi/python-Levenshtein –

答えて

1

私はdbscan algorithm from sklearnをLevenshtein距離のメトリック(python-Levenshteinパッケージで使用)で使用できました。

k-meansは、原点(ユークリッド)との距離が予想され、dbscanがクラスター化されるセット内のアイテム間の相対距離を取ることができるため、使用できませんでした。

また、クラスタを作成する前に、エラーメッセージから既知の文字列を抽出してメッセージをクリーンアップする前処理も行いました。

ありがとうございます。

関連する問題