正則表達式(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
你不妨讓你的問題更具體,作爲識別句子一般名詞短語的算法將是相當複雜的,需要的工作時間編制的關鍵詞列表中的句子來識別。 – Vulcan
我剛剛意識到我可能誤解了你的問題;現在發佈答案。 – Vulcan
@Vulcan對不起,我添加了一個更好解釋的例子。謝謝。 –