翻译prolog中的句子

时间:2013-06-01 06:00:44

标签: prolog word translate

任何人都可以帮我显示未翻译的单词吗?例如,我想要翻译,'我想吃',事实上,没有任何争论......所以它会显示'saya mahu to makan'...单词 to 保持不变,需要显示它..这是我的代码示例..

:-dynamic(item/1).

kamus(saya,i).
kamus(suka,love).
kamus(awak,you).

run:-
  write('Enter a sentence:'),
  read(V),
  printed(V,C). 

%malay to eng

check(S,W,R):-
  kamus(R,S),name(S,W).

%eng to malay

check(S,W,R):-
  kamus(S,R),name(S,W).

check(Y,R):-
  item(Z),name(Z,Y).

try2(P,R):- 
  name(P,Q),
  split(Q,32,E),
  member(Z,E),
  assert(item(Z)),
  (check(Y,R);check(S,W,R)),Z=W.

printed(V,C):- 
  try2(V,C),write(C),write(' '),fail.

split(String, Space, [Word|List]) :-
  append(Word, [Space|Tail], String),
  !,
  split(Tail, Space, List).

split(String, _Space, [String]).

输出示例:

?-run.
Enter the sentence : 'saya benci awak'.

i you no.

**事实上没有'benci',但我需要它在输出中显示---> '我benci你'

1 个答案:

答案 0 :(得分:2)

尝试在切割成瘾之后添加“全能”规则

check(S,W,R):-
  kamus(S,R),name(S,W), !.

% after edit. HTH    
check(S,_,R):-
  name(S,R).

check(Y,R):-
  item(Z),name(Z,Y), !.

check(Y,Y).

cut确保在规则db中列出更合适的规则时未使用默认值。

编辑:我没有注意到第一次检查有 3 (然后第一次检查没用)。当然另一个默认值应该在上面提到的地方。