我想将我的句子与多个CoreNlp SemgrexPatterns相匹配。 我可能有30多个SemgrexPattern,我想看看哪种模式与句子匹配。
我尝试使用嵌套的if- else将句子与每个匹配项进行比较。
SemanticGraph dependencies = sentence.get(SemanticGraphCoreAnnotations.EnhancedPlusPlusDependenciesAnnotation.class);
SemgrexPattern pat = SemgrexPattern.compile("A <dobj B");
SemgrexMatcher mat = pat.matcher(dependencies, true);
if(mat.find())
{
// some code
}
else
{
SemgrexPattern pat2 = SemgrexPattern.compile("A >nmod B");
SemgrexMatcher mat2 = pat2.matcher(dependencies, true);
if(mat2.find())
{
// some code
}
else
{
SemgrexPattern pat3 = SemgrexPattern.compile("A >someotherrelation B");
SemgrexMatcher mat3 = pat3.matcher(dependencies, true);
if(mat3.find())
{
// some code
}
else
{
System.out.println("Sentence doesnt match against any pattern");
}
}
}
有一些简单的方法可以做到这一点。喜欢使用循环和列表? 还是一些预定义的方法来匹配corenlp库中多个模式的句子?