使用NLTK python提取因果句

时间:2012-10-25 12:17:09

标签: nlp nltk

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

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

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

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

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

    • 她村里的水不纯净,因此,她受了苦 来自寄生虫。

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

1 个答案:

答案 0 :(得分:7)

与该书的作者进行了简短的讨论:“使用NLTK 2.0 Cookbook进行Python文本处理”,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