WordPairStat.java :  » Natural-Language-Processing » Dragon-Toolkit » dragon » nlp » tool » xtract » Java Open Source

Java Open Source » Natural Language Processing » Dragon Toolkit 
Dragon Toolkit » dragon » nlp » tool » xtract » WordPairStat.java
package dragon.nlp.tool.xtract;

import dragon.nlp.compare.IndexSortable;

/**
 * <p>Couting word pair statistics </p>
 * <p> </p>
 * <p>Copyright: Copyright (c) 2005</p>
 * <p>Company: IST, Drexel University</p>
 * @author Davis Zhou
 * @version 1.0
 */

public class WordPairStat implements IndexSortable, Comparable{
    private int maxSpan, index;
    private int first, second;
    private int[] arrCount;
    private int totalCount;

    public WordPairStat(int first, int second, int maxSpan) {
        this.index =-1;
        this.maxSpan=maxSpan;
        this.first=first;
        this.second=second;
        arrCount=new int[2*maxSpan];
        for(int i=0;i<2*maxSpan;i++) arrCount[i]=0;
        totalCount=0;
    }

    public WordPairStat(int index, int first, int second, int maxSpan) {
        this.index =index;
        this.first=first;
        this.second=second;
        this.maxSpan =maxSpan;
        arrCount=new int[2*maxSpan];
        for(int i=0;i<2*maxSpan;i++) arrCount[i]=0;
        totalCount=0;
    }

    public WordPairStat copy(){
        WordPairStat stat;
        int i;

        stat=new WordPairStat(index,first, second, maxSpan);
        for(i=0;i<maxSpan;i++) stat.addFrequency(i-maxSpan,arrCount[i]);
        for(i=1;i<=maxSpan;i++) stat.addFrequency(i,arrCount[i+maxSpan-1]);
        return stat;
    }

    public void addFrequency(int span, int inc){
        if(span<0)
            arrCount[span+maxSpan]+=inc;
        else
            arrCount[span+maxSpan-1]+=inc;
        totalCount+=inc;
    }

    public int getFrequency(int span){
        if(span>0)
            return arrCount[span+maxSpan-1];
        else
            return arrCount[span+maxSpan];
    }

    public int getTotalFrequency(){
        return totalCount;
    }

    public void setIndex(int index){
        this.index=index;
    }

    public int getIndex(){
        return index;
    }

    public int getFirstWord(){
        return first;
    }

    public void setFirstWord(int word){
        this.first =word;
    }

    public int getSecondWord(){
        return second;
    }

    public void setSecondWord(int word){
        this.second=word;
    }

    public int compareTo(Object obj){
        int indexObj;

        indexObj=((WordPairStat)obj).getFirstWord();
        if(first==indexObj){
            indexObj=((WordPairStat)obj).getSecondWord();
            if(second==indexObj)
                return 0;
            else if(second>indexObj)
                return 1;
            else
                return -1;
        }
        else if(first>indexObj)
            return 1;
        else
            return -1;
    }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.