0

对不起这个困难的问题。

我有一大组序列要通过/或添加数字或替换它们(从不删除任何东西)来纠正,如下所示:

  • 1,2,,3 => 1,7,4,3
  • 4,,5,6 => 4,4,5,6
  • 4,7,8,9 => 4,7,8,9,1
  • 4,7 => 4,8
  • 4,7,1 => 4,7,2

它从填充的原始序列和样本校正开始。

我希望能够通过计算要纠正的不同 n-gram 的频率来自动纠正序列,第一个样本将变为

  • 1=>1
  • 2=>7
  • 3=>3
  • 1,2=>1,7
  • 2,3=>7,4,3
  • 1,2,3=>1,7,4,3

我会收集这些 n-gram 校正的频率,并且我正在寻找一种方法来计算校正样本数据中可能存在或不存在的新输入的最佳方法。

这似乎类似于SMT

4

1 回答 1

1

根据替换的长度和出现的次数为已知替换分配一个分数。天真地,我建议使这个分数与长度的平方成正比(在我能想到的大多数情况下,更长的匹配更罕见)和出现次数的平方根,这样一个 4 项序列就有尽可能多的权重作为一个出现 16 次的 2 项序列。这需要根据您的实际情况进行调整。

给定一个长度为 M 的序列,有 N 个长度为 1 到 M 的子字符串,其中 N=M*(M+1)/2,因此如果字符串相当短,那么您可以遍历每个子字符串并查找可能的替换。我认为,用这些子字符串组成整个字符串的方法数量也与 M^2 成正比。

对于子字符串对原始字符串的每个可能组合,将每个子字符串的最佳(最高分数)替换的总分数相加。

总分最高的组合将是(可能,考虑到我对过程的假设)“最好的”替换后结果。

于 2009-06-19T21:25:34.660 回答