【问题标题】:Detecting "noise" in text extracted from documents检测从文档中提取的文本中的“噪声”
【发布时间】:2012-09-27 09:54:14
【问题描述】:
- 我正在从 PDF 文档中检索可读内容(即文本),其中大部分是科学期刊文章。
- 我正在使用 Poppler 文本实用程序将 PDF 转换为文本格式。
- 文本被很好地提取,但不幸的是,文章的其他组件(例如数字表)也是如此,无法以纯文本正确呈现。
-
例如,我可能会在文章中间得到以下输出:
字符分布随机 Hmax
1 2 3 4
组织 c) (关于物种的特征
一个
B
A 0 0 0 + C
B + + + +
C++++A
B 4+
H 字符分布非随机 Hobs
熵
3+ 2+ 1+
(物种的特征多样性
我的问题是:我如何识别这种“噪音”并将其与正常的文本块区分开来?有没有现成的算法?我正在使用 Ruby,但任何语言的代码都会有所帮助。
【问题讨论】:
标签:
ruby
text
text-processing
【解决方案1】:
您可以使用朴素贝叶斯分类器对有效和无效行进行建模。
Here's an article on one in Ruby; Python 的nltk 中有一个很好的实现。
要设置它,您需要举例说明,例如,用好的行填充一个文件,用坏的行填充一个文件。这与垃圾邮件过滤器使用的模型相同。
这个用例的一个技巧是,许多基本的朴素贝叶斯分类器使用词出现模型来表示特征,而在这里重要的不是词汇。您可以使用行长、空格百分比(四舍五入到 5% 或 10% 间隔)或各种标点符号的百分比(四舍五入但精度更高)。希望您的分类器能够了解到“没有句点和 30% 空格的行是不好的”或“没有标点符号且每个单词都以大写字母开头的行是不好的”。
不过,仅根据您上面的示例,您可能会拒绝任何空格比例过高或完全没有句子标点符号(例如逗号和句点)的行。