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