Package joshua.corpus.suffix_array

Source Code of joshua.corpus.suffix_array.AbstractHierarchicalPhrasesTest

/* 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.corpus.suffix_array;


import joshua.corpus.MatchedHierarchicalPhrases;
import joshua.corpus.vocab.Vocabulary;

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

/**
*
* @author Lane Schwartz
*/
public class AbstractHierarchicalPhrasesTest {

  @Test
  public void equalityTest() {
 
    Vocabulary vocab = new Vocabulary();
    vocab.addNonterminal("X");
    vocab.addTerminal("en");
    vocab.addTerminal("de");
    int X = vocab.getNonterminalID("X");
    int en = vocab.getID("en");
    int de = vocab.getID("de");
   
    int[] M_a_alpha_startPositions = {25,30,27,30};
    int[] M_a_alpha_sentenceNumbers = {2,2};
    Pattern M_a_alpha_pattern = new Pattern(vocab, en, X, de, X);
    Assert.assertEquals(M_a_alpha_pattern.arity(),2);
   
    MatchedHierarchicalPhrases a =
      new HierarchicalPhrases(M_a_alpha_pattern, M_a_alpha_startPositions, M_a_alpha_sentenceNumbers);
   
    MatchedHierarchicalPhrases b =
      new HierarchicalPhrases(M_a_alpha_pattern, M_a_alpha_startPositions, M_a_alpha_sentenceNumbers);
   
    MatchedHierarchicalPhrases c =
      new HierarchicalPhrases(M_a_alpha_pattern, M_a_alpha_startPositions, M_a_alpha_sentenceNumbers);
   
   
    Assert.assertTrue(a.equals(a));
    Assert.assertTrue(b.equals(b));
    Assert.assertTrue(c.equals(c));
   
    Assert.assertFalse(a==b);
    Assert.assertFalse(a==c);
    Assert.assertFalse(b==a);
    Assert.assertFalse(b==c);
   
    Assert.assertTrue(a.equals(b));
    Assert.assertTrue(a.equals(c));
    Assert.assertTrue(b.equals(a));
    Assert.assertTrue(b.equals(c));
    Assert.assertTrue(c.equals(a));
    Assert.assertTrue(c.equals(b));
   
   
    int[] M_alpha_b_startPositions = {2,5,30,33,30,36,700,703,952,956};
    int[] M_alpha_b_sentenceNumbers = {1,2,2,57,94};
    Pattern M_alpha_b_pattern = new Pattern(vocab, X, de, X, en);
    Assert.assertEquals(M_alpha_b_pattern.arity(),2);
    MatchedHierarchicalPhrases d =
      new HierarchicalPhrases(M_alpha_b_pattern, M_alpha_b_startPositions, M_alpha_b_sentenceNumbers);
   
    Assert.assertFalse(a.equals(d));
    Assert.assertFalse(b.equals(d));
    Assert.assertFalse(c.equals(d));
   
    Assert.assertFalse(d.equals(a));
    Assert.assertFalse(d.equals(b));
    Assert.assertFalse(d.equals(c));
  }
 
  @Test
  public void queryIntersectTest() {
   
    Vocabulary vocab = new Vocabulary();
    vocab.addNonterminal("X");
    vocab.addTerminal("en");
    vocab.addTerminal("de");
    int X = vocab.getNonterminalID("X");
    int en = vocab.getID("en");
    int de = vocab.getID("de");
   
    int[] M_a_alpha_startPositions = {25,30,27,30};
    int[] M_a_alpha_sentenceNumbers = {2,2};
    Pattern M_a_alpha_pattern = new Pattern(vocab, en, X, de, X);
    Assert.assertEquals(M_a_alpha_pattern.arity(),2);
    MatchedHierarchicalPhrases M_a_alpha =
      new HierarchicalPhrases(M_a_alpha_pattern, M_a_alpha_startPositions, M_a_alpha_sentenceNumbers);
    Assert.assertEquals(M_a_alpha.size(),2);
    Assert.assertEquals(M_a_alpha.arity(),2);
    Assert.assertEquals(M_a_alpha.getNumberOfTerminalSequences(),2);
    Assert.assertFalse(M_a_alpha.startsWithNonterminal());
    Assert.assertFalse(M_a_alpha.secondTokenIsTerminal());
    Assert.assertTrue(M_a_alpha.endsWithNonterminal());
    Assert.assertFalse(M_a_alpha.endsWithTwoTerminals());
    Assert.assertFalse(M_a_alpha.isEmpty());
    Assert.assertEquals(M_a_alpha.getFirstTerminalIndex(0), 25);
    Assert.assertEquals(M_a_alpha.getFirstTerminalIndex(1), 27);
    Assert.assertEquals(M_a_alpha.getLastTerminalIndex(0), 30+1);
    Assert.assertEquals(M_a_alpha.getLastTerminalIndex(1), 30+1);
   
   
    int[] M_alpha_b_startPositions = {2,5,30,33,30,36,700,703,952,956};
    int[] M_alpha_b_sentenceNumbers = {1,2,2,57,94};
    Pattern M_alpha_b_pattern = new Pattern(vocab, X, de, X, en);
    Assert.assertEquals(M_alpha_b_pattern.arity(),2);
    MatchedHierarchicalPhrases M_alpha_b =
      new HierarchicalPhrases(M_alpha_b_pattern, M_alpha_b_startPositions, M_alpha_b_sentenceNumbers);
    Assert.assertEquals(M_alpha_b.size(), 5);
    Assert.assertEquals(M_alpha_b.arity(),2);
    Assert.assertEquals(M_alpha_b.getNumberOfTerminalSequences(),2);
    Assert.assertTrue(M_alpha_b.startsWithNonterminal());
    Assert.assertTrue(M_alpha_b.secondTokenIsTerminal());
    Assert.assertFalse(M_alpha_b.endsWithNonterminal());
    Assert.assertFalse(M_alpha_b.endsWithTwoTerminals());
    Assert.assertFalse(M_alpha_b.isEmpty());
    Assert.assertEquals(M_alpha_b.getFirstTerminalIndex(0), 2);
    Assert.assertEquals(M_alpha_b.getFirstTerminalIndex(1), 30);
    Assert.assertEquals(M_alpha_b.getFirstTerminalIndex(2), 30);
    Assert.assertEquals(M_alpha_b.getFirstTerminalIndex(3), 700);
    Assert.assertEquals(M_alpha_b.getFirstTerminalIndex(4), 952);
    Assert.assertEquals(M_alpha_b.getLastTerminalIndex(0), 5+1);
    Assert.assertEquals(M_alpha_b.getLastTerminalIndex(1), 33+1);
    Assert.assertEquals(M_alpha_b.getLastTerminalIndex(2), 36+1);
    Assert.assertEquals(M_alpha_b.getLastTerminalIndex(3), 703+1);
    Assert.assertEquals(M_alpha_b.getLastTerminalIndex(4), 956+1);
   
    int minNonterminalSpan = 2;
    int maxPhraseSpan = 10;
   
    MatchedHierarchicalPhrases M_a_alpha_b =
      AbstractHierarchicalPhrases.queryIntersect(new Pattern(vocab, en, X, de, X, en), M_a_alpha, M_alpha_b, minNonterminalSpan, maxPhraseSpan, null);
 
    Assert.assertNotNull(M_a_alpha_b);
    Assert.assertEquals(M_a_alpha_b.size(), 3);
    Assert.assertEquals(M_a_alpha_b.arity(),2);
    Assert.assertEquals(M_a_alpha_b.getNumberOfTerminalSequences(),3);
    Assert.assertFalse(M_a_alpha_b.isEmpty());
    Assert.assertEquals(M_a_alpha_b.getFirstTerminalIndex(0), 25);
    Assert.assertEquals(M_a_alpha_b.getFirstTerminalIndex(1), 27);
    Assert.assertEquals(M_a_alpha_b.getFirstTerminalIndex(2), 27);
    Assert.assertEquals(M_a_alpha_b.getLastTerminalIndex(0), 33+1);
    Assert.assertEquals(M_a_alpha_b.getLastTerminalIndex(1), 33+1);
    Assert.assertEquals(M_a_alpha_b.getLastTerminalIndex(2), 36+1);
   
    Assert.assertFalse(M_a_alpha_b.startsWithNonterminal());
    Assert.assertFalse(M_a_alpha_b.secondTokenIsTerminal());
    Assert.assertFalse(M_a_alpha_b.endsWithNonterminal());
    Assert.assertFalse(M_a_alpha_b.endsWithTwoTerminals());
   
  }
}
TOP

Related Classes of joshua.corpus.suffix_array.AbstractHierarchicalPhrasesTest

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.