【问题标题】:Prolog - Finding alternative words (synonyms)Prolog - 寻找替代词(同义词)
【发布时间】:2017-12-07 23:12:38
【问题描述】:

我正试图弄清楚如何在 Prolog 中创建同义词查找器。


我有话要说……

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

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

我想使用同义词谓词而不是将替代词添加为新词()。

我已经做到了:

synonym (house,[home]).

我不知道从这里去哪里。

【问题讨论】:

  • 你想要的是WordNet,它可以作为 Prolog 数据库方便地使用。

标签: list dictionary prolog predicate synonym


【解决方案1】:

如果您愿意手动列举您的案例,我会考虑使用“规范化”或“简化”词汇表的谓词。例如,这样的事情:

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

Prologs 通常在第一个参数上建立索引,因此这种查找会很快(肯定比枚举整个数据库并执行member/2 查找要快)。然后您可以在解析后或按需执行此步骤,并围绕规范术语编写您的规则。

WordNet 可能不认为 love 和 like 是同义词,真的,所以它可能对您的需求来说是多余的。

让我们把它应用到earlier question:

?- 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 事实。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-02
    • 2011-02-24
    • 2019-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多