Java:从列表中解析文本中的单词(缩写、缩写等)

Java:从列表中解析文本中的单词(缩写、缩写等),java,parsing,Java,Parsing,鉴于: 文本(可选,带有HTML标记) 包含缩写和首字母缩略词的数据库表(如“etc.”、“s.o.”、…) 目标: 构建一个解析器,用于查找给定文本中的所有匹配项 构建一个小型gui,让用户选择找到的事件是否匹配(这将根据需要进行调整) 用户可以选择忽略匹配项(还必须标记为“待忽略”) 用特殊的XML构造替换任何可接受的事件 我的主要问题是解析器,我提到GUI只是为了提供一个完整的概述 该任务是构建一个解析器,用于分析e.x.的文本(首字母缩略词),并将其标记以供以后进行后处理。任何“

鉴于:

  • 文本(可选,带有HTML标记)
  • 包含缩写和首字母缩略词的数据库表(如“etc.”、“s.o.”、…)
目标:

  • 构建一个解析器,用于查找给定文本中的所有匹配项
  • 构建一个小型gui,让用户选择找到的事件是否匹配(这将根据需要进行调整)
  • 用户可以选择忽略匹配项(还必须标记为“待忽略”)
  • 用特殊的XML构造替换任何可接受的事件
我的主要问题是解析器,我提到GUI只是为了提供一个完整的概述

该任务是构建一个解析器,用于分析e.x.的文本(首字母缩略词),并将其标记以供以后进行后处理。任何“标记”都必须以XML标记的形式出现,因为周围的环境不接受任何其他内容(我们在CMS的DOM编辑器中,以“Spirit”;)结尾)

有人对图书馆有什么建议吗?或者有人建造了类似的东西吗?您或您将如何处理以下事项:

  • 两个或多个单词是一个实体
  • fullstop-您正在寻找的句子或标记的一部分
  • 迭代替换-用户接受第一次出现-即时替换还是缓冲

任何想法、图书馆提示、维基百科文章,无论什么——都是有帮助的。我没有发现任何相关的问题能够回答上述所有方面。

我已经读到了很多好东西,如果我有一个类似的项目,我会先看看这个。它可以索引源文档并帮助查找所有出现的首字母缩略词(如果我没有弄错的话,这就是“解析”步骤的结果)。

我读了很多关于首字母缩略词的好东西,如果我有一个类似的项目,我会先看看这个。它可以为源文档编制索引,并帮助查找所有出现的首字母缩写词(如果我没有弄错的话,这就是“解析”步骤的结果)。

使用某种类型的SAX解析器,该解析器在输入上运行。对于您暂停解析的每一次点击,请在gui中显示,并让用户选择要执行的操作。解析时,在后台构建DOM树

每次用户替换某物时,您都会替换DOM树中的给定元素(您知道它是哪个元素,因为您持有用户需要对其作出反应的元素)


当整个东西被解析和替换时,您只需打印出DOM树。

使用某种SAX解析器,该解析器在输入上运行。对于您暂停解析的每一次点击,请在gui中显示,并让用户选择要执行的操作。解析时,在后台构建DOM树

每次用户替换某物时,您都会替换DOM树中的给定元素(您知道它是哪个元素,因为您持有用户需要对其作出反应的元素)



当整个事件被解析和替换时,您只需打印出DOM树。

是的,这是解析步骤的目标,但我必须一步一步地标记/替换出现的事件。这意味着第一次出现的“e.x.”可能未被触及,但第二次出现将被替换。这取决于用户的选择,用户可以单击每次点击旁边的复选框。我不知道lucene有多好,有没有可能突出显示发生的事件,然后在文本中找到它们的位置?lucene是一个搜索引擎。它不接触文本(突出显示),而是创建一个单词索引。然后,您可以使用该索引获取搜索结果的位置,并使用这些位置(和长度)对源文本应用一些突出显示/标记。是的,这是解析步骤的目标,但我必须一步一步地标记/替换出现的内容。这意味着第一次出现的“e.x.”可能未被触及,但第二次出现将被替换。这取决于用户的选择,用户可以单击每次点击旁边的复选框。我不知道lucene有多好,有没有可能突出显示发生的事件,然后在文本中找到它们的位置?lucene是一个搜索引擎。它不接触文本(突出显示),而是创建一个单词索引。然后,您可以使用该索引获取搜索结果的位置,并可以使用这些位置(和长度)对源文本应用一些突出显示/标记。SAX解析器是一个很好的方向,但OP需要查找首字母缩写词。解析器将为标记之间的任何内容报告一个文本(CDATA?)元素,但我们需要解析该块的内容以找到首字母缩写词。在这里,您可以使用Lucene或类似的东西,并动态操作元素的数据。Lucene非常适合搜索,一旦配置好,应该也适用于这个应用程序。它的索引部分可能有些过分,但我不知道检索到的文本数据的大小。从5到500个单词,很少超过500个,但总是少于1000个。@Mario then Lucene是最好的选择,否则你需要自己实现它,这只是浪费工作:)SAX解析器是一个很好的方向,但是OP需要找到首字母缩略词。解析器将为标记之间的任何内容报告一个文本(CDATA?)元素,但我们需要解析该块的内容以找到首字母缩写词。在这里,您可以使用Lucene或类似的东西,并动态操作元素的数据。Lucene非常适合搜索,一旦配置好,应该也适用于这个应用程序。它的索引部分可能有点过分,但我不知道检索到的文本数据的大小。从5到500个单词,很少超过500个,但总是少于1000个。@Mario那么Lucene是一个不错的选择,否则你需要自己实现它,这只是浪费工作:)你为什么需要一个解析器来完成这项工作?你只需要一个lexer/扫描仪,对吗?你不会看句法结构,只会看单词。嗯,如果连词、字母和数字的组合对你来说不是句法,是的;)但是你很清楚你要找的代币,你不会去的