2012-03-02 75 views
2

我一直在尋找一段時間,但沒有找到適合我需要的東西。 (This was helpful, but not convincing如何檢測句子是否包含在頁面中(模糊)?

從兩個不同的來源,我得到兩個不同的字符串。我想檢查一下,如果較短的一個包含在較大的一箇中。但是,由於這些字符串都來自OCR文檔,可能會有明顯的差異。

例子:

String textToSearch = "Recognized Headline"; 
String documentText = "This is the document text, spanning multiple pages" . 
         "..." . 
         "..." . 
         "This the row with my Recognizect Head1ine embedded" . 
         "..." .    ^^^^^^^^^^^^^^^^^^^^ 
         "..." . 
         "End of the document"; 

我如何才能找到我的字符串可靠的頁面,而無需使用獨立的Lucene/Solr的安裝? (或者,也許我還沒有找到教程/手冊)。必須有一些圖書館可以做到這一點,對吧?

+0

Lucene可以在內存中使用「模式」(如果你的意思是standalone =在磁盤上索引)。這可能也是有用的:http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance#Java – 2012-03-02 21:40:58

+0

我知道Levenshtein算法,但無論我用它之前我用它來檢查兩個字符串的相似性,如果其中一個包含另一個 – 2012-03-02 21:44:02

+0

您是否可以利用您可以將文檔(和標題)分割成單詞列表的事實?或者情況並非總是如此? – biziclop 2012-03-02 21:59:26

回答

0

首先你需要找到你的輸入源。一個網頁有一個可以用兩種方式解析的DOM樹:SAX(沒有上下文的事件驅動的模型)或者DOM(帶有上下文的基於樹的模型)。 SAX在這裏非常理想,因爲您不需要有上下文信息就可以從DOM中檢索標記化文本節點流。將所有文本節點轉換爲令牌流。

你有一個令牌流,你可以對它們進行處理。對於像Levenshtein字符串匹配這樣的大量輸入算法來說,這些算法是不夠的。相反,看看馬爾科夫鏈。它們可以幫助相當可靠和高效地匹配一組輸入和一組輸出。

+0

你也可以使用StAX來解析XML,但我不認爲獲取原始文本是問題的一部分 – biziclop 2012-03-02 22:19:06

+0

你是對的我看到Lucene/Solr提到並立即認爲他試圖解析出一個網頁。 – jmkeyes 2012-03-02 22:24:21

相關問題