2012-11-05 146 views
-1

我正在處理數十萬個文件。潛在的數百萬之後的道路上。壞文件將包含Excel電子表格的文本版本或其他不是二進制文件的文本,但也不是句子。這樣的文件會導致CoreNLP崩潰(從技術上講,這些文件需要很長時間才能處理,例如每千字文本15秒)。我很想檢測這些文件並在次秒內丟棄它們。有沒有一種方法來確定一個文檔是否是一個文本句子文件?

我正在考慮的是隨機抽取幾千個文件,檢查第一個200個字符並查找字符分佈以確定什麼是合法的以及什麼是異常值。例如,如果沒有標點符號或太多標點符號。這似乎是一個好方法嗎?有更好的證明嗎?我認爲,當然,這將工作得很好,可能會拋出潛在的好文件,但很少。

另一個想法是簡單地運行註釋器tokenize和ssplit,並做單詞和句子計數。這似乎也做得很好,並很快返回。我可以想到可能會失敗的情況。

+0

我少擔心比約不拋出潛在的不良檔案投出潛在的好文件。你應該也可以檢查行和字的長度。爲了好奇,爲什麼系統中存在「壞」文件? (我認爲你的方法應該可行,但實際上你應該實施它並試圖讓它失敗)。雖然我不太確定這是否是一個好問題。 – Cubic

+1

剛剛讀取文件的最後幾個字節呢?我認爲有一些特殊的格式是特定於excel文件的,這些格式與編碼有關。 – calderonmluis

+0

也許更容易找到「Excel電子表格的文本版本」的簽名?那裏一定有一些文件頭或頁腳數據? – whiskeyspider

回答

1

這種處理流水線總是處於持續改進的狀態。爲了啓動這個過程,我要創建的第一件事是圍繞CoreNLP時間行爲的一個工具。如果CoreNLP耗時過長,請將違規文件踢出一個單獨的隊列。如果這還不夠好,您可以在take-too-long隊列中爲最常見的事情編寫識別器,並在它們碰到CoreNLP之前將它們轉移。這種方法的主要優點是它可以處理預先不期望的輸入。

+0

即使我堅持我的計劃,這是一個好主意。通過我的過濾器的文件仍然可能會嘗試衝擊堆和處理時間。 –

+1

噢,我同意您在原文中的假設,您需要在處理管道中識別「壞文本」。我不願意做的是在實際看到它之前提出識別不良文本的方法。因此,我建議創建一條管道,爲您提供明顯不好的文本集合。然後,當你編寫一個識別器時,你有兩個文本集合,一個好的和一個壞的,並且你可以測試候選識別器匹配壞文本的_some_和好文本的_none_(或者至少小數量)。 – eh9

+0

事實證明,在過去的幾個月中,使用貝葉斯分類器使用字節分佈的高斯特徵效果非常好。通過查看所有字節的可能分佈情況,在訓練集中增加特徵出現次數的百分比,正負分類器可以產生出色的結果。它可以很容易地區分差異。雖然它有助於刪除像圖像文件那樣明顯的非文本文件,但真正的問題在於非語義結構化的文本文件,而這些文件從我想處理的文件中脫穎而出。 –

1

這種問題有兩種主要方法。

第一種方法是採用您正在考慮的方法,您可以在其中檢查文件的內容,並根據文件中數據的統計分析來決定文本是否可接受。

第二種方法是使用某種類型的元標記,例如文件擴展名,以至少消除那些肯定會成爲問題的文件(.pdf,.jpg等)。

我會建議這兩種方法的混合,以減少處理量。

您可能會考慮一種管道方法,其中您有一系列測試。第一個測試根據元數據(如文件擴展名)篩選出文件,第二步然後對文件的前幾個字節進行初步統計檢查,以篩選出明顯的問題文件,第三步進行更爲複雜的統計分析文本,第四個處理CoreNLP拒絕步驟。

您不會說文件來自哪裏,也不知道是否有任何語言因素(英文與法文與簡體中文文本)。例如,對文本使用UTF-8,UTF-16或其他編碼的可接受文本文件?

CoreNLP應用程序還有可能在檢測和拒絕不兼容的文本文件時更加優雅嗎?

+0

我不知道輸入源的來源在哪裏。 95%將從非結構化文本中過濾文本。 「問題兒童」將成爲人們將不應該放入各種不同事物的結果。就像在現實生活中一樣。所以,原始文本可能來自電子郵件,PDF等,這已經儘可能地被過濾了。其中一些可能是由於處理不當的文件附件(如電子表格)造成的。有些只是像PDF產品表一樣的東西 - 大量的文本,但沒有一個真正用CoreNLP進行正確分析。我喜歡你的過濾器序列的想法! –

1

難道你不只是訓練樸素貝葉斯分類器來識別壞文件嗎?對於特徵使用諸如(分檔)標點百分比,數字字符百分比和平均句子長度之類的東西。

+0

我發現的另一件事是一些消息具有良好的文本和不好的文本。例如,一封電子郵件包含一段文字,然後是幾行列出附件的行。從文檔中提取了6000多個概念。這是最具病態的情況。它可能是最好的預處理和尋找特定模式解決。如果有更聰明的東西會很好,而NaïveBayes分類器就是這樣。 –

-1

Peter,

您明確地處理ediscovery的文件。任何事情都是可能的,正如你所知道的,任何踢出來的東西都必須記錄爲例外。我遇到過這種情況,並且從其他分析處理器聽到過相同的聲音。

以上所述的解決方案,預處理和在線幫助。在某些ediscovery解決方案中,將文本轉儲到SQL中的字段並截斷或以其他方式截斷並仍然可以獲得所需的內容可能是可行的。在其他應用程序中,與語義聚類或預測編碼有關的任何內容,使用元數據(如文件類型),文檔類型分類庫和基於先前示例的實體提取的前置過濾器,當前採樣或最佳選擇可能會更好猜測「壞檔案」內容的性質。

祝你好運。

+0

我發現分類器可以輕鬆檢測到目標文本文件中缺少語義結構。在我嘗試過的所有解決方案中,成功率最高。分類器的培訓非常簡單,可以使系統自動化,但我認爲策劃方法會產生更好的結果,因爲您可以根據對文件內容的視覺檢查來創建多個分類器。它不需要很多文件來生成另一個好處的工作分類器。 –

相關問題