我有一個任意大的文本字符串,需要被分割成10k塊(可能可調整的值)併發送到另一個系統進行處理。帶自然語言環境的字符串組塊算法
- 大塊不能長於10K(或其他任意值)
- 文本應與自然語言方面考慮被打破
- 分裂標點符號當空間可能
- 分裂,如果沒有穿刺技術存在
- 打破了字作爲最後的手段
我試圖不重新發明這個輪子,有什麼建議之前,我從頭開始這個?
使用C#。
我有一個任意大的文本字符串,需要被分割成10k塊(可能可調整的值)併發送到另一個系統進行處理。帶自然語言環境的字符串組塊算法
我試圖不重新發明這個輪子,有什麼建議之前,我從頭開始這個?
使用C#。
這可能無法處理所有情況下,因爲你需要,但它應該讓你的方式。
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;
}
我相信這可能會比你期待的更難(大多數自然語言的東西),但檢查出Sharp Natural Language Parser。
我目前使用SharpNLP,它工作得很好,但總是有'陷阱'。
如果這不是你正在尋找的東西,請告訴我。
馬克
謝謝馬克,我會檢查那個圖書館。 – 2010-03-22 23:52:19
+1我最終實現了類似的東西。感謝代碼示例! – 2010-03-22 23:51:59