PDF 文件中的词频

PDF 文件中的词频

我需要开发一个基于文档中的词频的搜索引擎,我有一个包含 17000 个 PDF 文档的数据集,有没有办法计算出特定文档中的所有单词及其出现次数?

例如:您希望得到答复吗?

输出:Would=1 you=1 like=1 to=2 responses=1

答案1

的一般问题get text from a PDF比听起来要复杂得多。一旦你满意地解决了这个问题,问题就归结为确定一堆文本文件中的词频。你应该能够直接实现它,或者在 stackoverflow 上寻求一些建议。

要从 PDF 中获取文本,您必须考虑数据在 PDF 中的结构方式。

PDF 中的“文本”可以是以下任何一种:

  • 以图像形式呈现的字符
  • 单个文本字符之间有间距元素(这会使得难以区分“单词”,因为如何定义单词之间需要多少间距才能使其成为单独的单词?)
  • 普通文本的跨度
  • 动态内容(HTML、链接、表单字段、视频等)

如果您的所有源 PDF 都遵循类似的结构或使用相同的程序创建,那么创建一个程序来准确解析结构并半可靠地提取文本应该很容易。然而... 如果您的 PDF 来自不同的作者和第三方,而您无法控制他们的文档制作,那么情况可能会更复杂一些。

以下技术可能适用于从 PDF 中提取文本:

  • 使用光学字符识别 (OCR) 技术查看最终呈现的 PDF 并从 OCR 程序“看到”的内容中提取文本。
  • 使用了解 PDF 文档低级架构的工具来解析逻辑元素并确定哪些元素构成文本(仅使用此方法无法从图像中收集任何文本,但对于所有文本都存储为纯文本或轻度格式的文本的简单文档可能很有效)。
  • 使用专有或开源工具可以结合上述两种技术。

所以你的方法应该是这样的:

  • 确定输入 PDF 之间是否存在任何共同点,例如图像中呈现的文本是否一致存在(或不存在),以便根据您需要使用的提取技术定义您的需求范围。如果您需要使用一般情况任何输入 PDF,那么你应该做最坏的打算,并假设将要是图片中的文字,并且将要需要做OCR。
  • 根据您的提炼需求,确定是否有现有软件(专有、开源或其他,取决于您的偏好)可以实现您需要的技术。
  • 在可用的软件中,确定哪个最容易集成到您用于搜索引擎的编程环境/架构中(是 C 语言吗?Java 语言?.NET 语言?等等。)
  • 确定您是否需要在库功能之上进行任何类型的自定义“手动”解析或扫描。您可以通过从堆栈中随机选择一小批 PDF(例如 25 个)来执行此操作;对它们运行“PDF 转文本”算法;然后手动验证提取的输出是否准确。如果不是,您可能需要自定义实现这些技术的库,或者创建自己的库。
  • 一旦您对 PDF 转文本功能感到满意,您的问题就归结为在纯文本中索引词频。有许多有很多技术可以实现这一点,从 Map/Reduce(参见 Hadoop)到数据库,再到简单地将哈希图存储在内存中。您使用的技术取决于程序的规模;您可以投入多少硬件(一台台式机?一个集群?一台大型服务器?一台大型机?);以及您需要以多高的频率运行该作业(持续运行?每晚运行?一年一次?)。

相关内容