/*******************************************************************************
* Copyright 2007, 2009 Jorge Villalon (jorge.villalon@uai.cl)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*******************************************************************************/
package tml.test;
import org.junit.BeforeClass;
import org.junit.Test;
import tml.Configuration;
import tml.corpus.SearchResultsCorpus;
import tml.corpus.CorpusParameters.DimensionalityReduction;
import tml.vectorspace.operations.PassageDistances;
import tml.vectorspace.operations.results.PassageDistancesResult;
import static org.junit.Assert.*;
public class ValidateSameDistancesAllDimensions extends AbstractTmlIndexingTest {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
AbstractTmlIndexingTest.setUpBeforeClass();
repository.addDocumentsInFolder(Configuration.getTmlFolder()+ "/corpora/uppsala", 1);
}
@Test
public void validatePassageDistances() throws Exception {
SearchResultsCorpus corpusA = new SearchResultsCorpus("type:sentence AND reference:p*d0100.a1");
corpusA.getParameters().setDimensionalityReduction(DimensionalityReduction.NO);
corpusA.load(repository);
SearchResultsCorpus corpusB = new SearchResultsCorpus("type:sentence AND reference:p*d0100.a1");
corpusB.getParameters().setDimensionalityReduction(DimensionalityReduction.PCT);
corpusB.getParameters().setDimensionalityReductionThreshold(100);
corpusB.load(repository);
SearchResultsCorpus corpusC = new SearchResultsCorpus("type:sentence AND reference:p*d0100.a1");
corpusC.getParameters().setDimensionalityReduction(DimensionalityReduction.NUM);
corpusC.getParameters().setDimensionalityReductionThreshold(100);
corpusC.load(repository);
PassageDistances distancesA = new PassageDistances();
distancesA.setCorpus(corpusA);
distancesA.start();
PassageDistances distancesB = new PassageDistances();
distancesB.setCorpus(corpusB);
distancesB.start();
PassageDistances distancesC = new PassageDistances();
distancesC.setCorpus(corpusC);
distancesC.start();
assertEquals(distancesA.getResultsNumber(), distancesB.getResultsNumber());
assertEquals(distancesB.getResultsNumber(), distancesC.getResultsNumber());
for(int i=0; i<distancesA.getResultsNumber(); i++) {
PassageDistancesResult resultA = distancesA.getResults().get(i);
PassageDistancesResult resultB = distancesB.getResults().get(i);
PassageDistancesResult resultC = distancesC.getResults().get(i);
assertEquals(resultA.getDocumentAId(), resultB.getDocumentAId());
assertEquals(resultA.getDocumentBId(), resultB.getDocumentBId());
assertEquals(resultA.getDistance(), resultB.getDistance(), 0.001);
assertEquals(resultB.getDocumentAId(), resultC.getDocumentAId());
assertEquals(resultB.getDocumentBId(), resultC.getDocumentBId());
assertEquals(resultB.getDistance(), resultC.getDistance(), 0.001);
}
}
}