有没有办法找到仍然有意义且至少包含一个主语,动词和谓词/宾语的句子的所有子句?
例如,如果我们有一句话,“我将在下个月在奥斯汀的SXSW举办关于NLP的研讨会” . 我们可以从这句话中提取以下有意义的子句:“我要去做一个研讨会”,“我要做一个关于NLP的研讨会”,“我将在SXSW做一个关于NLP的研讨会”,“我打算在SXSW做一个研讨会“,”我将在奥斯汀做一个研讨会“,”我将在下个月做一个关于NLP的研讨会“,等等 .
请注意,此处没有推断的句子(例如“下个月将在SXSW举行NLP研讨会” . 虽然这是真的,但我们不需要将此作为此问题的一部分 . ) . 所有生成的句子都是给定句子的一部分 .
我们如何解决这个问题呢?我正在考虑创建带注释的训练数据,该训练数据具有训练数据集中每个句子的一组合法子句子 . 然后编写一些监督学习算法来生成模型 .
我是NLP和机器学习的新手,所以如果你们能提出一些方法来解决这个问题,那将会很棒 .
4 回答
一种方法是使用诸如PCFG之类的解析器 . 试图训练模型来检测“子句”可能会受到数据稀疏性的影响 . 另外,我怀疑你是否可以写下一个非常干净和明确的子句定义,如果你不能定义它,你就不能让注释器为它注释 .
Hickl等人的论文题为"Using Discourse Commitments to Recognize Textual Entailment"讨论了话语承诺的提取(子句) . 本文包括他们的算法的描述,在某种程度上对规则进行操作 . 他们将它用于RTE,输出中可能会有一些最小程度的扣除 . 文本简化可能是一个相关的领域 .
您可以使用Stanford CoreNLP提供的依赖性解析器 . 您的句子的折叠输出将如下所示 .
句子输出的最后5个是可选的 . 您可以删除一个或多个对您的句子不重要的部分 .
大多数这些可选部分属于介词和修饰符,例如: prep_in, prep_do, advmod, tmod, etc . 见Stanford Dependency Manual .
例如,如果从输出中删除所有修饰符,则会得到
以下论文http://www.mpi-inf.mpg.de/~rgemulla/publications/delcorro13clausie.pdf处理来自斯坦福解析器的依赖关系并构造简单子句(文本简化) .
查看在线演示 - https://d5gate.ag5.mpi-sb.mpg.de/ClausIEGate/ClausIEGate