2013-06-01 50 views
3

任何人都可以帮助我显示未翻译的单词吗?例如我想翻译,'我想吃',其实没有争论...所以它会显示'saya mahu makan'...单词保持不变它是与需要显示it..this是我的代码的示例..输出的在prolog中翻译一个句子

:-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你'

回答

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). 

削减确保后,默认的时候有更合适的规则没有订婚,你的规则DB上市。

编辑:我没有注意到,第一次检查有元数(当时首次降息是无用的)。当然另外默认应该去上面提到的地方。