Package simplenlg.framework

Examples of simplenlg.framework.NLGElement


    if (children1.size() == children2.size()) {
      Periphery periph = Periphery.LEFT;

      for (int i = 0; i < children1.size(); i++) {
        NLGElement child1 = children1.get(i);
        NLGElement child2 = children2.get(i);
        ElementCategory cat1 = child1.getCategory();
        ElementCategory cat2 = child2.getCategory();
        DiscourseFunction func1 = (DiscourseFunction) child1
            .getFeature(InternalFeature.DISCOURSE_FUNCTION);
        DiscourseFunction func2 = (DiscourseFunction) child2
            .getFeature(InternalFeature.DISCOURSE_FUNCTION);

        if (cat1 == cat2 && func1 == func2) {
          pairs.add(FunctionalSet.newInstance(func1, cat1, periph,
              child1, child2));
View Full Code Here


    this.components = Arrays.asList(components);
  }

  public boolean formIdentical() {
    boolean ident = true;
    NLGElement firstElement = this.components.get(0);

    for (int i = 1; i < this.components.size() && ident; i++) {
      ident = firstElement.equals(components.get(i));
    }

    return ident;
  }
View Full Code Here

    if (wt.getTitle() != null) {
      t.setTitle(wt.getTitle());
    }

    for (simplenlg.xmlrealiser.wrapper.XmlNLGElement wp : wt.getChild()) {
      NLGElement p = UnwrapNLGElement(wp);
      t.addComponent(p);
    }

    return t;
  }
View Full Code Here

    if (wps instanceof simplenlg.xmlrealiser.wrapper.XmlDocumentElement) {
      return (NLGElement) UnwrapDocumentElement((simplenlg.xmlrealiser.wrapper.XmlDocumentElement) wps);
    }

    // Handle coordinate phrase specs first, which will cause recursion.
    NLGElement cp = UnwrapCoordinatePhraseSpec(wps);
    if (cp != null) {
      return cp;
    }

    // Literal text.
    if (wps instanceof simplenlg.xmlrealiser.wrapper.XmlStringElement) {
      simplenlg.xmlrealiser.wrapper.XmlStringElement wp = (simplenlg.xmlrealiser.wrapper.XmlStringElement) wps;
      NLGElement p = factory.createStringElement(wp.getVal());
      return p;
    }

    // WordElements (delegate to UnwrapWordElement) -- useful to have
    // because it is called by unWrapPhraseComponents, and pre/post mods
    // might be WordElements
    if (wps instanceof simplenlg.xmlrealiser.wrapper.XmlWordElement) {
      return UnwrapWordElement((simplenlg.xmlrealiser.wrapper.XmlWordElement) wps);
    }

    // Sentence
    else if (wps instanceof simplenlg.xmlrealiser.wrapper.XmlSPhraseSpec) {
      simplenlg.xmlrealiser.wrapper.XmlSPhraseSpec wp = (simplenlg.xmlrealiser.wrapper.XmlSPhraseSpec) wps;
      SPhraseSpec sp = factory.createClause();
      NLGElement vp = null;

      ArrayList<NLGElement> subjects = new ArrayList<NLGElement>();
      for (simplenlg.xmlrealiser.wrapper.XmlNLGElement p : wp.getSubj()) {
        NLGElement p1 = UnwrapNLGElement(p);
        checkFunction(simplenlg.features.DiscourseFunction.SUBJECT, p1);
        subjects.add(p1);
      }

      if (subjects.size() > 0) {
        sp.setFeature(InternalFeature.SUBJECTS, subjects);
      }

      if (wp.getVp() != null) {
        vp = UnwrapNLGElement(wp.getVp());
        sp.setVerbPhrase(vp);
      }

      if (wp.getCuePhrase() != null) {
        NLGElement cue = UnwrapNLGElement(wp.getCuePhrase());
        cue.setFeature(InternalFeature.DISCOURSE_FUNCTION,
            DiscourseFunction.CUE_PHRASE);
        sp.setFeature(Feature.CUE_PHRASE, cue);
      }

      if (wp.getCOMPLEMENTISER() != null) {
        sp.setFeature(Feature.COMPLEMENTISER, wp.getCOMPLEMENTISER());
      }

      setSFeatures(wp, sp, vp);

      // Common phrase components.
      UnwrapPhraseComponents(sp, wps);

      return sp;
    }

    // Phrases
    else if (wps instanceof simplenlg.xmlrealiser.wrapper.XmlPhraseElement) {
      simplenlg.xmlrealiser.wrapper.XmlPhraseElement we = (simplenlg.xmlrealiser.wrapper.XmlPhraseElement) wps;
      PhraseElement hp = null;
      simplenlg.xmlrealiser.wrapper.XmlWordElement w = we.getHead();
      NLGElement head = UnwrapWordElement(w);

      // Noun Phrase
      if (wps instanceof simplenlg.xmlrealiser.wrapper.XmlNPPhraseSpec) {
        simplenlg.xmlrealiser.wrapper.XmlNPPhraseSpec wp = (simplenlg.xmlrealiser.wrapper.XmlNPPhraseSpec) wps;
View Full Code Here

    // No initialisation.
  }

  @Override
  public NLGElement realise(NLGElement element) {
    NLGElement realisedElement = null;

    if (element != null) {
      ElementCategory category = element.getCategory();

      if (category instanceof DocumentCategory
          && element instanceof DocumentElement) {
        List<NLGElement> components = ((DocumentElement) element)
            .getComponents();

        switch ((DocumentCategory) category) {

        case SENTENCE:
          realisedElement = realiseSentence(components, element);
          break;

        case LIST_ITEM:
          if (components != null && components.size() > 0) {
            // recursively realise whatever's in the list item
            // NB: this will realise embedded lists within list
            // items
            realisedElement = new ListElement(realise(components));
          }
          break;

        default:
          ((DocumentElement) element)
              .setComponents(realise(components));
          realisedElement = element;
        }

      } else if (element instanceof ListElement) {
        // AG: changes here: if we have a premodifier, then we ask the
        // realiseList method to separate with a comma.
        StringBuffer buffer = new StringBuffer();
        List<NLGElement> children = element.getChildren();
        Object function = children.isEmpty() ? null : children.get(0)
            .getFeature(InternalFeature.DISCOURSE_FUNCTION);

        if (DiscourseFunction.PRE_MODIFIER.equals(function)) {
          realiseList(buffer, element.getChildren(), ",");
        } else {
          realiseList(buffer, element.getChildren(), "");
        }

        // realiseList(buffer, element.getChildren(), "");
        realisedElement = new StringElement(buffer.toString());

      } else if (element instanceof CoordinatedPhraseElement) {
        realisedElement = realiseCoordinatedPhrase(element
            .getChildren());

      } else {
        realisedElement = element;
      }

      // make the realised element inherit the original category
      // essential if list items are to be properly formatted later
      if (realisedElement != null) {
        realisedElement.setCategory(category);
      }
    }

    return realisedElement;
  }
View Full Code Here

   * @return the realised element as an <code>NLGElement</code>.
   */
  private NLGElement realiseSentence(List<NLGElement> components,
      NLGElement element) {

    NLGElement realisedElement = null;
    if (components != null && components.size() > 0) {
      StringBuffer realisation = new StringBuffer();
      realiseList(realisation, components, "");

      capitaliseFirstLetter(realisation);
View Full Code Here

    if (hp != null && wps != null) {
      simplenlg.xmlrealiser.wrapper.XmlPhraseElement wp = (simplenlg.xmlrealiser.wrapper.XmlPhraseElement) wps;

      for (simplenlg.xmlrealiser.wrapper.XmlNLGElement p : wp
          .getFrontMod()) {
        NLGElement p1 = UnwrapNLGElement(p);
        checkFunction(
            simplenlg.features.DiscourseFunction.FRONT_MODIFIER, p1);

        if (p1 != null) {
          hp.addFrontModifier(p1);
        }
      }

      for (simplenlg.xmlrealiser.wrapper.XmlNLGElement p : wp.getPreMod()) {
        NLGElement p1 = UnwrapNLGElement(p);
        checkFunction(
            simplenlg.features.DiscourseFunction.PRE_MODIFIER, p1);

        if (p1 != null) {
          hp.addPreModifier(p1);
        }
      }

      for (simplenlg.xmlrealiser.wrapper.XmlNLGElement p : wp
          .getPostMod()) {
        NLGElement p1 = UnwrapNLGElement(p);
        checkFunction(
            simplenlg.features.DiscourseFunction.POST_MODIFIER, p1);

        if (p1 != null) {
          hp.addPostModifier(p1);
        }
      }

      for (simplenlg.xmlrealiser.wrapper.XmlNLGElement p : wp.getCompl()) {
        NLGElement p1 = UnwrapNLGElement(p);

        // NB: set function to object by default, unless user set
        checkFunction(simplenlg.features.DiscourseFunction.OBJECT, p1);

        if (p1 != null) {
View Full Code Here

   *            no separator needed
   */
  private void realiseList(StringBuffer realisation,
      List<NLGElement> components, String listSeparator) {

    NLGElement realisedChild = null;

    for (int i = 0; i < components.size(); i++) {
      NLGElement thisElement = components.get(i);
      realisedChild = realise(thisElement);
      String childRealisation = realisedChild.getRealisation();

      // check that the child realisation is non-empty
      if (childRealisation != null && childRealisation.length() > 0
View Full Code Here

   *         <code>null</code> if the wrapper element is not a coordinate
   *         phrase.
   */
  public NLGElement UnwrapCoordinatePhraseSpec(
      simplenlg.xmlrealiser.wrapper.XmlNLGElement wps) {
    NLGElement ret = null;

    // CoordinatedPhraseElement
    if (wps instanceof simplenlg.xmlrealiser.wrapper.XmlCoordinatedPhraseElement) {
      simplenlg.xmlrealiser.wrapper.XmlCoordinatedPhraseElement wp = (simplenlg.xmlrealiser.wrapper.XmlCoordinatedPhraseElement) wps;
      CoordinatedPhraseElement cp = new CoordinatedPhraseElement();
      ElementCategory cat = UnwrapCategory(wp.getCat());
      if (cat != null && cat instanceof PhraseCategory) {
        cp.setCategory(cat);
      }
      if (wp.getConj() != null) {
        String s = wp.getConj();
        if (s != null) {
          cp.setConjunction(s);
        }
      }
      if (wp.getPERSON() != null) {
        cp.setFeature(Feature.PERSON, wp.getPERSON());
      }

      cp.setFeature(Feature.POSSESSIVE, wp.isPOSSESSIVE());

      for (simplenlg.xmlrealiser.wrapper.XmlNLGElement p : wp.getCoord()) {
        NLGElement p1 = UnwrapNLGElement(p);
        if (p1 != null) {
          cp.addCoordinate(p1);
        }

      }
View Full Code Here

   *            the components that make up the sentence.
   * @return the realised element as an <code>NLGElement</code>.
   */
  private NLGElement realiseCoordinatedPhrase(List<NLGElement> components) {
    StringBuffer realisation = new StringBuffer();
    NLGElement realisedChild = null;

    int length = components.size();

    for (int index = 0; index < length; index++) {
      realisedChild = components.get(index);
      if (index < length - 2
          && DiscourseFunction.CONJUNCTION.equals(realisedChild
              .getFeature(InternalFeature.DISCOURSE_FUNCTION))) {

        realisation.append(", "); //$NON-NLS-1$
      } else {
        realisedChild = realise(realisedChild);
        realisation.append(realisedChild.getRealisation()).append(' ');
      }
    }
    realisation.setLength(realisation.length() - 1);
    return new StringElement(realisation.toString().replace(" ,", ",")); //$NON-NLS-1$ //$NON-NLS-2$
  }
View Full Code Here

TOP

Related Classes of simplenlg.framework.NLGElement

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.