String 查找字符串中重复出现模式的算法
我正在寻找一种算法,可以在字符串中找到重复出现的模式 我有一个包含事务的数据字符串。 每个事务都包含属性(名称/值)。 这些事务的格式未知,它们可能是JSON、XML或任何其他字符串格式。 然而,无论它们的格式是什么,它的结构都是相同的,尽管它们的内容可能会改变。 我想使用一种算法,它可以基于重复模式(未知)识别字符串中的事务 例如,以下字符串包含2个事务:String 查找字符串中重复出现模式的算法,string,algorithm,machine-learning,pattern-matching,String,Algorithm,Machine Learning,Pattern Matching,我正在寻找一种算法,可以在字符串中找到重复出现的模式 我有一个包含事务的数据字符串。 每个事务都包含属性(名称/值)。 这些事务的格式未知,它们可能是JSON、XML或任何其他字符串格式。 然而,无论它们的格式是什么,它的结构都是相同的,尽管它们的内容可能会改变。 我想使用一种算法,它可以基于重复模式(未知)识别字符串中的事务 例如,以下字符串包含2个事务: <m><a>Hello</a><b>World</b></m>&l
<m><a>Hello</a><b>World</b></m><m><a>Good</a><b>Bye</b></m>
我应该使用什么算法?我没有解决方案,但对此有一些想法: 您可以尝试将输入分割成块,并在这些块上使用一种
diff
算法。有了足够的示例,您可以识别分隔符
我尝试区分以下字符串:
此外,您还可以看看这篇文章,它使用n-grams频率来查找分隔符:
不确定我是否在跟踪,例如,您应该如何确定第二个事务实际上不包含6个事务:(开始、第一个事务、结束、开始、第二个事务、结束)?您确定不能通过旁道确定数据的格式吗?例如,数据源不可能不向您提供MIME类型吗?@amit一种用于查找字符串中重复出现的模式的算法对于需要这种算法的人来说是有意义的。如果你不知道答案-不要评论。@Doroneumann-每个人都想告诉你的是,如果你没有事先指定任何关于如何解析输入的规则,输入字符串可以映射到无限多个不同的输出。最好的办法是将可能的输入格式集从“无限”减少到“多种”,并创建代码来专门处理这几种格式。如果您坚持认为您需要能够处理任何可能的输入格式,那么您可能需要研究机器学习算法,并训练算法将不同格式映射到相同的事务中。amit是对的,您的问题没有唯一的解决方案。例如,在第一个示例中,我认为事务是(m,a>HelloWorldGoodByte)##start##First Transaction##end####start##Second Transaction##end