我有这种模式来获得句子中名词短语之间的因果关系:
<NP I> * have * effect/impact on/in <NP II>
NP是Noun Phrase。
如果我有一句话:
Technology can have negative impact on social interactions
然后基于上述模式, NP I 与技术匹配, NP II 与社交互动 <匹配< / p>
问题:获得NP I和NP II的适当算法是什么?
由于
答案 0 :(得分:1)
正则表达式(RegEx)在这种情况下非常有用。以下正则表达式匹配您的字符串格式,并允许您分析输入的不同变量。
([\\w\\s]*?) (\\w*?) have (\\w*?) (effect|impact) (on|in) ([\\w\\s]*?)(\\.)
通过运行以下程序,您可以看到正则表达式匹配器组如何工作,组1是NP 1,组6是NP 2。
public class Regex {
public static void main(String[] args) {
Pattern p = Pattern.compile("([\\w\\s]*?) (\\w*?) have (\\w*?) (effect|impact) (on|in) ([\\w\\s]*?)(\\.)");
String s = "Greenhouse gases can have negative impact on global warming.";
Matcher m = p.matcher(s);
if (m.find()) {
for (int i = 0; i < m.groupCount(); i++) {
System.out.println("Group " + i + ": " + m.group(i));
}
}
}
}
在上面的示例中,分析了字符串"Greenhouse gases can have negative impact on global warming."
。以下是该程序的输出。
Group 0: Greenhouse gases can have negative impact on global warming.
Group 1: Greenhouse gases
Group 2: can
Group 3: negative
Group 4: impact
Group 5: on
Group 6: global warming