Prolog-查找替代单词(同义词)



我正在尝试弄清楚如何在prolog中创建同义词。


我在这里有一些话...

word(likes).
word(house).
word(chair).

如果输入是喜欢的,我想输出一个同义词,例如"爱"。或者对于房子,我想输出"家"。

我想用同义词谓词来做到这一点,而不是将替代单词添加为一个新词()。

我已经这样做了:

synonym (house,[home]).

我不确定从这里去哪里。

如果您愿意手动列举案件,我会考虑具有"归一化"或"简化"词汇的谓词。例如,类似的东西:

%% synonym(Synonym, CanonicalTerm) :- Synonym is a synonym for CanonicalTerm
synonym(loves,  enjoys).
synonym(likes,  enjoys).
synonym(enjoys, enjoys).

prologs通常索引第一个参数,因此此查找会很快(肯定比枚举整个数据库并进行member/2查找更快)。然后,您可以在解析或按需执行此步骤,然后围绕规范术语进行编码。

WordNet可能不认为lovelike是同义词,因此它可能满足您的需求。

让我们将其应用于早期的问题:

?- phrase(sentence(np(Noun,_), vp(Verb, np(Object, _))),
   [a,teenage,boy,loves,a,big,problem]), 
   synonym(Verb, CanonicalVerb),
   present(Suggestion, Noun, CanonicalVerb, Object).
Noun = boy,
Verb = loves,
CanonicalVerb = enjoys,
Object = problem,
Suggestion = 'construction kit' 

当然,这也假定您还更新present/4事实。

最新更新