【问题标题】:Translate a sentence in prolog在序言中翻译一个句子
【发布时间】:2013-05-28 00:04:50
【问题描述】:

谁能帮我显示未翻译的单词?比如我想翻译,'我想吃',其实to没有参数...所以它会显示'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',但我需要它显示在输出中--->'i benci you'

【问题讨论】:

    标签: prolog word translate


    【解决方案1】:

    尝试在切上瘾之后添加“包罗万象”规则

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

    cuts 确保在您的规则数据库中列出了更合适的规则时不使用默认值。

    edit:我没有注意到第一个检查有 3 的数量(然后第一个切割没用)。当然另一个默认应该去上面提到的地方。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-20
      相关资源
      最近更新 更多