Package joshua.zmert

Source Code of joshua.zmert.BLEUTest

/* This file is part of the Joshua Machine Translation System.
*
* Joshua is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
* License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package joshua.zmert;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

import joshua.zmert.BLEU;
import joshua.zmert.EvaluationMetric;

import org.testng.Assert;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

/**
* Unit tests for BLEU class.
*
* @author Lane Schwartz
* @version $LastChangedDate: 2009-05-04 09:56:46 -0500 (Mon, 04 May 2009) $
*/
public class BLEUTest {

  @Test
  public void metricName() {

    // Setup the EvaluationMetric class
    EvaluationMetric.set_numSentences(0);
    EvaluationMetric.set_refsPerSen(1);
    EvaluationMetric.set_refSentences(null);

    BLEU bleu = new BLEU();
   
    Assert.assertEquals(bleu.get_metricName(), "BLEU");

  }
 
  @Test
  public void defaultConstructor() {

    // Setup the EvaluationMetric class
    EvaluationMetric.set_numSentences(0);
    EvaluationMetric.set_refsPerSen(1);
    EvaluationMetric.set_refSentences(null);

    BLEU bleu = new BLEU();
   
    // Default constructor should use a maximum n-gram length of 4
    Assert.assertEquals(bleu.maxGramLength, 4);
   
    // Default constructor should use the closest reference
    Assert.assertEquals(bleu.effLengthMethod, BLEU.EffectiveLengthMethod.CLOSEST);

  }
 
  @Test
  public void simpleTest() {

    String ref = "this is the fourth chromosome whose sequence has been completed to date . it comprises more than 87 million pairs of dna .";
    String test = "this is the fourth chromosome to be fully sequenced up till now and it comprises of over 87 million pairs of deoxyribonucleic acid ( dna ) .";
   
    // refSentences[i][r] stores the r'th reference of the i'th sentence
    String[][] refSentences = new String[1][1];
    refSentences[0][0] = ref;
   
    EvaluationMetric.set_numSentences(1);
    EvaluationMetric.set_refsPerSen(1);
    EvaluationMetric.set_refSentences(refSentences);
   
    BLEU bleu = new BLEU();
   
    // testSentences[i] stores the candidate translation for the i'th sentence
    String[] testSentences = new String[1];
    testSentences[0] = test;
    try {
      // Check BLEU score matches
      double actualScore = bleu.score(testSentences);
      double expectedScore = 0.2513;
      double acceptableScoreDelta = 0.00001f;

      Assert.assertEquals(actualScore, expectedScore, acceptableScoreDelta);

      // Check sufficient statistics match
      int[] actualSS = bleu.suffStats(testSentences);
      int[] expectedSS = {14,27,8,26,5,25,3,24,27,23};

      Assert.assertEquals(actualSS[0], expectedSS[0], 0); // 1-gram matches
      Assert.assertEquals(actualSS[1], expectedSS[1], 0); // 1-gram total
      Assert.assertEquals(actualSS[2], expectedSS[2], 0); // 2-gram matches
      Assert.assertEquals(actualSS[3], expectedSS[3], 0); // 2-gram total
      Assert.assertEquals(actualSS[4], expectedSS[4], 0); // 3-gram matches
      Assert.assertEquals(actualSS[5], expectedSS[5], 0); // 3-gram total
      Assert.assertEquals(actualSS[6], expectedSS[6], 0); // 4-gram matches
      Assert.assertEquals(actualSS[7], expectedSS[7], 0); // 4-gram total
      Assert.assertEquals(actualSS[8], expectedSS[8], 0); // candidate length
      Assert.assertEquals(actualSS[9], expectedSS[9], 0); // reference length
    } catch (Exception e) {
      Assert.fail();
    }
  }
 
  @Parameters({"referenceFile","testFile"})
  @Test
  public void fileTest(String referenceFile, String testFile) throws FileNotFoundException {

    //TODO You can now read in the files, and do something useful with them.
   
    Scanner refScanner = new Scanner(new File(referenceFile));
   
    while (refScanner.hasNextLine()) {
     
      String refLine = refScanner.nextLine();
     
    }
 

  }
 
}
TOP

Related Classes of joshua.zmert.BLEUTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.