algorithm - 从 n 元组中生成所有可能的序列

标签 algorithm combinatorics n-gram

我知道如何生成 n-gram 句子。 例如:一元语法和二元语法(使用数字序列)

1 2 3 4 5 (original senctence)
=>
1,2,3,4,5 (unigram)
12,23,34,45 (bigram)

如何组合一元语法和二元语法(或更大的 n 元语法)以使所有可能的句子具有相同的原始长度。

1,2,3,4,5 (unigram)
12,23,34,45 (bigram)
=> 
1 2 3 4 5
1 2 3 45
1 2 34 5
1 23 4 5
1 23 45
12 3 4 5
12 3 45
12 34 5

我想找到解决这个问题的算法。 谢谢!

最佳答案

这里是提示:

  • 假设您有 5 个数字 [1 2 3 4 5]
  • 有 4 个位置可以插入空格 [1-2, 2-3, 3-4, 4-5]
  • 4位二进制数表示组合(0 - 无空格,1 - 空格)
  • 例如:代码 0110 匹配 [1 (0) 2 (1) 3 (1) 4 (0) 5] == [12 3 45]
  • 迭代所有 n-1 个二进制代码。

关于algorithm - 从 n 元组中生成所有可能的序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22765968/

相关文章:

algorithm - 通过快速排序算法排序后重复项的顺序发生变化

sql-server - 算法找到满足给定要求的最少数量的项目

python - 在 Pandas 数据框中形成单词的二元组

javascript - 可以在Javascript中使用reduce编写bigram(或ngram)函数吗?

arrays - 按时间戳对对象排序,然后对依赖项进行分组

c# - 比反复试验更有效地优化多个变量的算法

language-agnostic - 如何计算具有重复的集合中所有可能的唯一子集的总数?

python - 在 Python 中列出给定 n 个元素的所有定向循环的最有效方法

numbers - 找出总和可被 k 整除的对的数​​量?

python - 如何为句子列表创建窗口/ block ?