用于在字符串中查找重复出现的模式的算法

时间:2014-05-19 10:27:08

标签: string algorithm machine-learning pattern-matching

我正在寻找一种能够在字符串中找到重复出现的模式的算法。

我有一串包含交易的数据。 每个事务都包含属性(名称/值)。 这些事务的格式未知,它们可能是JSON,XML或任何其他字符串格式。 但是,无论它们的格式如何,其结构都与它们的结构相同,尽管它们的内容可能会发生变化。 我想使用一种算法,它可以根据重复模式(未知)识别字符串中的事务。

例如,以下字符串包含2个事务:

<m><a>Hello</a><b>World</b></m><m><a>Good</a><b>Bye</b></m>

以下字符串还包含2个事务:

##start##First Transaction##end####start##Second Transaction##end

我应该使用什么算法?

1 个答案:

答案 0 :(得分:1)

我没有解决方案,但有些人想到了这个问题:

您可以尝试将输入拆分为块,并在这些块上使用一种diff算法。有了足够的样本,您就可以识别出分隔符。

我试图区分以下字符串:

  • <m><a>Hello</a><b>World</
  • b></m><m><a>Good</a><b>Bye</b></m>

它给了我以下分隔符:

  • <m><a>
  • </a><b>

愚蠢地说,你应该用更多的样本和不同的块大小来重复操作。这会给你可能的分隔符,而不是100%肯定的答案。

http://en.wikipedia.org/wiki/Longest_common_subsequence_problem

另外,您可以查看本文使用n-gram频率查找分隔符:

http://people.cs.vt.edu/danfeng/papers/ICNP-12.pdf