作为数据处理管道的一部分,我构建了一个原始字符串解析器。每个字符串都由子字符串组成,我想将字符串解析为。有5类子串,它们包括名称, 地址, 唯一标识符,等。对于要拆分的每个字符串,我也(谢天谢地)可以假设知道其中包含了多少个子字符串(N)。所以
"2452341 John Doe 5050 Fake street New York, NY, 43092", 3 substrings
理想情况下会产生:
["2452341", "John Doe", "5050 Fake street New York, NY, 43092"]
此外,子字符串可以在主字符串中以任何顺序出现。每个子字符串之间总是有一个空格。子字符串也包含空格,因此诀窍是确定空格何时作为分隔符而不仅仅是子字符串的一个组件。
我有大量(100k +)的示例'子串'我可以训练一个概率解析器,但我不确定如何去做这个。不过,我有一些粗略的想法:
创意1 - 马尔可夫模型
我是否应该使用马尔可夫模型来评估每个字符是否是子字符串结束的可能性,然后选择N个最可能的点?
如果我假设一个两状态马尔可夫链,然后在给定字符串中对每个可能的子串分裂(在每个"")进行每个排列,并最大化跨越这些排列的状态切换的概率,应该有我的答案。我无法弄清楚的是我如何使用我的训练数据来获得在给定点切换的概率。
理念2 - 与培训数据的相似性
或者,似乎有一种方法可以最大化所有可能的相似性,以生成训练数据的子串,并选择最相似的排列。有没有一种方法可以计算单个字符串与一组字符串的相似性?
非常感谢。