mirror of
https://github.com/twitter/the-algorithm.git
synced 2024-06-03 01:38:45 +02:00
40 lines
1.1 KiB
Java
40 lines
1.1 KiB
Java
|
package com.twitter.search.common.relevance.text;
|
||
|
|
||
|
public class VisibleTokenRatioNormalizer {
|
||
|
|
||
|
private static final int NORMALIZE_TO_BITS = 4;
|
||
|
private final int normalizeToSize;
|
||
|
|
||
|
/**
|
||
|
* constructor
|
||
|
*/
|
||
|
public VisibleTokenRatioNormalizer(int normalizeToBits) {
|
||
|
int size = 2 << (normalizeToBits - 1);
|
||
|
// Let's say normalizeSize is set to 16....
|
||
|
// If you multiply 1.0 * 16, it is 16
|
||
|
// If you multiply 0.0 * 16, it is 0
|
||
|
// That would be occupying 17 ints, not 16, so we subtract 1 here...
|
||
|
this.normalizeToSize = size - 1;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* method
|
||
|
*/
|
||
|
public int normalize(double percent) {
|
||
|
if (percent > 1 || percent < 0) {
|
||
|
throw new IllegalArgumentException("percent should be less than 1 and greater than 0");
|
||
|
}
|
||
|
int bucket = (int) (percent * normalizeToSize);
|
||
|
return normalizeToSize - bucket;
|
||
|
}
|
||
|
|
||
|
public double denormalize(int reverseBucket) {
|
||
|
int bucket = normalizeToSize - reverseBucket;
|
||
|
return bucket / (double) normalizeToSize;
|
||
|
}
|
||
|
|
||
|
public static VisibleTokenRatioNormalizer createInstance() {
|
||
|
return new VisibleTokenRatioNormalizer(NORMALIZE_TO_BITS);
|
||
|
}
|
||
|
}
|