Как автоматически создавать шаблоны из html-страницы?

У меня есть вариант использования, в котором мне нужно программно отображать неформатированный текст в формате данной веб-страницы на Java. т.е. текст должен быть автоматически отформатирован как веб-страница со стилями, абзацами, маркерами и т. д.
Как я вижу, сначала мне придется проанализировать фрагмент неформатированного текста, чтобы найти кандидатов для абзацев, маркеров, заголовков. и т. д. Я намерен использовать анализаторы/токенизаторы Lucene для этой задачи. Есть ли какие-либо альтернативы?
Вторая проблема заключается в том, чтобы преобразовать отформатированную веб-страницу в какой-либо шаблон (например, шаблон скорости) с заполнителями для различных объектов, таких как заголовки, маркеры и т. д.
Есть ли какой-либо текст? библиотека анализа/шаблонов на Java, которая может помочь мне в этом? Предпочтительно с открытым исходным кодом.
Есть ли какие-либо другие предложения по более эффективному выполнению такого рода задач на Java?

Спасибо за вашу помощь.


person nabeelmukhtar    schedule 08.07.2011    source источник
comment
Вам действительно нужен другой шаблон в каждом случае, или вы не можете просто использовать один шаблон, который будет действовать на объект модели, представляющий текст после его разбора/разделения? (таким образом, шаблон будет зацикливаться на страницах для их отображения, и каждая страница будет зацикливаться на заголовках, абзацах и т. д.). Конечно, вашей настоящей проблемой будет расщепление.   -  person phtrivier    schedule 08.07.2011
comment
Мне нужно, чтобы пользователь мог выбрать веб-страницу и назначить ее своим шаблоном. Тогда все его входные тексты должны быть отформатированы как эта веб-страница.   -  person nabeelmukhtar    schedule 08.07.2011
comment
Создается ли веб-страница вашим приложением или другим? В первом случае, не можете ли вы просто использовать один и тот же шаблон для страницы, которую выбирает пользователь (с поддельным текстом или Lorem Ipsum), и для тех, которые вы создаете с предоставленным пользователем контентом? Во втором случае, как вы ожидаете узнать, какая часть страницы должна соответствовать частям пользовательского контента?   -  person phtrivier    schedule 08.07.2011
comment
Веб-страница создается вне приложения. Угадывание, какая часть страницы соответствует какой части контента, является частью проблемы.   -  person nabeelmukhtar    schedule 08.07.2011
comment
Это именно проблема. Мне не нужно решать ее идеально, но любое достаточно хорошее решение будет работать.   -  person nabeelmukhtar    schedule 08.07.2011


Ответы (1)


В том, что ты делаешь, много сложностей.

Ввод данных пользователем

Если вы не попросите своего пользователя предоставить какой-либо контекст, вы никогда не угадаете структуру текста. По крайней мере, вы должны попросить их предоставить заголовок и серию абзацев в вашем графическом интерфейсе.

В идеале вы можете попросить их следовать хорошо известному языку разметки (Markdown, Textile и т. д.) и использовать синтаксический анализатор с открытым исходным кодом для извлечения структуры.

Внешняя страница

Если используется какая-либо страница, единственное, на что вы можете положиться, — это «структурная разметка». Итак, если вы знаете, что заголовок страницы должен быть "Hello World" и где-то на странице есть элемент "h1", вы можете предполагать, что это место, где может располагаться заголовок.

Но если страницы представляют собой суп из тегов div, и только CSS используется для различения отображения заголовка, а не основной части текста, вам придется догадаться, как стиль сделано: это просто невозможно, если вы не знаете, как сделана страница.

Я не думаю, что Lucene поможет в этом (насколько я знаю, Lucene создан для создания указателя слов, используемых в основной части текста; я не думаю, что это может помочь вам угадать, какая часть текста имеется в виду. быть заголовком, подзаголовком и т. д.)

Создание шаблонов из внешней страницы

Предполагая, что вы «угадали» правильно, вы можете сгенерировать контент,

  • копипаст страницы
  • замена частей для изменения тегами выбранного вами языка шаблона
  • хранение шаблона где-то, где система шаблонов может получить к нему доступ
  • настройте свой шаблон / систему просмотра (viewResolver для скорости), чтобы использовать правильный шаблон для правильного человека

Это, конечно, вызовет ужасные юридические вопросы, поскольку ваши шаблоны будут включать работы оригинального автора веб-сайта (скорее всего, материалы, защищенные авторским правом).

Более реалистичное решение

Я бы посоветовал вам ограничить вашу проблему:

  • используя ввод, который имеет некоторую доступную информацию о структуре (используйте графический интерфейс для его ввода, используйте язык разметки и т. д.)
  • используя шаблоны, которые вы предоставляете, знаете структуру (и можете очень легко повторно использовать)

Обратите внимание, что ни один из этих пунктов не связан с системой шаблонов.

В противном случае, боюсь, вы беретесь за неразумный объем работы...

person phtrivier    schedule 08.07.2011