List 序言-查找替代词(同义词)
我想知道如何在Prolog中创建同义词查找器List 序言-查找替代词(同义词),list,dictionary,prolog,predicate,synonym,List,Dictionary,Prolog,Predicate,Synonym,我想知道如何在Prolog中创建同义词查找器 我这里有些话 word(likes). word(house). word(chair). 如果输入是likes,我想输出一个同义词,比如“loves”。或者对于house,我希望输出“home” 我想用同义词谓词来实现这一点,而不是将替代词添加为新词() 我已经做到了这一点: synonym (house,[home]). 我不确定从何处去。 < P>如果你愿意手动列举你的病例,我会考虑有一个谓词,“标准化”或“简化”词汇表。例如,类似这样的
我这里有些话
word(likes).
word(house).
word(chair).
如果输入是likes,我想输出一个同义词,比如“loves”。或者对于house,我希望输出“home”
我想用同义词谓词来实现这一点,而不是将替代词添加为新词()
我已经做到了这一点:
synonym (house,[home]).
我不确定从何处去。 < P>如果你愿意手动列举你的病例,我会考虑有一个谓词,“标准化”或“简化”词汇表。例如,类似这样的事情:
%% synonym(Synonym, CanonicalTerm) :- Synonym is a synonym for CanonicalTerm
synonym(loves, enjoys).
synonym(likes, enjoys).
synonym(enjoys, enjoys).
序言通常在第一个参数上建立索引,因此这种查找速度很快(肯定比枚举整个数据库和执行member/2
lookup要快)。然后,您可以在解析后或按需执行此步骤,并围绕规范术语编写规则
WordNet可能不考虑<代码>爱情和<代码>,比如是同义词,真的,所以它可能对你的需求造成过度的影响。
让我们将此应用于: 当然,这假设您也更新了present/4
事实。您想要的是,它可以方便地作为Prolog数据库提供。
?- 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'