我试图将文本从PDF页面解析为句子,但比我预料的要困难得多。有很多特殊情况需要考虑,例如包含句号的首字母,小数,引号等,但不一定是句子的结束。解析文本为句子?
我很好奇,如果有人在这里熟悉用于C或C++的NLP库,可以帮助我完成这个任务,或者只是提供任何建议?
谢谢你的帮助。
我试图将文本从PDF页面解析为句子,但比我预料的要困难得多。有很多特殊情况需要考虑,例如包含句号的首字母,小数,引号等,但不一定是句子的结束。解析文本为句子?
我很好奇,如果有人在这里熟悉用于C或C++的NLP库,可以帮助我完成这个任务,或者只是提供任何建议?
谢谢你的帮助。
这是一个叫的句子边界消歧的问题。 Wikipedia page为它列出了几个库,但我不确定它们中的任何一个是否可以轻松地从C中调用。
您可以找到许多关于句子边界消歧理论的论文。 Unicode标准Unicode Standard Annex #29 - Unicode Text Segmentation也定义了简单的句子边界检测算法。
这是一种自然语言,而不是计算机语言的解析问题。因此,永远不会有一个简单的答案。但是,它们可能是启发式的,你可以申请,如果我们知道你为什么要将PDF分成句子以及你想要对句子做什么,那么我们可以推荐它们?
Sentence boundary disambiguation(SBD)是NLP领域的中心问题。不幸的是,那些我发现在过去使用的不是C(因为它不是基于字符串的任务最喜欢的语言,除非速度是个大问题)
管道
如果在所有可能我会创建一个简单的管道 - 如果在Unix系统上这应该不成问题,但即使您使用脚本语言在Windows上,也应该能够填补空白。这意味着,SBD可以是这个职位的最佳工具,而不仅仅是唯一的SBD你能找到的语言Z.例如,
./pdfconvert | SBD | my_C_tool > ...
这是我们做的事情在我的工作的标准方式,除非你有更严格的要求比你说的应该没问题。
工具
在问候你可以使用这些工具,
模型和培训
现在,一些工具可以给你很好的结果开箱即用,但有些人可能不。 OpenNLP包含一个English sentence detection开箱即用型号,可能适合您。如果您的域名与工具在其上进行培训的域名明显不同,那么他们可能表现不佳。例如,如果他们接受了报纸文章的培训,他们可能会非常擅长这一任务,但在信件上很糟糕。
因此,您可能希望通过给出示例来训练SBD工具。每个工具都应该记录这个过程,但我会提醒你,这可能是一些工作。它需要您在文档X上运行该工具,并通过手动修复任何不正确的拆分并将正确拆分的文档X返回到工具进行训练。根据文档和工具的大小,您可能需要为一个或几百个文档执行此操作,直至获得合理的结果。
祝你好运,如果你有任何问题随时问。
我在一段时间后有相同的要求。我试过几种解决方案。其中最好的是splitta(http://code.google.com/p/splitta/)。它适用于我投掷的所有边缘条件。 splitta的python。
我也试过sentrick(java)。 http://www.denkselbst.de/sentrick/index.html
不幸的是,我没有我尝试过的所有选项的完整列表。
为了“回流”目的,我将PDF分成几个句子。一个新的带标签的PDF将会从我所带的所有句子中创建出来,以便以后更轻松地操作。 – VeePee 2009-06-09 15:46:19
那么你的问题不应该是“如何转换PDF以支持回流?”或类似的东西? – 2009-06-09 15:50:35
回流焊不是一个解决的问题,因此我试图把它分解成几块。首先是得到一个格式正确的句子。 – VeePee 2009-06-09 15:59:22