2014-03-31 20 views
1

我知道如何生成一個句子到n-gram。 例如:一元模型和二元(使用數字序列)從n-gram設置所有可能的序列

1 2 3 4 5 (original senctence) 
=> 
1,2,3,4,5 (unigram) 
12,23,34,45 (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 

我想找到算法來解決這個問題。 謝謝!

+0

遞歸 - 在每一步輸出1或2個單詞(例如:1或12)。完成後,回溯/記住舊狀態。而已。 –

回答

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二進制代碼。
+0

0000如何將分區分爲unigrams和bigrams? – user2566092

+0

謝謝@mishaoff。這是一個好方法。 – kju

+0

@ user2566092 0000表示[12345]。這個解決方案按照OP的要求遍歷所有可能的ngram:「如何結合unigram和bigram(或更大的n-gram)」。如果您只需要使用bigram,則篩選出的代碼在一行中包含兩個或更多個零 – mishadoff