3

以下是我需要组合在一起的示例数据集,如果您仔细观察,它们大多是相似的文本行,但具有 person 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。

一旦树建立起来,“聚类”就由树本身完成了!每个叶子都包含被认为彼此相似的示例。

您现在可以通过遍历分类树并将存储在每个叶子中的样本提取到其相关集群中来提取此数据。

笔记:

  • 对于您提供的示例数据,此算法将失败,因为如果一个 msg 是唯一的(您的示例中的 NPE)它不能很好地处理 - 它可能与BadPaddingException.
  • 无需重新发明轮子 - 您可以使用weka - java 中的开源机器学习库,或其他现有的算法库
  • 除了将标记用作二进制特征,它们还可以是数字特征,您可以使用字符串中的标记在哪里,是第 1 个标记还是第 10 个标记?
于 2012-05-03T14:21:03.253 回答
0

如果您知道消息的格式,最简单的方法是使用正则表达式并计算匹配项。

Java 完全支持正则表达式,并且它们的使用肯定比聚类算法更快。

于 2012-05-04T08:59:37.277 回答
0

我认为你应该适当地创建一个解析文本并过滤掉你想要删除的模式的方法......但是我不完全确定你想要做什么......

我想你想做的事情大概可以通过StringTokenizer类来实现……

于 2012-05-03T14:13:55.550 回答