从n-gram集中创建所有可能的序列

时间:2014-03-31 15:39:33

标签: algorithm combinatorics n-gram

我知道如何生成n-gram的句子。 例如:unigram和bigram(使用数字序列)

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

如何组合unigram和bigram(或更大的n-gram)以使所有可能的句子具有相同的原始长度。

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

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

1 个答案:

答案 0 :(得分:3)

以下是提示:

  • 假设你有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个二进制代码。