有没有一种方法可以找到一个句子中仍然有意义并且至少包含一个主语、动词和谓语/宾语的所有子句子?
例如,如果我们有这样的句子“下个月我将在奥斯汀的 SXSW 上举办 NLP 研讨会”。我们可以从这句话中提取出以下有意义的子句:“我要去参加一个研讨会”,“我要去参加一场关于 NLP 的研讨会”,“我要去参加 SXSW 上的 NLP 研讨会”,“我要去 SXSW 做一个研讨会”、“我要去奥斯汀做一个研讨会”、“下个月我要去 NLP 做一个研讨会”等等。
请注意,这里没有推导的句子(例如“下个月将在 SXSW 举办 NLP 研讨会”。尽管这是事实,但我们不需要将其作为该问题的一部分。)。所有生成的句子都是给定句子的严格组成部分。
我们如何解决这个问题?我正在考虑创建带注释的训练数据,该数据对于训练数据集中的每个句子都有一组合法的子句子。然后编写一些监督学习算法来生成模型。
我对 NLP 和机器学习还很陌生,所以如果你们能提出一些解决这个问题的方法,那就太好了。
最佳答案
您可以使用 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 。
例如,如果从输出中删除所有修饰符,您将得到
I am going to do a seminar on NLP at SXSW in Austin.
关于parsing - 从句子中找到有意义的子句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8974090/