@Test public void testOnUnknownSynsets() { assertEquals( LeacockChodorow.min, rc.calcRelatednessOfSynset(null, n1Synsets.get(0)).getScore(), 0.0001); assertEquals(LeacockChodorow.min, rc.calcRelatednessOfWords(null, n1), 0.0001); assertEquals(LeacockChodorow.min, rc.calcRelatednessOfWords("", n1), 0.0001); }
/** * Test method for {@link * edu.cmu.lti.similarity.RelatednessCalculator#calcRelatednessOfWords(java.lang.String, * java.lang.String)}. */ @Test public void testHappyPathOnWordsWithPOS() { assertEquals(2.5902, rc.calcRelatednessOfWords(nv1 + "#n", nv2 + "#n"), 0.0001D); assertEquals(0.0000, rc.calcRelatednessOfWords(nv1 + "#n", nv2 + "#v"), 0.0001D); assertEquals(0.0000, rc.calcRelatednessOfWords(nv1 + "#v", nv2 + "#n"), 0.0001D); assertEquals(2.2335, rc.calcRelatednessOfWords(nv1 + "#v", nv2 + "#v"), 0.0001D); assertEquals(0.0000, rc.calcRelatednessOfWords(nv1 + "#other", nv2 + "#other"), 0.0001D); }
/** * Test method for {@link * edu.cmu.lti.similarity.impl.LeacockChodorow#calcRelatedness(java.lang.String, * java.lang.String)}. */ @Test public void testHappyPathOnSynsets() { // both japanese and english!, n and v // English pair assertEquals( 2.9957, rc.calcRelatednessOfSynset(n1Synsets.get(1), n2Synsets.get(0)).getScore(), 0.0001); assertEquals( 1.6094, rc.calcRelatednessOfSynset(n1Synsets.get(0), n2Synsets.get(0)).getScore(), 0.0001); assertEquals( 2.6391, rc.calcRelatednessOfSynset(v1Synsets.get(0), v2Synsets.get(0)).getScore(), 0.0001); assertEquals( 1.9459, rc.calcRelatednessOfSynset(v1Synsets.get(1), v2Synsets.get(0)).getScore(), 0.0001); }
public static double run(String word1, String word2) { WS4JConfiguration.getInstance().setMFS(true); String word1_v = word1.substring(0, word1.indexOf('_')); String word1_n = word1.substring(word1.indexOf('_') + 1); String word2_v = word2.substring(0, word2.indexOf('_')); String word2_n = word2.substring(word2.indexOf('_') + 1); double s1 = rc.calcRelatednessOfWords(word1_v, word2_v); double s2 = rc.calcRelatednessOfWords(word1_n, word2_n); return s1 + s2; }
public static double similarity(String w1, String w2) { WS4JConfiguration.getInstance().setMFS(true); if (w1 != null) w1 = w1.toLowerCase().replaceAll("-", "").replaceAll(" ", ""); if (w2 != null) w2 = w2.toLowerCase().replaceAll("-", "").replaceAll(" ", ""); // double res = 0.0d; // double res1 = simCalc.calcRelatednessOfWords(w1, w2); // res = res1; // double res2 = simCalc.calcRelatednessOfWords(w1.replace('-', ' '), // w2.replace('-', ' ')); // if (res2 > res) // res = res2; // double res3 = simCalc.calcRelatednessOfWords(w1.replaceAll("-", ""), // w2.replaceAll("-", "")); // if (res3 > res) // res = res3; return simCalc.calcRelatednessOfWords(w1, w2); }
/** * Test method for {@link * edu.cmu.lti.similarity.RelatednessCalculator#calcRelatednessOfWords(java.lang.String, * java.lang.String)}. */ @Test public void testHappyPathOnWords() { assertEquals(2.9957, rc.calcRelatednessOfWords(n1, n2), 0.0001D); assertEquals(2.6391, rc.calcRelatednessOfWords(v1, v2), 0.0001D); }
public static void main(String[] args) throws ClassNotFoundException, IOException { int nbPCA = 250; // String sourcePath = "/Vrac/3000693/RI_Image/bows_" + nbPCA + ".ser"; String sourcePath = "/Users/remicadene/Dropbox/_Docs/UPMC/RI/bows_" + nbPCA + ".ser"; int dimpsi = 0; Set<String> classes; // Modèle MultiClass // -------------------------------------------------------------------------------- // Hyperparamètres double eps = 1e-2; double lambda = 1e-6; int maxIter = 100; // Définition du modèle DataSet<double[], String> dataSet = VisualIndexes.load(sourcePath); classes = dataSet.outputs(); double min = Double.MAX_VALUE; double max = -Double.MAX_VALUE; int n = classes.size(); double[][] distances = new double[n][n]; double[][] new_distances = new double[n][n]; ILexicalDatabase db = new NictWordNet(); RelatednessCalculator calculator = new WuPalmer(db); HashMap<String, Integer> hm_classes = new HashMap<String, Integer>(); int id = 0; for (String classe : classes) { hm_classes.put(classe, id); id++; } for (String word1 : classes) { int i = hm_classes.get(word1); for (String word2 : classes) { int j = hm_classes.get(word2); // this.distances[i][j] = calculator.calcRelatednessOfWords(word1, word2); if (i == j) { distances[i][j] = 0; } else { distances[i][j] = 1 - calculator.calcRelatednessOfWords(word1, word2); if (distances[i][j] < min) { min = distances[i][j]; } if (distances[i][j] > max) { max = distances[i][j]; } } } } // [a; b] -> [0.1 ; 2] // (1.9 * (x - a) / (b - a)) + .1 for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (i != j) { new_distances[i][j] = (distances[i][j] - min) * (2 - 0.1) / (max - min) + 0.1; } } } System.out.println("--------------"); for (int i = 0; i < classes.size(); i++) { for (int j = i + 1; j < classes.size(); j++) { System.out.println("[" + i + "," + j + "]"); System.out.println("avant: " + distances[i][j]); System.out.println("apres: " + new_distances[i][j]); } } System.out.println(max); System.out.println(min); double a = 0.1 + (2 - 0.1) * (0.6 - 0.0714285714285714) / (0.15384615384615385 - 0.0714285714285714); }