我正在从事“自​​然语言生成”任务,需要检索与Cyc术语等效的自然语言单词或短语。例如。 “#$ EatingEvent”->“ eat”或“#$ Coyote-Animal”->“土狼”。

如何通过Java Api或SubL函数来实现?

我正在使用Research Cyc 4.0q KB和Cyc Core API Suite v1.0.0-rc4。

最佳答案

至少可以通过三种不同的方式来实现:


使用Cyc查询。以下是用于运行查询的SubL表单,但是该查询可以轻松地与Java API或通过Cyc浏览器一起使用:

(new-cyc-query'(## termPhrases#$ Coyote-Animal#$ CharacterString?X)#$ InferencePSC'(:max-number 1))


返回:

(((?X . "prairie wolf")))


如果您只要求一个答案,则可以得到很多答案:

(new-cyc-query '(#$termPhrases #$Coyote-Animal #$CharacterString ?X) #$InferencePSC )


返回:

(((?X . "Canis latrans"))
 ((?X . "coyote (C. latrans)"))
 ((?X . "C. latrans"))
 ((?X . "prairie wolves"))
 ((?X . "coyotes"))
 ((?X . "coyote"))
 ((?X . "prairie wolf")))



使用SubL生成表格:

(生成短语#$土狼-动物)


返回:

"prairie wolf"
#$singular



使用Java API:

Paraphraser termParaphraser = getTermParaphraser();
KbObject coyote = KbCollectionFactory.get("Coyote-Animal");
String nl = termParaphraser.paraphrase(coyote).getString());



在此代码的末尾,应将nl设置为字符串“ prairie wolf”。

我不确定该释义代码是否为API的1.0.0-Rrc4,但绝对位于1.0.0-rc5中,目前可从dev.cyc.com下载。

07-24 19:34