文本中的句子注释不带标点符号

Bla*_*air 10 java nlp stanford-nlp

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

其陷入困境的原因:

  • 有些诗在整个长度上都没有标点符号(有时甚至没有大小写)
  • 有些诗的句子从一个段落延伸到另一个段落
  • 有些诗每行开头都大写

这是一个特别棘手的问题 (系统认为第一句话以第二节开头的“.”结尾)

鉴于缺乏大写字母和标点符号,我想我会尝试使用-tokenizeNLs来看看是否可以改进它,但它太过分了,并切断了空行之间的任何句子(有一些)

这些句子通常以行尾结束,但并非总是如此,所以如果系统可以将行结尾视为句子中断的潜在候选者,并可能权衡这些句子作为端点的可能性,那就很巧妙了,但我不知道如何实现它。

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

提前致谢!

(此处预期输出句子)

小智 7

我构建了一个句子分段器,它对于不带标点或部分标点的文本也非常有效。您可以在https://github.com/bedapudi6788/deepsegment找到它。

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

尽管这是用 Python 构建的,但您将能够使用 Flask 设置一个简单的 REST API,并将其与 Java 代码一起使用。


Gab*_*eli 2

这将是一个很棒的项目!我认为目前我们团队中没有人正在研究这个问题,但我认为如果您制作了一个补丁,我们没有理由不将其纳入其中。我看到的最大挑战是我们的句子分割器目前完全基于规则,因此这些类型的“软”决策相对难以合并。

针对您的情况的可能解决方案可能是使用语言模型“句子结尾”概率(三个选项,排名不分先后:https: //kheafield.com/code/kenlm/、https : //code.google.com/ p/berkeleylm/http://www.speech.sri.com/projects/srilm/)。然后,具有足够高的句子结尾概率的行结尾可以被分割为新句子。