C++ 把文本分析成句子?
我试图将PDF页面上的文本解析成句子,但这比我预想的要困难得多。有很多特殊的情况需要考虑,例如缩写、小数、引文等,它们包含句点但不一定结束句子。 我很好奇,如果有人熟悉C语言或C++语言的NLP库,可以帮助我完成这个任务,或者提供任何建议? 谢谢您的帮助。这是一个称为句子边界消歧的问题。ForIt列出了一些库,但我不确定它们是否可以从C轻松调用C++ 把文本分析成句子?,c++,c,parsing,nlp,C++,C,Parsing,Nlp,我试图将PDF页面上的文本解析成句子,但这比我预想的要困难得多。有很多特殊的情况需要考虑,例如缩写、小数、引文等,它们包含句点但不一定结束句子。 我很好奇,如果有人熟悉C语言或C++语言的NLP库,可以帮助我完成这个任务,或者提供任何建议? 谢谢您的帮助。这是一个称为句子边界消歧的问题。ForIt列出了一些库,但我不确定它们是否可以从C轻松调用 你可以找到许多关于句子边界消歧理论的论文。Unicode标准也定义了一个简单的句子边界检测算法。这是一种自然语言,而不是计算机语言,解析问题。因此,永远
你可以找到许多关于句子边界消歧理论的论文。Unicode标准也定义了一个简单的句子边界检测算法。这是一种自然语言,而不是计算机语言,解析问题。因此,永远不会有一个简单的答案。但是,如果我们知道为什么要将PDF拆分为句子,以及一旦获得了这些句子,您想对它们做什么,那么它们可能是您可以应用的启发式方法。SBD是NLP领域的一个核心问题。不幸的是,我在过去发现并使用过的语言不是C语言(因为它不是基于字符串的任务最喜欢的语言,除非速度是一个主要问题) 管道 如果可能的话,我会创建一个简单的管道-如果在Unix系统上,这应该不会是一个问题,但是即使您在Windows上使用脚本语言,您也应该能够填补空白。这意味着SBD可以是工作的最佳工具,而不仅仅是语言Z的唯一SBD。例如
./pdfconvert | SBD | my_C_tool > ...
这是我工作中的标准方式,除非你有比你说的更严格的要求,否则应该没问题
工具
关于你可以使用的工具
- 我建议使用MXTERMINATOR,这是一种使用最大熵建模的SBD工具,因为我的主管最近在他们自己的工作中使用了它。根据他们的说法,它确实漏掉了几个分句,但这很容易被一个简单的句子修复。他们在天文学论文上做SBD。此时显示为关闭状态,但有可用的FTP镜像
- 使用Java()中的最大熵模型重新实现上述算法,并且更符合最新情况,背后似乎有一个更强大的社区
- 还有很多其他的。如需了解更多信息,可以使用较旧的列表
祝你好运,如果你有任何问题,请随时提问。我以前也有同样的要求。我尝试了几种解决办法。其中最好的是splitta()。它适用于我扔给它的所有边缘条件。斯普利塔的巨蟒 我也试过sentrick(java)
不幸的是,我没有我尝试过的所有选项的完整列表。为了“回流”,我将PDF分成了几个句子。一个新的带标签的PDF将从我剥离的所有句子中创建,以便以后更容易操作。你的问题不应该是“如何转换PDF以支持回流?”或类似的问题吗?回流并不是一个已解决的问题,因此我正试着将其分解成碎片。第一个是得到一个格式正确的句子。