Project

General

Profile

1 41642 claudio.at
package eu.dnetlib.pace.distance.algo;
2 37195 claudio.at
3
import com.wcohen.ss.AbstractStringDistance;
4 41642 claudio.at
import eu.dnetlib.pace.distance.SecondStringDistanceAlgo;
5 37195 claudio.at
6
public class LevensteinTitle extends SecondStringDistanceAlgo {
7
8
	public LevensteinTitle(final double w) {
9
		super(w, new com.wcohen.ss.Levenstein());
10
	}
11
12
	protected LevensteinTitle(final double w, final AbstractStringDistance ssalgo) {
13
		super(w, ssalgo);
14
	}
15
16
	@Override
17
	public double distance(final String a, final String b) {
18
		final String ca = cleanup(a);
19
		final String cb = cleanup(b);
20
21
		final boolean check = checkNumbers(ca, cb);
22
23
		if (check) return 0.5;
24
25
		final String cca = finalCleanup(ca);
26
		final String ccb = finalCleanup(cb);
27
28
		return normalize(ssalgo.score(cca, ccb), cca.length(), ccb.length());
29
	}
30
31
	private double normalize(final double score, final int la, final int lb) {
32
		return 1 - (Math.abs(score) / Math.max(la, lb));
33
	}
34
35
	@Override
36
	public double getWeight() {
37
		return super.weight;
38
	}
39
40
	@Override
41
	protected double normalize(final double d) {
42
		return 1 / Math.pow(Math.abs(d) + 1, 0.1);
43
	}
44
45
}