All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.cogroo.entities.Sentence Maven / Gradle / Ivy

There is a newer version: 4.3.1
Show newest version
/**
 * Copyright (C) 2012 cogroo 
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *         http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.cogroo.entities;

import java.io.Serializable;
import java.util.List;
import java.util.Objects;

import org.cogroo.entities.tree.Node;
import org.cogroo.entities.tree.TextModel;
import org.cogroo.util.ToStringHelper;

import opennlp.tools.util.Span;

/**
 * Data structure that represents a natural language sentence. The annotations
 * are added to the structure while the sentence is processed.
 * 
 * @author William Colen
 * 
 */
public class Sentence implements Serializable, TokenGroup {

  /**
	 * 
	 */
  private static final long serialVersionUID = -5370072688009577273L;

  /**
   * The original sentence that will be processed.
   */
  protected String sentence;

  /**
   * The sentence separated in tokens.
   */
  protected List tokens;

  /**
   * The sentence separated in chunks.
   */
  protected List chunks;

  /**
   * Tree structure of this sentence
   */
  private Node root;

  private int offset;

  private Span span;

  private String doc;

  /**
   * Gets the representation of the sentence as a plain text.
   * 
   * @return The sentence as a string.
   */
  public String toPlainText() {
    return this.sentence;
  }

  @Override
  public String toString() {
    return ToStringHelper.toStringHelper(this).add("sent", sentence)
        .add("tks", tokens).add("cks", chunks).add("root", root)
        // .add("offset", offset)
        .toString();
  }

  /**
   * Gets the original sentence.
   * 
   * @return the original sentence
   */
  public String getSentence() {
    if(sentence != null)
      return this.sentence;
    else if(doc != null) {
      return span.getCoveredText(doc).toString();
    } else {
      return null;
    }
  }
  
  public String getDocumentText() {
    return this.doc;
  }
  
  /**
   * Sets the original sentence.
   * 
   * @param sentence
   */
  public void setSentence(String sentence) {
    this.sentence = sentence;
  }

  public void setDocumentText(String document) {
    this.doc = document;
  }

  public void setSpan(Span aSpan) {
    this.span = aSpan;
  }

  public Span getSpan() {
    return this.span;
  }

  /**
   * Gets the Tokens of this sentence.
   * 
   * @return Array of Tokens
   */
  public List getTokens() {
    return this.tokens;
  }

  /**
   * Sets the Tokens of this sentence.
   * 
   * @param tokens
   */
  public void setTokens(List tokens) {
    this.tokens = tokens;
  }

  /**
   * Sets the Chunks of this sentence.
   * 
   * @return Array of Chunks
   */
  public List getChunks() {
    return this.chunks;
  }

  /**
   * Sets the Chunks of this sentence.
   * 
   * @param chunks
   */
  public void setChunks(List chunks) {
    this.chunks = chunks;
  }

  private List syntacticChunks = null;

private org.cogroo.text.Sentence newSentence;

  public List getSyntacticChunks() {
    return syntacticChunks;
  }

  public void setSyntacticChunks(List sc) {
    syntacticChunks = sc;
  }

  public void setRoot(Node root) {
    this.root = root;
  }

  public synchronized Node getRoot() {
    if (this.root != null) {
      return root;
    }
    synchronized (this) {
      if (this.root == null) {
        TextModel model = new TextModel(this);
        this.root = model.getRoot();
      }
      return root;
    }
  }

  public void setOffset(int offset) {
    this.offset = offset;
  }

  public int getOffset() {
    return offset;
  }

  public String getSyntaxTree() {
    return getRoot().toSyntaxTree();
  }

  public String getTree() {
    return getRoot().toString();
  }

  @Override
  public boolean equals(Object object) {
    if (object instanceof Sentence) {
      Sentence that = (Sentence) object;
      return Objects.equals(this.sentence, that.sentence)
          && Objects.equals(this.tokens, that.tokens)
          && Objects.equals(this.chunks, that.chunks)
          && Objects.equals(this.root, that.root)
          && Objects.equals(this.offset, that.offset);
    }
    return false;
  }
  
  /* (non-Javadoc)
   * @see java.lang.Object#hashCode()
   */
  @Override
  public int hashCode() {
    return Objects.hash(this.sentence, this.tokens, this.chunks, this.root, this.offset);
  }

	public void setTextSentence(org.cogroo.text.Sentence sentence2) {
		this.newSentence = sentence2;
	}
	
	public org.cogroo.text.Sentence getTextSentence() {
		return this.newSentence;
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy