java - 没有标点符号的文本中的句子注释

标签 java nlp stanford-nlp

我很难让 CoreNLP 系统正确地找到诗歌语料库中一个句子结束的位置和另一个句子的开始位置。

它苦苦挣扎的原因:

  • 有些诗全篇没有标点符号(有时没有大小写)
  • 有些诗的句子从一段到另一段
  • 有些诗行首大写

This is a particularly tricky one (系统认为第一句结束于第二节开头的“.”)

由于缺少大写字母和标点符号,我想我会尝试使用 -tokenizeNLs 看看是否能改善它,但它太过分了,并切断了中间的任何句子空行(有几个)

这些句子通常在一行的末尾结束,但并非总是如此,所以如果系统能够将一行结尾视为一个潜在的断句候选者,并且可能权衡那些被断句的可能性,那将是圆滑的端点,但我不知道如何实现它。

有没有一种优雅的方式来做到这一点?或者替代方案?

提前致谢!

(预期句子输出 here )

最佳答案

我构建了一个句子分割器,它在处理没有标点符号或部分标点符号的文本时也表现出色。您可以在 https://github.com/bedapudi6788/deepsegment 找到它.

该模型基于命名实体识别可用于句子边界(即:句子开头或句子结尾)的想法。我利用来自 tatoeba 的数据来生成训练数据,并为此任务训练了具有手套嵌入和字符级别的 BiLSTM+CRF 模型。

虽然这是用 Python 构建的,但您将能够使用 flask 设置一个简单的 rest api,并将其与您的 Java 代码一起使用。

关于java - 没有标点符号的文本中的句子注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27807333/

相关文章:

python - 用于确定 k 均值中的 k 的 k 折交叉验证?

java - 斯坦福自然语言处理(StanfordNLP)检测带有介词的复合实体

java - 使用 javac 的斯坦福CoreNLP 编译器错误

java - JSF:通过 AJAX 调用更新 View 后立即调用 javaScript 方法

machine-learning - 斯坦福NER分类器是如何构建的

java - 如何解决hyperledger-fabric和java-sdk中的访问被拒绝 channel

machine-learning - 用于自然语言处理的转录数据集

java - 斯坦福 CoreNLP - 关系注释器

java - 带有 VpnService 的 Android 防火墙

java - 如何在构造函数中创建给定类型的新对象