我正在进行文本分类的项目。我的信息检索项目有一个名为Reuters-21578的文本分类测试集。它分布在22个文件中。前21个文件(reut2-000.sgm到reut2-020.sgm)中的每一个都包含1000个文档,而最后一个(reut2-021.sgm)包含578个文档。文件采用SGML格式。 22个文件中的每一个都以文档类型声明行开头: DTD文件lewis.dtd包含在发行版中。在文档类型声明行之后是标有SGML标记的各个路透社文章。
我需要帮助来编写一个java程序来读取这些21578文档或将它们转换为21578个单独的文本文件。
有人能帮助我吗?????答案 0 :(得分:1)
从谷歌搜索的大约五分钟,似乎没有免费的Java SGML解析器。这是相当令人惊讶的,但你去了。
我建议您从SX包中获取James Clark的SP工具,该工具不是Java,而是portable C,并使用它将SGML转换为XML。然后,您可以使用Java XML解析器解析XML。
答案 1 :(得分:1)
Lucene在org.apache.lucene.benchmark.utils.ExtractReuters中有这样一个提取器;
我实际上并没有尝试从jar文件(Maven repo)运行它,但您可以轻松地使用(并修改)找到的here java源代码,因为它没有外部依赖项。
请注意,此代码会导出大量小文件(实际上为21578)。
答案 2 :(得分:0)
虽然这是一个非常古老的帖子,但我的答案是针对未来有需要的人,因为在这样做之前我挣扎了很多。我不能说它是一个合适的方法或一个好的解决方案,但它符合目的,并且在过去的6个月中它不断地运行以进行批处理。我写了一些自定义代码来读取和解析SGML文件,它成功完成了甚至退出大文件的工作。虽然输出格式在我的情况下是不同的结构。你可以看看它是否有用,你可以做一些调整来利用它。请看一下here