1

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

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

有人可以帮我吗????

4

3 回答 3

1

从大约五分钟的谷歌搜索来看,似乎没有免费的 Java SGML 解析器。这是相当令人惊讶的,但你去。

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

于 2011-02-25T10:59:29.320 回答
1

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

我实际上并没有尝试从 jar 文件 ( Maven repo ) 中运行它,但是您可以轻松地使用(和修改)此处找到的 java 源代码,因为它没有外部依赖项。

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

于 2015-10-12T15:07:33.497 回答
0

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

于 2017-09-20T06:49:56.943 回答