1
  • 我正在从 PDF 文档中检索可读内容(即文本),其中大部分是科学期刊文章。
  • 我正在使用 Poppler 文本实用程序将 PDF 转换为文本格式。
  • 文本提取得很好,但不幸的是,文章的其他组成部分(例如数字表)也是如此,无法以纯文本正确呈现。
  • 例如,我可能会在文章中间得到以下输出:

    字符分布随机 Hmax

    1 2 3 4

    组织 c) (特征超过物种的)

    一个

    A 0 0 0 + C

    B + + + +

    C + + + + A

    乙 4+

    H 字符分布非随机 Hobs

    3+ 2+ 1+

    (物种的特征多样性

我的问题是:我将如何识别这种“噪音”并将其与正常的文本块区分开来?有没有现成的算法?我正在使用 Ruby,但任何语言的代码都会有所帮助。

4

1 回答 1

1

您可以使用朴素贝叶斯分类器对有效线与无效线进行建模。

这是一篇关于 Ruby 的文章;Python 的nltk中有一个很好的实现。

要设置它,您需要给它一些示例,例如,用好的行填充一个文件,用坏的行填充一个文件。这与垃圾邮件过滤器使用的模型相同。

这个用例的一个技巧是,许多基本的朴素贝叶斯分类器使用单词出现模型来表示特征,而在这里重要的不是词汇表。您可以使用行长、空格百分比(四舍五入到 5% 或 10% 间隔)或各种标点符号的百分比(四舍五入但精度更高)。希望您的分类器能够了解到“没有句点和 30% 空格的行是不好的”或“没有标点符号且每个单词都以大写字母开头的行是不好的”。

但是,仅根据上面的示例,您可能会拒绝任何空格比例过高或完全没有句子标点符号(例如逗号和句点)的行。

于 2012-09-27T01:54:14.287 回答