Package edu.stanford.nlp.tagger.maxent

Source Code of edu.stanford.nlp.tagger.maxent.PairsHolder

/**
* Title:       StanfordMaxEnt<p>
* Description: A Maximum Entropy Toolkit<p>
* Copyright:   The Board of Trustees of The Leland Stanford Junior University
* Company:     Stanford University<p>
*/

package edu.stanford.nlp.tagger.maxent;

import edu.stanford.nlp.ling.WordTag;

import java.util.*;

/** A simple class that maintains a list of WordTag pairs which are interned
*  as they are added.  This stores a tagged corpus.
*
@author Kristina Toutanova
@version 1.0
*/
public class PairsHolder {

  // todo: In Java 5+, just make this class an ArrayList<WordTag> and be done with it?? Or actually, probably a PaddedList. Or need a WindowedList?

  private final ArrayList<WordTag> arr = new ArrayList<WordTag>();

  public PairsHolder() {}

  // todo: This method seems crazy.  Can't we either just do nothing or using ensureCapacity()?
  public void setSize(int s) {
    while (arr.size() < s) {
      arr.add(new WordTag(null,"NN"))// todo: remove NN.  NA okay?
    }
  }

  public int getSize() {
    return arr.size();
  }

  void clear() {
    arr.clear();
  }

  /* -----------------
     CDM May 2008.  This method was unused.  But it also has a bug in it
     in that the equals() test can never succeed (Integer vs WordTag).
     So I'm commenting it out for now....
  public int[] getIndexes(Object wordtag) {
    ArrayList<Integer> arr1 = new ArrayList<Integer>();
    int l = wordtag.hashCode();
    Integer lO = Integer.valueOf(l);
    for (int i = 0; i < arrNum.size(); i++) {
      if (arrNum.get(i).equals(lO)) {
        arr1.add(Integer.valueOf(i));
      }
    }
    int[] ret = new int[arr1.size()];
    for (int i = 0; i < arr1.size(); i++) {
      ret[i] = arr1.get(i).intValue();
    }
    return ret;
  }
   */

  void add(WordTag wordtag) {
    arr.add(wordtag);
  }

  void setWord(int pos, String word) {
    arr.get(pos).setWord(word);
  }

  void setTag(int pos, String tag) {
    arr.get(pos).setTag(tag);
  }

  /* Methods unused. Commented for now:
  public void save(String filename) {
    try {
      DataOutputStream rf = IOUtils.getDataOutputStream(filename);
      int sz = arr.size();
      rf.writeInt(sz);
      for (int i = 0; i < sz; i++) {
        //save the wordtag in the file
        WordTag wT = arr.get(i);
        rf.writeUTF(wT.word());
        rf.writeUTF(wT.tag());
      }
      rf.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  public void read(String filename) {
    try {
      InDataStreamFile rf = new InDataStreamFile(filename);
      int len = rf.readInt();
      for (int i = 0; i < len; i++) {
        WordTag wT = new WordTag();
        wT.setWord(rf.readUTF());
        wT.setTag(rf.readUTF());
        add(wT);

      }
      rf.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  */

  String getTag(int position) {
    return arr.get(position).tag();
  }
  String getWord(int position) {
    return arr.get(position).word();
  }

  String getWord(History h, int position) {
    if (((h.current + position) >= h.start) && (h.current + position <= h.end)) {
      return arr.get(h.current + position).word();
    } else {
      return "NA";
    }
  }

  String getTag(History h, int position) {
    if (((h.current + position) >= h.start) && (h.current + position <= h.end)) {
      return arr.get(h.current + position).tag();
    } else {
      return "NA";
    }
  }
}
TOP

Related Classes of edu.stanford.nlp.tagger.maxent.PairsHolder

TOP
Copyright © 2018 www.massapi.com. 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.