2013-06-01 36 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上市。

編輯:我沒有注意到,第一次檢查有元數(當時首次降息是無用的)。當然另外默認應該去上面提到的地方。