3

以下は、グループ化する必要のあるサンプルデータセットです。よく見ると、ほとんど同じテキスト行ですが、個人IDまたはIDのいずれかが非常にわずかに異なります。

Unexpected error:java.lang.RuntimeException:Data not found for person 1X99999123 . Clear set not defined . Dump
Unexpected error:java.lang.RuntimeException:Data not found for person 2X99999123 . Clear set not defined . Dump
Unexpected error:java.lang.RuntimeException:Data not found for person 31X9393912 . Clear set not defined . Dump
Unexpected error:java.lang.RuntimeException:Data not found for person 36X9393912 . Clear set not defined . Dump
Exception in thread "main" javax.crypto.BadPaddingException: ID 1 Given final block not properly padded
Exception in thread "main" javax.crypto.BadPaddingException: ID 2 Given final block not properly padded
Unexpected error:java.lang.RuntimeException:Data not found for person 5 . Clear set not defined . Dump
Unexpected error:java.lang.RuntimeException:Data not found for person 6 . Clear set not defined . Dump
Exception in thread "main" java.lang.NullPointerException at TripleDESTest.encrypt(TripleDESTest.java:18)

最終結果が次のようになるようにグループ化したい

Unexpected error:java.lang.RuntimeException:Data not found - 6
Exception in thread "main" javax.crypto.BadPaddingException - 2
Exception in thread "main" java.lang.NullPointerException at - 1

そのような場合を処理するために利用可能な既存のAPIまたはアルゴリズムはありますか?

前もって感謝します。乾杯シャクティ

4

3 に答える 3

2

質問は機械学習としてタグ付けされているので、分類アプローチを提案します。

各文字列をトークン化し、トレーニングセットのすべてのトークンを可能なブール機能として使用できます。インスタンスにこのトークンが含まれている場合、インスタンスにはその機能があります。

これで、このデータを使用して、(たとえば)C4.5( データから決定木)を構築できます。ツリーが構築されたらトリミングを使用し、リーフあたりの例の最小数が1より大きいことを確認してください。

ツリーが構築されると、「クラスタリング」はツリー自体によって実行されます。各リーフには、互いに類似していると見なされる例が含まれています。

これで、分類ツリーをトラバースし、各リーフに格納されているサンプルを関連するクラスターに抽出することで、このデータを抽出できます。

ノート:

  • このアルゴリズムは、1つのメッセージが一意である場合(この例ではNPE)はうまく処理できないため、指定したサンプルデータでは失敗します。おそらく、と同じリーフにありBadPaddingExceptionます。
  • 車輪の再発明をする必要はありません-wekaを使用できます-Javaのオープンソース機械学習ライブラリ、またはアルゴリズム用の他の既存のライブラリ
  • トークンをバイナリ機能として使用する代わりに、数値機能にすることもできます。文字列のどこにトークンがあるかを使用できます。これは1番目または10番目のトークンですか。
于 2012-05-03T14:21:03.253 に答える
0

テキストを解析し、削除したいパターンを除外するメソッドを適切に作成する必要があると思います...しかし、私はあなたが何をしたいのか完全にはわかりません...。

あなたがやりたいことはおそらくStringTokenizerクラスを通して達成できると思います...

于 2012-05-03T14:13:55.550 に答える
0

メッセージの形式がわかっている場合、最も簡単な方法は正規表現を使用して一致をカウントすることです。

正規表現はJavaで完全にサポートされており、その使用法はクラスタリングアルゴリズムよりも確かに高速です。

于 2012-05-04T08:59:37.277 に答える