Prolog规则,将单词的单数形式更改为复数形式

时间:2019-04-30 11:37:06

标签: forms prolog plural

我正在尝试以序言语言编写一些规则,以将单数形式更改为复数形式,并希望支持编写规则。

2 个答案:

答案 0 :(得分:0)

我假设您想将英语单词复数。一种方法是有一条通用规则,还有一些针对特殊情况的特定规则。

% special cases
pluralize(deer, deer).
pluralize(mouse, mice).
pluralize(antenna, antennae).

% general rule
pluralize(Singular, Plural) :- atom_concat(Singular, s, Plural).

对于某些单词,这似乎可以:

?- pluralize(coin, X).
X = coins.

?- pluralize(date, X).
X = dates.

但是似乎有些话使它绊倒了

?- pluralize(fox, X).
X = foxs.

您可能会使规则更加智能。这就是我要开始的地方。

答案 1 :(得分:0)

您可以浏览本书“ Natural Language Processing for PROLOG Programmers”(第262-263页),该书描述了将单词的单数形式更改为复数形式的一些规则。我编写了一个适用于名词的简单程序。希望对您有所帮助。

    morphology(W, Wo):-
     (sub_atom(W,_, 2, 0, C), (C == sh; C = ch)); 
     (sub_atom(W,_,1,0,P), (P == s; P == z; P == x)) -> 
     atom_concat(W,es,Wo) ; 
     (sub_atom(W,Q,1,0,L), (L == y)) -> 
     sub_atom(W,_,Q,1,L1), atom_concat(L1,ies,Wo) ; 
     atom_concat(W,s,Wo).

    ? morphology('Age', S).
      S = 'Ages'.

    ? morphology(student, S).
      S = students.