Слово (фраза) на естественном языке для семестра
Я работаю над задачей "Создание естественного языка" и мне нужно получить слово или фразу на естественном языке, эквивалентную термину Cyc. Например, "#$EatingEvent" -> "eat" или "#$Coyote-Animal" -> "coyote".
Как это может быть достигнуто через Java Api или функцию SubL?
Я использую Research Cyc 4.0q KB и Cyc Core API Suite v1.0.0-rc4.
2 ответа
Есть как минимум три разных способа добиться этого:
Используйте 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:
(генерировать фразу #$Coyote-Animal)
Это возвращает:
"prairie wolf"
#$singular
Используйте 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