Java-код для чтения файлов SGML
Я делаю свой проект по текстовой категоризации. У меня есть сборник тестов по текстовой категоризации под названием Reuters-21578 для моего проекта поиска информации. Распространяется в 22 файлах. Каждый из первых 21 файлов (от reut2-000.sgm до reut2-020.sgm) содержит 1000 документов, а последний (reut2-021.sgm) содержит 578 документов. Файлы в формате SGML. Каждый из 22 файлов начинается со строки объявления типа документа: DTD-файл lewis.dtd включен в дистрибутив. После строки описания типа документа находятся отдельные статьи Reuters, помеченные тегами SGML.
Мне нужна помощь, чтобы написать программу Java, чтобы прочитать эти 21578 документов или преобразовать их в 21578 отдельных текстовых файлов.
Может ли кто-нибудь PLZZ помочь мне?????
3 ответа
Примерно через пять минут поиска в Google, кажется, нет свободных парсеров SGML для Java. Это довольно удивительно, но вы идете.
Я предлагаю вам воспользоваться инструментом SX Джеймса Кларка из пакета SP, который не является Java, но является переносимым C, и использовать его для преобразования SGML в XML. Затем вы можете проанализировать XML с помощью анализатора Java XML.
У Lucene есть такой экстрактор в org.apache.lucene.benchmark.utils.ExtractReuters;
На самом деле я не пытался запустить его из файла jar ( репозиторий Maven), но вы можете легко использовать (и изменить) найденный здесь исходный код java, поскольку он не имеет внешних зависимостей.
Обратите внимание, что этот код экспортирует большое количество маленьких файлов (на самом деле 21578).
Хотя это очень старый пост, но мой ответ - для будущих нуждающихся людей, потому что я много боролся, прежде чем сделать это таким образом. Я не могу сказать, что это подходящий подход или хорошее решение, но он выполнил свою задачу и в течение последних 6 месяцев непрерывно выполнял пакетный процесс. Я написал собственный код для чтения и анализа файлов SGML, и он успешно справился даже с большими файлами. Хотя выходной формат имеет другую структуру, как требуется в моем случае. Вы можете посмотреть, и если это кажется полезным, вы можете сделать некоторые настройки, чтобы использовать его. Пожалуйста, посмотрите здесь