Algorithm 动态规划分词

Algorithm 动态规划分词,algorithm,theory,text-segmentation,Algorithm,Theory,Text Segmentation,假设我有一个像“meetateight”这样的字符串,我需要使用动态规划将它分割成有意义的单词,如“meet”(在“8”处) 为了判断块/段“x=x1x2x3”有多“好”,我得到了一个黑框,在输入x时,它返回一个实数质量(x):质量(x)的大正值表示x接近英语单词,大负值表示x远离英语单词 我需要帮助设计同样的算法 我试着考虑一种算法,在这种算法中,每当字母质量下降时,我都会根据字母的质量和分段来迭代添加字母。 但在上面的例子中,这是失败的,因为它切断了我而不是满足 我需要一个更好的算法的建议

假设我有一个像“meetateight”这样的字符串,我需要使用动态规划将它分割成有意义的单词,如“meet”(在“8”处)

为了判断块/段“x=x1x2x3”有多“好”,我得到了一个黑框,在输入x时,它返回一个实数质量(x):质量(x)的大正值表示x接近英语单词,大负值表示x远离英语单词

我需要帮助设计同样的算法

我试着考虑一种算法,在这种算法中,每当字母质量下降时,我都会根据字母的质量和分段来迭代添加字母。 但在上面的例子中,这是失败的,因为它切断了我而不是满足

我需要一个更好的算法的建议


谢谢

如何使用英语词典构建一个应用程序并向下导航呢?用所有可能的路径扫描字符串到leaf(当您有多个选择时回溯)。

我在;这里太长了,不能包括在内。基本思想是切掉构成单词的前缀,然后递归地处理其余的输入,在无法拆分整个字符串时回溯。

您可以使用动态编程,跟踪输入的每个前缀的分数,每次添加一个字母。每次添加字母时,请查看是否可以在已使用的前缀上添加任何后缀(选择得分最高的前缀)。例如:

m = 0
me = 1
mee = 0
meet = 1
meeta = 1 (meet + a)
meetat = 1 (meet + at)
meetate = 1 (meet + ate)
meetatei = 1 (meetate + i)
meetateig = 0
meetateigh = 0
meetateight = 1 (meetat + eight)

要处理介于0和1之间的值,可以将它们相乘。同时保存您使用过的单词,以便在结尾拆分整个字符串。

以前曾询问过此问题的可能重复项。