2012-05-15 58 views
0

我有這樣的模式來獲得句子中的名詞短語之間的因果關係:如何獲得句子中名詞短語之間的關係?

<NP I> * have * effect/impact on/in <NP II> 

NP是名詞短語。

如果我有一句話:

Technology can have negative impact on social interactions 

然後根據上面的圖案,NP我匹配技術NP II匹配社會交往

的問題: NP I和NP II的適當算法是什麼?

謝謝

+0

你不妨讓你的問題更具體,作爲識別句子一般名詞短語的算法將是相當複雜的,需要的工作時間編制的關鍵詞列表中的句子來識別。 – Vulcan

+0

我剛剛意識到我可能誤解了你的問題;現在發佈答案。 – Vulcan

+0

@Vulcan對不起,我添加了一個更好解釋的例子。謝謝。 –

回答

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 
+0

感謝瓦肯人! :) –

相關問題