2011-02-25 74 views
1

我正在做我的文本分类项目。我的信息检索项目有一个名为Reuters-21578的文本分类测试集合。它分布在22个文件中。每个前21个文件(reut2-000.sgm到reut2-020.sgm)包含1000个文档,而最后一个(reut2-021.sgm)包含578个文档。这些文件是SGML格式。 22个文件中的每一个都以文档类型声明行开头: 分发包含DTD文件lewis.dtd。在文件类型声明行之后的是单个路透社文章,标记了SGML标签。Java代码读取SGML文件

我需要帮助来编写一个java程序来读取这些21578文档或将它们转换为21578分离的文本文件。

有人可以帮助我?????

+0

你可能也想看看:http://stackoverflow.com/questions/1504202/java-sgml-to-xml-conversion – amccormack 2011-02-25 10:42:26

+0

也http://stackoverflow.com/questions/4867894/SGML解析器式-java的 – 2011-02-25 10:55:10

回答

1

从大约五分钟的Google搜索中,似乎没有针对Java的免费SGML解析器。这很令人惊讶,但是你去了。

我建议您从SP包(不是Java,但是它是portable C)获取James Clark的SX工具,并使用它将SGML转换为XML。然后您可以使用Java XML解析器解析XML。

1

Lucene在org.apache.lucene.benchmark.utils.ExtractReuters中有这样的提取器;

我实际上并没有尝试从jar文件(Maven repo)中运行它,但是您可以轻松使用(并修改)发现的here的java源代码,因为它没有外部依赖关系。

请注意,此代码导出大量小文件(实际上是21578)。

0

虽然这是一个很老的帖子,但我的答案是为未来的有需要的人,因为我在这样做之前挣扎了很多。我不能说它是一个合适的方法或一个好的解决方案,但它是为了达到目的,并且在过去的6个月里它不断运行以进行批处理。我编写了一些自定义代码来读取和分析SGML文件,并成功完成了作业,甚至可以退出大文件。虽然输出格式与我的情况需要不同的结构。你可以看看,如果它看起来很有用,你可以做一些调整来利用它。请看看here