Package edu.illinois.lis.feedback

Source Code of edu.illinois.lis.feedback.FeedbackRelevanceModel

package edu.illinois.lis.feedback;

import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;

import cc.twittertools.thrift.gen.TResult;

import edu.illinois.lis.document.FeatureVector;
import edu.illinois.lis.utils.Stopper;
import edu.illinois.lis.utils.KeyValuePair;




public class FeedbackRelevanceModel extends FeedbackModel {
  private boolean stripNumbers = false;
  private double[] docWeights = null;
 
  @Override
  public void build(Stopper stopper) {
    this.stopper = stopper;
    try {
      Set<String> vocab = new HashSet<String>();
      List<FeatureVector> fbDocVectors = new LinkedList<FeatureVector>();

     

      double[] rsvs = new double[relDocs.size()];
      int k=0;
      Iterator<TResult> hitIterator = relDocs.iterator();
      while(hitIterator.hasNext()) {
        TResult hit = hitIterator.next();
        rsvs[k++] = hit.getRsv();
      }
     
      hitIterator = relDocs.iterator();
      while(hitIterator.hasNext()) {
        TResult hit = hitIterator.next();
        String text = hit.getText().toLowerCase();
        FeatureVector docVector = new FeatureVector(text, stopper);
        vocab.addAll(docVector.getFeatures());
        fbDocVectors.add(docVector);
      }

      features = new LinkedList<KeyValuePair>();

     
      Iterator<String> it = vocab.iterator();
      while(it.hasNext()) {
        String term = it.next();       
        double fbWeight = 0.0;

        Iterator<FeatureVector> docIT = fbDocVectors.iterator();
        k=0;
        while(docIT.hasNext()) {
          double docWeight = 1.0;
          if(docWeights != null)
            docWeight = docWeights[k];
          FeatureVector docVector = docIT.next();
          double docProb = docVector.getFeaturetWeight(term) / docVector.getLength();
          docProb *= rsvs[k++] * docWeight;

          fbWeight += docProb;
        }
       
        fbWeight /= (double)fbDocVectors.size();
       
        KeyValuePair tuple = new KeyValuePair(term, fbWeight);
        features.add(tuple);
      }
     
     
     
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
 
  public void setDocWeights(double[] docWeights) {
    this.docWeights = docWeights;
  }


}
TOP

Related Classes of edu.illinois.lis.feedback.FeedbackRelevanceModel

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.