任何人都可以帮我显示未翻译的单词吗?例如,我想要翻译,'我想吃',事实上,没有任何争论......所以它会显示'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你'
答案 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 (然后第一次检查没用)。当然另一个默认值应该在上面提到的地方。