2009-06-09 58 views
3

我试图将文本从PDF页面解析为句子,但比我预料的要困难得多。有很多特殊情况需要考虑,例如包含句号的首字母,小数,引号等,但不一定是句子的结束。解析文本为句子?

我很好奇,如果有人在这里熟悉用于C或C++的NLP库,可以帮助我完成这个任务,或者只是提供任何建议?

谢谢你的帮助。

回答

2

这是一种自然语言,而不是计算机语言的解析问题。因此,永远不会有一个简单的答案。但是,它们可能是启发式的,你可以申请,如果我们知道你为什么要将PDF分成句子以及你想要对句子做什么,那么我们可以推荐它们?

+0

为了“回流”目的,我将PDF分成几个句子。一个新的带标签的PDF将会从我所带的所有句子中创建出来,以便以后更轻松地操作。 – VeePee 2009-06-09 15:46:19

+0

那么你的问题不应该是“如何转换PDF以支持回流?”或类似的东西? – 2009-06-09 15:50:35

+0

回流焊不是一个解决的问题,因此我试图把它分解成几块。首先是得到一个格式正确的句子。 – VeePee 2009-06-09 15:59:22

3

Sentence boundary disambiguation(SBD)是NLP领域的中心问题。不幸的是,那些我发现在过去使用的不是C(因为它不是基于字符串的任务最喜欢的语言,除非速度是个大问题)

管道

如果在所有可能我会创建一个简单的管道 - 如果在Unix系统上这应该不成问题,但即使您使用脚本语言在Windows上,也应该能够填补空白。这意味着,SBD可以是这个职位的最佳工具,而不仅仅是唯一的SBD你能找到的语言Z.例如,

./pdfconvert | SBD | my_C_tool > ... 

这是我们做的事情在我的工作的标准方式,除非你有更严格的要求比你说的应该没问题。

工具

在问候你可以使用这些工具,

  • 我建议MXTERMINATOR,这是用最大熵建模SBD工具,我的主管在自己用它最近工作。据他们说,它确实错过了一些句子拆分,但很容易通过sed script修复。他们在天文论文上做了SBD。 main site此刻出现,但有一个可用的FTP镜像here
  • OpenNLP有使用最大熵模型在Java中(JavaDoc)上述算法的重新实现,更了解最新的背后一个看似强大的社区。
  • Sentrick还有很多其他的也存在。欲了解更多信息,可以使用旧的清单here

模型和培训

现在,一些工具可以给你很好的结果开箱即用,但有些人可能不。 OpenNLP包含一个English sentence detection开箱即用型号,可能适合您。如果您的域名与工具在其上进行培训的域名明显不同,那么他们可能表现不佳。例如,如果他们接受了报纸文章的培训,他们可能会非常擅长这一任务,但在信件上很糟糕。

因此,您可能希望通过给出示例来训练SBD工具。每个工具都应该记录这个过程,但我会提醒你,这可能是一些工作。它需要您在文档X上运行该工具,并通过手动修复任何不正确的拆分并将正确拆分的文档X返回到工具进行训练。根据文档和工具的大小,您可能需要为一个或几百个文档执行此操作,直至获得合理的结果。

祝你好运,如果你有任何问题随时问。