Слово (фраза) на естественном языке для семестра

Я работаю над задачей "Создание естественного языка" и мне нужно получить слово или фразу на естественном языке, эквивалентную термину Cyc. Например, "#$EatingEvent" -> "eat" или "#$Coyote-Animal" -> "coyote".

Как это может быть достигнуто через Java Api или функцию SubL?

Я использую Research Cyc 4.0q KB и Cyc Core API Suite v1.0.0-rc4.

2 ответа

Решение

Есть как минимум три разных способа добиться этого:

  1. Используйте 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")))
  1. Используйте форму генерации SubL:

    (генерировать фразу #$Coyote-Animal)

Это возвращает:

"prairie wolf"
#$singular
  1. Используйте API Java:

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

В конце этого кода в nl должна быть указана строка "волк прерии".

Я не уверен, является ли этот код перефразера 1.0.0-Rrc4 API, но он определенно в 1.0.0-rc5, который в настоящее время можно загрузить с dev.cyc.com.

Другим читателям может быть полезно заметить, что вы также можете получить некоторые NL-эквиваленты терминов Cyc в OpenCyc, а не только ResearchCyc.

Например, если вы вызываете следующий SubL...

(генерировать фразу # $ Dog)

... например, в Interactor вы получите это как вывод:

"собака" prettyString-Canonical NIL (#( 0 NIL))

Обратите внимание, что существует множество утверждений о #$prettyString и #$prettyString-Canonical в (моей версии) OpenCyc. Как предполагает DaveS, вы должны иметь возможность запрашивать их, используя new-cyc-query.

ResearchCyc, по-видимому, не имеет #$prettyString или #$prettyString-Canonical, но, похоже, использует более тонкую онтологию (набор предикатов) для генерации NL. Я подозреваю, что охват и гибкость знания генов NL в RCyc лучше, чем в OCyc.

Я получил эти результаты на

Уровень редакции CycL: 10.140388 Текущий КБ: 5022

Другие вопросы по тегам