Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 把文本分析成句子?_C++_C_Parsing_Nlp - Fatal编程技术网

C++ 把文本分析成句子?

C++ 把文本分析成句子?,c++,c,parsing,nlp,C++,C,Parsing,Nlp,我试图将PDF页面上的文本解析成句子,但这比我预想的要困难得多。有很多特殊的情况需要考虑,例如缩写、小数、引文等,它们包含句点但不一定结束句子。 我很好奇,如果有人熟悉C语言或C++语言的NLP库,可以帮助我完成这个任务,或者提供任何建议? 谢谢您的帮助。这是一个称为句子边界消歧的问题。ForIt列出了一些库,但我不确定它们是否可以从C轻松调用 你可以找到许多关于句子边界消歧理论的论文。Unicode标准也定义了一个简单的句子边界检测算法。这是一种自然语言,而不是计算机语言,解析问题。因此,永远

我试图将PDF页面上的文本解析成句子,但这比我预想的要困难得多。有很多特殊的情况需要考虑,例如缩写、小数、引文等,它们包含句点但不一定结束句子。 我很好奇,如果有人熟悉C语言或C++语言的NLP库,可以帮助我完成这个任务,或者提供任何建议? 谢谢您的帮助。

这是一个称为句子边界消歧的问题。ForIt列出了一些库,但我不确定它们是否可以从C轻松调用


你可以找到许多关于句子边界消歧理论的论文。Unicode标准也定义了一个简单的句子边界检测算法。

这是一种自然语言,而不是计算机语言,解析问题。因此,永远不会有一个简单的答案。但是,如果我们知道为什么要将PDF拆分为句子,以及一旦获得了这些句子,您想对它们做什么,那么它们可能是您可以应用的启发式方法。SBD是NLP领域的一个核心问题。不幸的是,我在过去发现并使用过的语言不是C语言(因为它不是基于字符串的任务最喜欢的语言,除非速度是一个主要问题)

管道

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

./pdfconvert | SBD | my_C_tool > ...
这是我工作中的标准方式,除非你有比你说的更严格的要求,否则应该没问题

工具

关于你可以使用的工具

  • 我建议使用MXTERMINATOR,这是一种使用最大熵建模的SBD工具,因为我的主管最近在他们自己的工作中使用了它。根据他们的说法,它确实漏掉了几个分句,但这很容易被一个简单的句子修复。他们在天文学论文上做SBD。此时显示为关闭状态,但有可用的FTP镜像
  • 使用Java()中的最大熵模型重新实现上述算法,并且更符合最新情况,背后似乎有一个更强大的社区
  • 还有很多其他的。如需了解更多信息,可以使用较旧的列表
模型和培训

现在,这些工具中的一些可能会提供现成的好结果,但有些可能不会。OpenNLP包含一个开箱即用的模型,它可能适合您。但是,如果您的域与工具培训的域有显著差异,则它们可能无法很好地执行。例如,如果他们接受过报纸文本方面的培训,他们可能会非常擅长这项任务,但在信件方面却很糟糕

因此,您可能希望通过举例来培训SBD工具。每个工具都应该记录这个过程,但我要警告您,这可能需要一些工作。这需要您在文档X上运行该工具,检查并手动修复任何不正确的拆分,并将正确拆分的文档X返回给该工具进行培训。根据文档的大小和涉及的工具,您可能需要对一个或一百个文档执行此操作,直到得到合理的结果


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

我以前也有同样的要求。我尝试了几种解决办法。其中最好的是splitta()。它适用于我扔给它的所有边缘条件。斯普利塔的巨蟒

我也试过sentrick(java)


不幸的是,我没有我尝试过的所有选项的完整列表。

为了“回流”,我将PDF分成了几个句子。一个新的带标签的PDF将从我剥离的所有句子中创建,以便以后更容易操作。你的问题不应该是“如何转换PDF以支持回流?”或类似的问题吗?回流并不是一个已解决的问题,因此我正试着将其分解成碎片。第一个是得到一个格式正确的句子。