假设我有一个大字符串和一个子字符串数组,当它们与大字符串相等时(差别很小)。如何找到大串的最佳拟合子序列?
例如(注意字符串之间的细微差别):
large_str = "hello, this is a long string, that may be made up of multiple
substrings that approximately match the original string"
sub_strs = ["hello, ths is a lng strin", ", that ay be mad up of multiple",
"subsrings tat aproimately ", "match the orginal strng"]
我怎样才能最好对准串生产从原来large_str
一组新的子串?例如:
["hello, this is a long string", ", that may be made up of multiple",
"substrings that approximately ", "match the original string"]
附加信息
的应用案例,这是要找到从PDF文档中提取文本的现有分页符原文的分页符。从PDF中提取的文本是OCR,与原始文本相比具有较小的错误,但原始文本没有分页符。我们的目标是准确地翻页原始文本,避免PDF文本的OCR错误。
这可能是一个复杂的任务。至少我没有意识到任何比较字符串部分的简单方法。您可以使用百分比来比较字符串的各个部分,以便通过将每个字符与large_str的一部分进行比较来查看准确性,并查看连续有多少个字符匹配 –
复杂以分割大字符串以比较各个子字符串。但是如果你设法做到这一点,你可以使用Levenshtein距离来比较它们。请参阅https://en.wikipedia.org/wiki/Levenshtein_distance – Xvolks
我能想到的一种方法是基于页面分割算法(也称为自动换行问题)。通常,对于页面分割,我们定义了一个函数来计算分割文本的成本。但是这个算法中的函数是基于文本中出现的空白的数量。我认为我们可以采用类似的方法,但不是让我们的分割函数在空白的基础上定义,我们可以根据字符串与空格的相似性来设计它。这可以从一开始就有效地构建解决方案。 – CodeHunter