@Test public void testDecodeEmpty() { Span[] expected = new Span[] {}; Span[] actual = codec.decode(new ArrayList<String>()); Assert.assertArrayEquals(expected, actual); } /**
/** * Start Continue Other */ @Test public void testDecodePairFirst() { List<String> encoded = Arrays.asList(B_START, B_CONTINUE, OTHER); Span[] expected = new Span[] {new Span(0, 2, B_TYPE)}; Span[] actual = codec.decode(encoded); Assert.assertArrayEquals(expected, actual); }
/** * Other Start Other */ @Test public void testDecodeOtherFirst() { List<String> encoded = Arrays.asList(OTHER, B_START, OTHER); Span[] expected = new Span[] {new Span(1, 2, B_TYPE)}; Span[] actual = codec.decode(encoded); Assert.assertArrayEquals(expected, actual); }
/** * Start, Other */ @Test public void testDecodeSingletonFirst() { List<String> encoded = Arrays.asList(B_START, OTHER); Span[] expected = new Span[] {new Span(0, 1, B_TYPE)}; Span[] actual = codec.decode(encoded); Assert.assertArrayEquals(expected, actual); }
/** * Start Continue Continue Other */ @Test public void testDecodeTripletFirst() { List<String> encoded = Arrays.asList(B_START, B_CONTINUE, B_CONTINUE, OTHER); Span[] expected = new Span[] {new Span(0, 3, B_TYPE)}; Span[] actual = codec.decode(encoded); Assert.assertArrayEquals(expected, actual); }
/** * Start Start Other */ @Test public void testDecodeAdjacentSingletonFirst() { List<String> encoded = Arrays.asList(B_START, B_START, OTHER); Span[] expected = new Span[] {new Span(0, 1, B_TYPE), new Span(1, 2, B_TYPE)}; Span[] actual = codec.decode(encoded); Assert.assertArrayEquals(expected, actual); }
/** * Start Continue Start Other */ @Test public void testDecodeAdjacentPairSingleton() { List<String> encoded = Arrays.asList(B_START, B_CONTINUE, B_START, OTHER); Span[] expected = new Span[] {new Span(0, 2, B_TYPE), new Span(2, 3, B_TYPE)}; Span[] actual = codec.decode(encoded); Assert.assertArrayEquals(expected, actual); }
/** * A-Start A-Continue, A-Continue, Other, B-Start, B-Continue, Other, C-Start, Other */ @Test public void testDecodeMultiClass() { List<String> encoded = Arrays.asList(OTHER, A_START, A_CONTINUE, A_CONTINUE, OTHER, B_START, B_CONTINUE, OTHER, C_START, OTHER); Span[] expected = new Span[] {new Span(1, 4, A_TYPE), new Span(5, 7, B_TYPE), new Span(8, 9, C_TYPE)}; Span[] actual = codec.decode(encoded); Assert.assertArrayEquals(expected, actual); }
@Override public Span[] find(String[] sentence) { if (sentence.length > 0) { TokenIds tokenIds = wordIndexer.toTokenIds(sentence); return new BioCodec().decode(Arrays.asList(predict(tokenIds)[0])); } else { return new Span[0]; } }
@Override public Span[] find(String[] tokens) { List<INDArray> featureMatrices = DeepLearningUtils.mapToFeatureMatrices(wordVectors, tokens, windowSize); String[] outcomes = new String[tokens.length]; for (int i = 0; i < tokens.length; i++) { INDArray predictionMatrix = network.output(featureMatrices.get(i), false); INDArray outcomeVector = predictionMatrix.get(NDArrayIndex.point(0), NDArrayIndex.all(), NDArrayIndex.point(windowSize - 1)); outcomes[i] = labels[max(outcomeVector)]; } // Delete invalid spans ... for (int i = 0; i < outcomes.length; i++) { if (outcomes[i].endsWith("cont") && (i == 0 || "other".equals(outcomes[i - 1]))) { outcomes[i] = "other"; } } return new BioCodec().decode(Arrays.asList(outcomes)); }
@Override public Span[] find(String[] tokens) { List<INDArray> featureMartrices = mapToFeatureMatrices(wordVectors, tokens, windowSize); String[] outcomes = new String[tokens.length]; for (int i = 0; i < tokens.length; i++) { INDArray predictionMatrix = network.output(featureMartrices.get(i), false); INDArray outcomeVector = predictionMatrix.get(NDArrayIndex.point(0), NDArrayIndex.all(), NDArrayIndex.point(windowSize - 1)); outcomes[i] = labels[max(outcomeVector)]; } // Delete invalid spans ... for (int i = 0; i < outcomes.length; i++) { if (outcomes[i].endsWith("cont") && (i == 0 || "other".equals(outcomes[i - 1]))) { outcomes[i] = "other"; } } return new BioCodec().decode(Arrays.asList(outcomes)); }