循环术语的自然语言词(短语)

时间:2017-02-07 00:38:31

标签: nlp artificial-intelligence java-api opencyc

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

如何通过Java Api或SubL函数实现这一目标?

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

2 个答案:

答案 0 :(得分:1)

它可能会让其他读者感兴趣,你可以在OpenCyc中获得一些NL等价的Cyc术语,而不仅仅是ResearchCyc。

例如,如果您调用以下SubL ...

(生成短语#$ Dog)

...例如交互者你将获得它作为输出:

“狗” prettyString-规范 零 (#(0 NIL))

请注意,在(我的版本)OpenCyc中,#$ prettyString和#$ prettyString-Canonical上存在大量断言。正如DaveS建议的那样,您应该能够使用new-cyc-query查询这些内容。

ResearchCyc似乎没有#$ prettyString或#$ prettyString-Canonical但似乎使用更微妙的本体(一组谓词)来生成NL。我怀疑RCyc的NL gen知识的覆盖范围和灵活性要好于OCyc。

我在

上获得了这些结果

CycL修订级别:10.140388 当前KB:5022

答案 1 :(得分:0)

至少有三种不同的方法可以实现这一目标:

  1. 使用Cyc查询。下面是运行查询的SubL表单,但该查询可以通过Java API或Cyc浏览器轻松使用:

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

  2. 返回:

    (((?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")))
    
    1. 使用SubL生成表单:

      (生成短语#$ Coyote-Animal)

    2. 返回:

      "prairie wolf"
      #$singular
      
      1. 使用Java API:

        Paraphraser termParaphraser = getTermParaphraser();
        KbObject coyote = KbCollectionFactory.get("Coyote-Animal");
        String nl = termParaphraser.paraphrase(coyote).getString());
        
      2. 在此代码的最后,nl应设置为字符串" prairie wolf"。

        我不确定这个释义代码是否是API的1.0.0-Rrc4,但它绝对是1.0.0-rc5,目前可以从开发中下载的那个.cyc.com。