给定文本和该文本中的单词列表,如何映射'单词返回文本并找到每个单词最可能的起始位置?

时间:2015-07-03 00:28:01

标签: algorithm text matching

假设我有以下文字:

  

"这是一个段落。在这一段中有词。一些单词,如单词和段落,可以重复。我还有一个我需要映射的单词列表。"

以下单词列表(可以是任何顺序,上限不重要):

  

这个,段落,段落,那里,单词,一些,单词,喜欢,单词,和段落,可以,是,重复,还有,有,列表,单词,需要,地图

我希望找到从列表中的单词到文本中可能位置的映射,从而最大化列表中用完的单词。您可以将其视为尝试从基础单词重新组合一段文本,或尝试放回一个拼图(并非所有部分都存在)。

在上面的示例中,匹配看起来像:

这 - 大于0

中─→10

IN-> 21

中─> 28

那里 - > 38

words-> 48(或其他'单词的位置')

等等列表中的其他成员。

是否有匹配算法可以帮助完成此任务?是否可以扩展为仅使用二进制数据片段列表查找二进制数据?

1 个答案:

答案 0 :(得分:0)

这是一个称为Longest Common Subsequence的问题。将文本也视为一系列单词。您必须找到包含在最大长度的两个原始序列中的序列。

这个问题有O(n * m)个解决方案。动态编程解决方案最容易理解。