2017-02-07 2 views
0

Je travaille sur la tâche de génération de langage naturel et j'ai besoin de récupérer un mot en langage naturel ou une expression équivalent d'un terme Cyc. Par exemple. "# $ EatingEvent" -> "manger" ou "# $ Coyote-Animal" -> "coyote".Mot langage naturel (expression) pour le terme cyc

Comment cela peut-il être réalisé via la fonction Java Api ou SubL? J'utilise Research Cyc 4.0q KB et Cyc Core API Suite v1.0.0-rc4.

Répondre

0

Il existe au moins trois façons différentes, vous pouvez y parvenir:

  1. Utilisez une requête Cyc. Voici le formulaire SubL pour exécuter la requête, mais la requête peut être utilisée facilement avec l'API Java ou via le navigateur Cyc:

    (new-cyc-query '(# $ termPhrases # $ Coyote-Animal # $ CharacterString ? X) # $ InferencePSC « (: max numéro 1))

Ce retour:

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

Si vous ne demandez pas une seule réponse, vous pouvez obtenir beaucoup d'entre eux:

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

Ce retour:

(((?X . "Canis latrans")) 
((?X . "coyote (C. latrans)")) 
((?X . "C. latrans")) 
((?X . "prairie wolves")) 
((?X . "coyotes")) 
((?X . "coyote")) 
((?X . "prairie wolf"))) 
  1. Utilisez une forme de génération SUBL:

    (génération Phrase # $ Coyote-animal)

Cette renvoie:

"prairie wolf" 
#$singular 
  1. utiliser l'API Java:

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

A la fin de ce code, nl doit être réglé sur la chaîne "loup de prairie". Je ne suis pas sûr si ce code paraphraser est le 1.0.0-Rrc4 de l'API, mais il est certainement en 1.0.0-rc5, celui qui est actuellement téléchargeable à partir de dev.cyc.com.

+0

Cela tombe bien, exactement ce que je cherchais. @DaveS, pouvez-vous suggérer des matériaux sur la documentation SubL (au moins la description des commandes)? J'ai pu trouver quelques informations sur le vieux site cyc.com, mais cela semble impossible maintenant car ils ont changé le design et la plupart des anciens liens sont indisponibles. Merci! –

0

Il peut être avantageux pour d'autres lecteurs de noter que vous pouvez également obtenir des équivalents NL de termes Cyc dans OpenCyc, pas seulement ResearchCyc.

Par exemple, si vous appelez la SUBL suivante ...

(génération Phrase # $ Dog)

... en exemplele Interactor vous obtiendrez ce que la sortie:

"chien" prettyString-Canonique NIL (# (0 NIL))

Notez qu'il existe un bon nombre d'affirmations sur # $ prettyString et # $ prettyString-Canonical dans (ma version de) OpenCyc. Comme le suggère DaveS, vous devriez pouvoir les interroger en utilisant new-cyc-query.

ResearchCyc ne semble pas avoir # $ prettyString ou # $ prettyString-Canonical, mais semble utiliser une ontologie plus subtile (un ensemble de prédicats) pour générer NL. Je soupçonne que la couverture et la flexibilité de la connaissance de la génération NL dans RCyc est meilleure que OCyc.

J'ai obtenu ces résultats sur

niveau de révision CycL: 10,140388 KB actuelle: 5022