9

我正在从水上事故报告中提取因果语句。我在这里使用 NLTK 作为工具。我通过采用 20 个因果句子结构手动创建了我的 regExp 语法 [参见下面的示例]。构造的语法是类型

grammar = r'''Cause: {<DT|IN|JJ>?<NN.*|PRP|EX><VBD><NN.*|PRP|VBD>?<.*>+<VBD|VBN>?<.*>+}'''

现在语法在测试集上有 100% 的召回率(我建立了自己的玩具数据集,有 50 个因果句子和 50 个非因果句子),但精度很低。我想问一下:

  1. 如何训练 NLTK 自动构建正则表达式语法以提取特定类型的句子。
  2. 有没有人尝试过提取因果句子。示例因果句是:

    • 村里的卫生条件很差,因此她有健康问题。

    • 她村里的水不干净,因此她患上了寄生虫。

    • 由于村里的卫生条件差,她有健康问题。我只想从大文本中提取上述类型的句子。

4

1 回答 1

7

与本书的作者进行了简短的讨论:“Python Text Processing with NLTK 2.0 Cookbook”,Mr.Jacob Perkins。他说,“句子的通用语法非常困难。我想看看你是否能找到常见的标签模式并使用它们。但你基本上是通过正则表达式匹配进行分类。解析通常用于在一个句子, 或产生一个句子的深度解析树, 但你只是想识别/提取句子, 这就是为什么我认为分类是一种更好的方法. 当你尝试这个时, 考虑将标记的单词作为特征, 因为语法可能很重要。” 接受他的建议,我查看了我的因果句子,我发现这些句子有类似的词

consequently
as a result
Therefore
as a consequence
For this reason
For all these reasons
Thus
because
since
because of
on account of
due to
for the reason
so, that

这些词确实在一个句子中连接了因果关系。使用这些连接器现在很容易提取因果句子。详细报告可以在 arxiv 上找到:https ://arxiv.org/pdf/1507.02447.pdf

于 2012-10-25T23:49:39.593 回答