Package edu.illinois.lis.feedback

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

package edu.illinois.lis.feedback;

import java.text.DecimalFormat;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import cc.twittertools.thrift.gen.TResult;
import edu.illinois.lis.document.FeatureVector;
import edu.illinois.lis.query.GQuery;
import edu.illinois.lis.utils.KeyValuePair;
import edu.illinois.lis.utils.ScorableComparator;
import edu.illinois.lis.utils.Stopper;


public abstract class FeedbackModel {
  protected List<TResult> relDocs;
  protected GQuery originalQuery;
  protected int fbDocCount  = 20;
  protected int fbTermCount = 20;
  protected List<KeyValuePair> features;    // these will be KeyValuePair objects
  protected Stopper stopper;
 
 
 
  public void build(Stopper stopper) {
    this.stopper = stopper;
  }
 

 
  public GQuery asGquery() {
    GQuery newQuery = new GQuery();
    newQuery.setTitle(originalQuery.getTitle());
    newQuery.setText(originalQuery.getText());
   
    FeatureVector finalVector = new FeatureVector(stopper);
   
    ScorableComparator comparator = new ScorableComparator(true);
    Collections.sort(features, comparator);
    Iterator<KeyValuePair> it = features.iterator();
   
    int i=0;
    while(it.hasNext() && i++ < fbTermCount) {     
      KeyValuePair tuple = it.next();
      finalVector.addTerm(tuple.getKey(), tuple.getScore());
    }
   
    newQuery.setFeatureVector(finalVector);
   
    return newQuery;
  }

  public FeatureVector asFeatureVector() {
    FeatureVector f = new FeatureVector(stopper);
    Iterator<KeyValuePair> it = features.iterator();
   
    while(it.hasNext()) {     
      KeyValuePair tuple = it.next();
      f.addTerm(tuple.getKey(), tuple.getScore());
   
   
    return f;
  }
 
  public Map<String,Double> asMap() {
    Map<String,Double> map = new HashMap<String,Double>(features.size());
    Iterator<KeyValuePair> it = features.iterator();
    while(it.hasNext()) {
      KeyValuePair tuple = it.next();
      map.put(tuple.getKey(), tuple.getScore());
    }

    return map;
  }
 
  @Override
  public String toString() {
    return toString(features.size());
  }
 
  public String toString(int k) {
    DecimalFormat format = new DecimalFormat("#.#####################");


   
    ScorableComparator comparator = new ScorableComparator(true);
    Collections.sort(features, comparator);
   
    double sum = 0.0;
    Iterator<KeyValuePair> it = features.iterator();
    int i=0;
    while(it.hasNext() && i++ < k) {     
      sum += it.next().getScore();
    }
   
    StringBuilder b = new StringBuilder();
    it = features.iterator();
    i=0;
    while(it.hasNext() && i++ < k) {     
      KeyValuePair tuple = it.next();
      b.append(format.format(tuple.getScore()/sum) + " " + tuple.getKey() + "\n");
    }
   
    return b.toString();
  }
 

  public void setRes(List<TResult> relDocs) {
    this.relDocs = relDocs;
  }
  public void setOriginalQuery(GQuery originalQuery) {
    this.originalQuery = originalQuery;
  }
  public void setFbTermCount(int fbTermCount) {
    this.fbTermCount = fbTermCount;
  }
 
 
 
 
}
TOP

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

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.