2

我有一个用例,我需要在 Java 中以给定网页的格式呈现未格式化的文本。即文本应自动格式化为带有样式、段落、项目符号等的网页。
正如我首先看到的那样,我将不得不分析这段未格式化的文本以找出段落、项目符号、标题等的候选者。我打算使用 Lucene 分析器/标记器来完成此任务。有没有其他选择?
第二个问题是将格式化的网页转换为某种模板(例如速度模板),其中包含标题、项目符号等各种实体的占位符
。Java 中是否有任何文本分析/模板库可以帮助我做到这一点?最好是开源的。
在 Java 中以更好的方式完成此类任务还有其他建议吗?

谢谢你的帮助。

4

1 回答 1

1

你正在做的事情有很多困难的部分。

用户输入

如果你不要求你的用户提供任何上下文,你永远不会猜测文本的结构。至少,您应该要求他们在您的 GUI 中提供一个标题和一系列段落。

理想情况下,您可以要求他们遵循众所周知的标记语言(Markdown、Textile 等)并使用开源解析器来提取结构。

外部页面

如果使用任何页面,您唯一可以依赖的就是“结构标记”。所以假设你知道页面的标题应该是“Hello World”,并且页面中的某个地方有一个“h1”元素,你可以假设这是标题可以去的地方。

但是如果页面是一个 div 标签汤,并且只使用 CSS 来区分标题的呈现而不是大部分文本,那么您将不得不猜测样式是如何完成的:如果你不知道页面是如何制作的。

我不认为 Lucene 会对此有所帮助(据我所知,Lucene 是用来创建大量文本中使用的单词的索引;我认为它不能帮助您猜测文本的哪一部分是指成为标题,副标题等......)

从外部页面生成模板

假设您“猜对”了,您可以通过以下方式生成内容

  • 复制粘贴页面
  • 用您选择的模板语言的标签替换要更改的部分
  • 将模板存储在模板系统可以访问的地方
  • 配置您的模板/视图系统(viewResolver for velocity)为正确的人使用正确的模板

这当然会带来可怕的法律问题,因为您的模板将包含原始网站作者的作品(很可能是受版权保护的材料)

更现实的解决方案

我建议您将问题限制为:

  • 使用具有一些可用结构信息的输入(使用 GUI 输入,使用标记语言等)
  • 使用提供的模板,了解其结构(并且可以很容易地重用)

请注意,这些点都与模板系统无关。

否则,恐怕你的工作量会不合理......

于 2011-07-08T10:11:05.327 回答