【问题标题】:Sentence detection using NLP使用 NLP 进行句子检测
【发布时间】:2012-01-18 06:41:55
【问题描述】:

我正在尝试从大量文本中解析出句子。我使用 Java 开始使用 OpenNLP 和斯坦福的 Parser 等 NLP 工具。

但这是我卡住的地方。尽管这两个解析器都非常出色,但它们在处理非统一文本时却失败了。

例如,在我的文本中,大多数句子都由句点分隔,但在某些情况下(例如项目符号)却不是。在这里,两个解析都失败了。

我什至尝试在 stanford parses 中为多个句子终止符设置选项,但输出并没有好多少!

有什么想法吗??

编辑:为了更简单,我希望解析分隔符为换行符(“\n”)或句点(“.”)的文本...

【问题讨论】:

  • 您的文本是用 HTML 编码的吗?然后,您可以使用 HTML 结构查找项目符号列表等内容,并使用标准工具解析文本。
  • @larsmans 不是 html,只是纯文本!!!

标签: java nlp opennlp text-segmentation


【解决方案1】:

首先,您必须明确定义任务。确切地说,您对“句子”的定义是什么?除非你有这样的定义,否则你只会在圈子里徘徊。

其次,清理脏文本通常是与“句子拆分”完全不同的任务。各种 NLP 句子分块器都假设输入文本相对干净。从 HTML、提取的 powerpoint 或其他噪音到文本是另一个问题。

第三,斯坦福等大口径设备是统计的。因此,它们保证具有非零错误率。你的数据看起来越不像他们训练的那样,错误率就越高。

【讨论】:

  • 很有意义。只是让我意识到我必须清理我的数据,然后将其输入解析器。 (现在要找一个库来帮助我进行数据清理)
【解决方案2】:

编写一个自定义的分句器。您可以使用斯坦福分流器之类的东西作为第一次通过,然后编写基于规则的后处理器来纠正错误。

我为正在解析的生物医学文本做了类似的事情。我使用了 GENIA 分离器,然后在事后修复了一些东西。

编辑:如果您正在输入 HTML,那么您应该首先对其进行预处理,例如处理项目符号列表和其他内容。然后应用你的拆分器。

【讨论】:

  • 这是我想做的,因为斯坦福解析删除了句子中的所有 \n 字符,所以出现了问题。仍在努力寻找没有它们的工作方式。
  • @nflacco,这和我的情况一模一样!我正在使用 Stanford CoreNLP 在 GENIA 数据集上进行句子拆分,但有时它无法检测句子边界。我正在考虑通过测试正则表达式\.\s+[A-Z] 进行后处理。你同意吗?
  • 没错。您只需要列出常用缩写词 - Mr. Dr. 等 - 并结合正则表达式,您应该可以覆盖 99% 的断句边界。您还可以查看句子长度。我看到的常见情况是Dr.或者一些医学缩写被当成一个句子来处理。快点!句子没有 1 或 2 个单词。一些简单的规则很好地解决了这个问题。
【解决方案3】:

还有一个更出色的自然语言处理工具包 - GATE。它有许多句子拆分器,包括标准的 ANNIE 句子拆分器(不完全适合您的需要)和RegEx sentence splitter。稍后用于任何棘手的拆分。

适合您的确切管道是:

  1. 文档重置 PR。
  2. ANNIE 英语分词器。
  3. ANNIE 正则表达式分句器。

您还可以使用 GATE 的 JAPE rules 进行更灵活的模式搜索。 (请参阅Tao 了解完整的 GATE 文档)。

【讨论】:

    【解决方案4】:

    如果您想坚持使用斯坦福 NLP 或 OpenNLP,那么您最好重新训练模型。这些包中的几乎所有工具都是基于机器学习的。只有定制的训练数据,他们才能给你一个理想的模型和性能。

    这是我的建议:根据您的标准手动拆分句子。我想几千句话就够了。然后调用 API 或命令行来重新训练句子拆分器。那么你就完成了!

    但首先,您需要弄清楚的一件事是,正如之前的帖子中所说:“首先您必须明确定义任务。确切地说,您对'句子的定义是什么?”

    我在我的项目中使用了斯坦福 NLP 和 OpenNLP,Dishes Map,一个美味的菜肴发现引擎,基于 NLP 和机器学习。他们工作得很好!

    【讨论】:

      【解决方案5】:

      对于类似的情况,我所做的是根据我希望文本拆分的位置将文本分成不同的句子(用新行分隔)。与您的情况一样,它是以项目符号开头的文本(或者恰好是末尾带有“换行符”的文本)。如果您使用相同的 HTML,这也将解决可能发生的类似问题。 在将它们分成不同的行之后,您可以发送单独的行进行句子检测,这样会更正确。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-20
        • 1970-01-01
        • 1970-01-01
        • 2011-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多