5

解析ツリーを異なる順序で別の解析ツリーに転送する方法を見つける必要があります。SVO と SOV アーキテクチャの 2 つの言語を使用した機械翻訳プロジェクト用です。

t1 = s(np(n(he)), vp( v(went), np(n(home))))

そしてそうであってほしい

t2 = s(np(n(he)), vp( np(n(home)), v(went)))

t1 は SVO 言語を表し、t2 は SOV 言語アーキテクチャを表すという規則に従います。

また、ルール セットは、形容詞と副詞を含む複雑な文にも適用できる必要があります。

t1 = s(np(n(he)), vp( v(went), np(adj(his), n(home))))

t2 = s(np(n(he)), vp( np(adj(his), n(home)), v(went)))

どんなコメントも役に立ちます

ありがとうマシー

4

1 に答える 1

2

より簡単な方法は、パターン マッチングと、任意のパターンで再帰的に機能する一般的なルールを介して、実行する変換を宣言することです。

% specialize for VP
transfer(vp(X,Y), vp(V,U)) :- !,
    transfer(X,U), transfer(Y,V).

% generic rule, work out arguments
transfer(X, Y) :-
    X =.. [F|Xs],
    maplist(transfer, Xs, Ys),
    Y =.. [F|Ys].

プログラムが双方向で動作できるようにする必要がある場合は、一般的なルールで変数のインスタンス化を確認してください

transfer(X, Y) :-
    nonvar(X), !, X =.. [F|Xs],
    maplist(transfer, Xs, Ys),
    Y =.. [F|Ys].
transfer(X, Y) :-
    Y =.. [F|Ys],
    maplist(transfer, Xs, Ys),
    X =.. [F|Xs].

利回り(例)

?- transfer(s(np(n(he)), vp( v(went), np(adj(his), n(home)))),T2).
T2 = s(np(n(he)), vp(np(adj(his), n(home)), v(went))).

?- transfer(T1,$T2).
T1 = s(np(n(he)), vp(v(went), np(adj(his), n(home)))).
于 2013-10-25T06:30:46.437 に答える