Beispiel #1
0
 public double dotproduct(TermVectorDouble v) {
   if (size() > v.size()) return v.dotproduct(this);
   double dotproduct = 0;
   for (Object2DoubleMap.Entry<String> entry : object2DoubleEntrySet()) {
     dotproduct += v.getDouble(entry.getKey()) * entry.getValue();
   }
   return dotproduct;
 }
Beispiel #2
0
 public double cossim(TermVectorDouble v) {
   double dotproduct = 0;
   for (Object2DoubleMap.Entry<String> entry : object2DoubleEntrySet()) {
     dotproduct += v.getDouble(entry.getKey()) * entry.getValue();
   }
   double magnitude = magnitude() * v.magnitude();
   double result = (magnitude == 0) ? 0 : dotproduct / magnitude;
   return result;
 }
Beispiel #3
0
 public TermVectorDouble multiply(TermVectorInt v) {
   if (size() > v.size()) return v.multiply(this);
   TermVectorDouble result = new TermVectorDouble();
   for (Object2DoubleMap.Entry<String> entry : object2DoubleEntrySet()) {
     int d = v.getInt(entry.getKey());
     if (d != 0) {
       result.put(entry.getKey(), entry.getValue() * d);
     }
   }
   return result;
 }
Beispiel #4
0
 public TermVectorDouble multiply(Map<String, Double> v) {
   if (size() > v.size() && v instanceof TermVector) return ((TermVector) v).multiply(this);
   TermVectorDouble result = new TermVectorDouble();
   for (Object2DoubleMap.Entry<String> entry : object2DoubleEntrySet()) {
     Double d = v.get(entry.getKey());
     if (d != 0) {
       result.put(entry.getKey(), entry.getValue() * d);
     }
   }
   return result;
 }
Beispiel #5
0
 public double cossimDebug(TermVectorDouble v) {
   if (this.size() > v.size()) {
     return v.cossimDebug(this);
   }
   double dotproduct = 0;
   for (Object2DoubleMap.Entry<String> entry : object2DoubleEntrySet()) {
     dotproduct += v.getDouble(entry.getKey()) * entry.getDoubleValue();
     log.info(
         "%s %f %f %s",
         entry.getKey(), v.getDouble(entry.getKey()), entry.getDoubleValue(), dotproduct);
   }
   double magnitude = magnitude() * v.magnitude();
   log.info("magnitude %s %s %s", magnitude(), v.magnitude(), dotproduct / magnitude);
   return (magnitude == 0) ? 0 : dotproduct / magnitude;
 }
Beispiel #6
0
 public void remove(TermVectorDouble v) {
   for (Object2DoubleMap.Entry<String> entry : v.object2DoubleEntrySet()) {
     add(entry.getKey(), -entry.getDoubleValue());
   }
   magnitude = null;
 }