0

文中の名詞句間の因果関係を取得するには、次のパターンがあります。

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

NPは名詞句です。

文がある場合:

Technology can have negative impact on social interactions

次に、上記のパターンに基づいて、NP Iはテクノロジーと一致し、 NP IIは社会的相互作用と一致します。

質問: NP I と NP II を取得するための適切なアルゴリズムは何ですか?

ありがとう

4

1 に答える 1

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
于 2012-05-15T08:22:11.903 に答える