我正在从事“自然语言生成”任务,需要检索与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下载。