8

I am trying to parse out sentences from a huge amount of text. using java I started off with NLP tools like OpenNLP and Stanford's Parser.

But here is where i get stuck. though both these parsers are pretty great they fail when it comes to a non uniform text.

For example in my text most sentences are delimited by a period, but in some cases like bullet points they aren't. Here both the parses fail miserably.

I even tried setting the option in the stanford parses for multiple sentence terminators but the output was not much better!

Any ideas??

Edit :To make it simpler I am looking to parse text where the delimiter is either a new line ("\n") or a period(".") ...

4

5 回答 5

6

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

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

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

于 2011-12-14T02:20:10.840 回答
3

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

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

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

于 2011-12-13T19:32:29.257 回答
1

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

用于您目的的确切管道是:

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

您还可以使用 GATE 的JAPE 规则进行更灵活的模式搜索。(有关完整的 GATE 文档,请参阅Tao)。

于 2011-12-12T14:52:56.813 回答
1

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

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

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

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

于 2013-07-18T18:23:00.920 回答
0

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

于 2011-12-12T11:23:31.320 回答