用prolog翻译一个句子
有人能帮我显示未翻译的单词吗?例如,我想翻译“我想吃”,事实上,没有to的参数…因此它将显示“saya mahutomakan”…单词to保持不变,需要显示它..这是我的代码示例用prolog翻译一个句子,prolog,word,translate,Prolog,Word,Translate,有人能帮我显示未翻译的单词吗?例如,我想翻译“我想吃”,事实上,没有to的参数…因此它将显示“saya mahutomakan”…单词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
:-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”,但我需要在输出中显示它--->“i benci you”尝试在切割后添加一个“全部捕获”规则
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).
当规则数据库中列出了更合适的规则时,剪切可确保默认值不被使用
编辑:我没有注意到第一次检查有arity3(然后第一次剪切没有用)。当然,另一个违约应该发生在上面提到的地方