2010-08-12 48 views
0

考慮:的Java:(首字母縮寫,簡稱等),從列表中解析的話文本

  • 文本(可選的HTML標籤)
  • 數據庫表與縮寫詞(如「等「, 」所以「,...)

目標:

  • 構建一個發現在給定文本中的所有事件分析器
  • 建立一個小型的GUI讓用戶選擇,如果發現發生匹配(這由需求將擺動)
  • 用戶必須忽略匹配(也必須被標記爲「被忽略」)
  • 選項用特殊的XML構造替換任何可接受的事件

我的主要問題是解析器,我剛纔提到的GUI只是給出了一個完整的概述。

任務是構建一個分析器,分析e.x的文本。首字母縮略詞並將其標記用於以後的後處理。任何「標記」都必須以XML標記的形式存在,因爲周圍的環境不接受其他任何東西(我們在以「Spirit」結尾的CMS的DOM編輯器中;))。

有沒有人有暗示的圖書館或做任何人建立這樣的事情?你怎麼會和你會處理事情,如:

  • 兩個或兩個以上的話是一個實體
  • 句號 - 令牌的句子或部分的一部分,你正在尋找
  • 反覆更換 - 用戶接受第一次發生 - 即時更換或緩衝?

任何想法,圖書館暗示,維基百科的文章,不管是誰 - 是有幫助的。我沒有發現任何回答上述所有問題的相關問題。

+0

爲什麼你需要一個解析器來做到這一點?你只需要一個詞法分析器/掃描儀?你不會去看句法結構,而是看單詞。 – LB40 2010-08-12 09:13:55

+0

嗯,如果一個組合,交互,字母和數字不是句法給你,是的;) – 2010-08-12 10:11:45

+0

但你確切地知道你正在尋找的標記,你不會去看語法環境嗎? – LB40 2010-08-12 10:17:34

回答

2

我讀了很多關於apache lucene的好東西,如果我有類似的項目,我會先看看這個。它可以對源文檔進行索引,並幫助找到所有縮寫詞的出現(這正是「解析」步驟所需的結果,如果我理解的話)。

+0

是的,這是解析步驟的目標,但我必須逐步標記/替換事件。這意味着首次出現「e.x.」可能是未觸及的,但第二次出現是要被替換。這取決於用戶的選擇,他們可以點擊每次擊中旁邊的複選框。我不知道lucene那麼好,是否有可能突出出現並在事後得到它們在文本中的位置? – 2010-08-12 07:43:47

+1

Lucene是一個搜索引擎。它不會觸摸文本(突出顯示),但會創建一個詞索引。然後,您可以使用該索引來獲取搜索結果的位置,並且可以使用這些位置(和長度)將一些突出顯示/標記應用於源文本。 – 2010-08-12 08:19:25

+0

+1 Andreas_D:這是一個非常好的lib – LB40 2010-08-12 09:14:53

1

使用在輸入上運行的某種SAX解析器。對於每一次點擊,您都可以暫停解析,以gui顯示並讓用戶選擇要執行的操作。在解析時,您會在後臺構建DOM樹。

每次用戶替換某個東西時,都會替換該DOM樹中的給定元素(因爲您持有用戶需要作出反應的元素,所以您知道它是哪個元素)。

當整個事情被解析和替換,你只需打印出DOM樹。

+0

SAX解析器是一個很好的方向,但OP需要找到縮略詞。解析器會爲標籤之間的任何東西報告一個文本(CDATA?)元素,但我們需要解析這個塊的內容以找到縮略詞。 – 2010-08-12 08:22:11

+0

這就是你可以使用Lucene或者其他喜歡的地方,並且可以即時處理元素的數據。 Lucene非常適合用於搜索,一旦配置好,並且也適用於此應用程序。它的索引部分可能是矯枉過正的,但我不知道檢索到的文本數據的大小。 – Jes 2010-08-12 09:10:24

+0

從5到500個單詞,很少超過500,但始終小於1000. – 2010-08-12 10:09:45