首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SimpleNLG -使用“占位符”创建一个由2部分组成的句子

SimpleNLG -使用“占位符”创建一个由2部分组成的句子
EN

Stack Overflow用户
提问于 2014-08-18 22:00:05
回答 1查看 1.1K关注 0票数 2

有谁知道如何(使用SimpleNLG)创建一个像这样的恰当的“两部分”句子(我不是语言学家,所以我不确定每个单词/短语的句法类别是什么:

“我给买了一个新的小部件引擎,它创建了产品A、产品B和产品C。”

粗体文本将在运行时由语法分析器或其他什么东西动态插入。我阅读了SimpleNLG教程(似乎没有其他更深入的内容),然后尝试将一个PPPhraseSpec对象(表示上面句子的第二部分)附加到SPhraseSpec (其中有一个名词短语和动词短语),但是结果是无法理解的,在语法上是不正确的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-20 10:49:54

这是一个解决你的问题的方法:黑体的第一部分是语法宾语(名词短语),第二部分是动词“创建”的宾语(坐标从句)。

代码语言:javascript
复制
import simplenlg.realiser.english.Realiser;
import simplenlg.lexicon.Lexicon;
import simplenlg.phrasespec.*;
import simplenlg.framework.*;
import simplenlg.features.*;


public class Test {

    // Target:
    // I bought a new widget engine, 
    //   which created product A, product B, and product C.

    public static void main(String[] args) {
        System.out.println("Starting...");
        Lexicon lexicon = Lexicon.getDefaultLexicon();
        NLGFactory nlgFactory = new NLGFactory(lexicon);
        Realiser realiser = new Realiser(lexicon);

        SPhraseSpec s1 = nlgFactory.createClause("I",
            "bought", "a new widget engine");
        s1.setFeature(Feature.TENSE, Tense.PAST);

        SPhraseSpec s2 = nlgFactory.createClause("", "created");
        NPPhraseSpec object1 = nlgFactory.createNounPhrase("product A");
        NPPhraseSpec object2 = nlgFactory.createNounPhrase("product B");
        NPPhraseSpec object3 = nlgFactory.createNounPhrase("product C");

        CoordinatedPhraseElement cc = nlgFactory.createCoordinatedPhrase();
        cc.addCoordinate(object1);
        cc.addCoordinate(object2);
        cc.addCoordinate(object3);

        s2.setObject(cc);
        s2.setFeature(Feature.TENSE, Tense.PAST);

        s2.setFeature(Feature.COMPLEMENTISER, ", which"); // non-restrictive?
        s1.addComplement(s2);

        String output = realiser.realiseSentence(s1);
        System.out.println(output);
    }

}

我不是一个以英语为母语的人,而且经常弄错这个部分,但是我想你想要一个限制性的关系从句,而不是一个非限制性的:“我买了一个新的小部件引擎,创建了.”而不是“我买了一个新的小部件引擎,它创建了.”如果是这样的话,只需注释设置复杂程序的行即可。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25372720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档