2010-03-22 58 views
0

我有一個任意大的文本字符串,需要被分割成10k塊(可能可調整的值)併發送到另一個系統進行處理。帶自然語言環境的字符串組塊算法

  • 大塊不能長於10K(或其他任意值)
  • 文本應與自然語言方面考慮被打破
    • 分裂標點符號當空間可能
    • 分裂,如果沒有穿刺技術存在
    • 打破了字作爲最後的手段

我試圖不重新發明這個輪子,有什麼建議之前,我從頭開始這個?

使用C#。

回答

2

這可能無法處理所有情況下,因爲你需要,但它應該讓你的方式。

public IList<string> ChunkifyText(string bigString, int maxSize, char[] punctuation) 
    { 
     List<string> results = new List<string>(); 

     string chunk; 
     int startIndex = 0; 

     while (startIndex < bigString.Length) 
     { 
      if (startIndex + maxSize + 1 > bigString.Length) 
       chunk = bigString.Substring(startIndex); 
      else 
       chunk = bigString.Substring(startIndex, maxSize); 

      int endIndex = chunk.LastIndexOfAny(punctuation); 

      if (endIndex < 0) 
       endIndex = chunk.LastIndexOf(" "); 

      if (endIndex < 0) 
       endIndex = Math.Min(maxSize - 1, chunk.Length - 1); 

      results.Add(chunk.Substring(0, endIndex + 1)); 

      startIndex += endIndex + 1; 
     } 

     return results; 
    } 
+0

+1我最終實現了類似的東西。感謝代碼示例! – 2010-03-22 23:51:59

1

我相信這可能會比你期待的更難(大多數自然語言的東西),但檢查出Sharp Natural Language Parser

我目前使用SharpNLP,它工作得很好,但總是有'陷阱'。

如果這不是你正在尋找的東西,請告訴我。

馬克

+0

謝謝馬克,我會檢查那個圖書館。 – 2010-03-22 23:52:19

相關問題