Java: синтаксический анализ текста для слов из списка (сокращения, аббревиатуры и т. Д.) - PullRequest
0 голосов
/ 12 августа 2010

Дано:

  • Текст (необязательно с тегами HTML)
  • таблица базы данных с аббревиатурами и сокращениями (например, "etc.", "s.o.", ...)

Голы:

  • Создание анализатора, который находит все вхождения в данном тексте
  • Создайте небольшой графический интерфейс, чтобы пользователь мог выбрать, совпадает ли найденное вхождение (это будет изменено по требованию)
  • Пользователь имеет возможность игнорировать совпадение (также должен быть помечен как «игнорируемый»)
  • Заменить любое принятое вхождение специальной конструкцией XML

Моя главная проблема - парсер, я упомянул графический интерфейс только для того, чтобы дать полный обзор.

Задача состоит в том, чтобы создать синтаксический анализатор, который анализирует текст для e.x. акроним и отметьте его для последующей постобработки. Любая «метка» должна быть в форме тегов XML, так как окружающая среда не принимает ничего другого (мы находимся в DOM Editor CMS, который заканчивается на «Spirit»;)).

У кого-нибудь есть подсказка для библиотеки, или кто-нибудь создал что-то подобное? Как вы или вы бы справились с такими вещами, как:

  • Два или более слова - это одно целое
  • fullstop - часть предложения или часть искомого токена
  • итеративная замена - пользователь принимает первое вхождение - мгновенная замена или буферизация?

Любая идея, подсказка библиотеки, статья в Википедии, что угодно - полезно. Я не нашел ни одного связанного вопроса, который отвечал бы на все аспекты, упомянутые выше.

Ответы [ 2 ]

2 голосов
/ 12 августа 2010

Я прочитал много хороших вещей о apache lucene , и я бы сначала посмотрел на это, если бы у меня был похожий проект. Он может проиндексировать исходный документ и помочь найти все вхождения ваших аббревиатур (это то, что вы хотите в результате шага «разбора», если я правильно понял).

1 голос
/ 12 августа 2010

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

Каждый раз, когда пользователь что-то заменяет, вы заменяете данный элемент в этом дереве DOM (вы знаете, что это такое, поскольку вы держите элемент, на который пользователь должен реагировать).

Когда все проанализировано и заменено, вы просто распечатываете дерево DOM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...