Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a568e0ac authored by Jatin Matani's avatar Jatin Matani
Browse files

Add util method in ngramcontext for context array

Change-Id: I2e3e2ac7706be50ed2055b0c69b30e25a516a879
parent ddee4914
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -146,6 +146,32 @@ public class NgramContext {
                : TextUtils.join(CONTEXT_SEPARATOR, terms);
    }

    /**
     * Extracts the previous words context.
     *
     * @return a String array with the previous words.
     */
    public String[] extractPrevWordsContextArray() {
        final ArrayList<String> prevTermList = new ArrayList<>();
        for (int i = mPrevWordsInfo.length - 1; i >= 0; --i) {
            if (mPrevWordsInfo[i] != null && mPrevWordsInfo[i].isValid()) {
                final NgramContext.WordInfo wordInfo = mPrevWordsInfo[i];
                if (wordInfo.mIsBeginningOfSentence) {
                    prevTermList.add(BEGINNING_OF_SENTENCE_TAG);
                } else {
                    final String term = wordInfo.mWord.toString();
                    if (!term.isEmpty()) {
                        prevTermList.add(term);
                    }
                }
            }
        }
        final String[] contextStringArray = prevTermList.size() == 0 ?
                new String[] { BEGINNING_OF_SENTENCE_TAG }
                : prevTermList.toArray(new String[prevTermList.size()]);
        return contextStringArray;
    }

    public boolean isValid() {
        return mPrevWordsCount > 0 && mPrevWordsInfo[0].isValid();
    }
+39 −0
Original line number Diff line number Diff line
@@ -64,4 +64,43 @@ public class NgramContextTests extends AndroidTestCase {
                ngramContext_b_a.getNextNgramContext(new WordInfo("c"));
        assertEquals("c", ngramContext_c_bos.getNthPrevWord(1));
    }

    public void testExtractPrevWordsContextTest() {
        final NgramContext ngramContext_bos =
                new NgramContext(WordInfo.BEGINNING_OF_SENTENCE_WORD_INFO);
        assertEquals("<S>", ngramContext_bos.extractPrevWordsContext());
        final NgramContext ngramContext_a = new NgramContext(new WordInfo("a"));
        final NgramContext ngramContext_b_a =
                ngramContext_a.getNextNgramContext(new WordInfo("b"));
        assertEquals("b", ngramContext_b_a.getNthPrevWord(1));
        assertEquals("a", ngramContext_b_a.getNthPrevWord(2));
        assertEquals("a b", ngramContext_b_a.extractPrevWordsContext());

        final NgramContext ngramContext_bos_b =
                ngramContext_b_a.getNextNgramContext(WordInfo.BEGINNING_OF_SENTENCE_WORD_INFO);
        assertTrue(ngramContext_bos_b.isBeginningOfSentenceContext());
        assertEquals("b", ngramContext_bos_b.getNthPrevWord(2));
        assertEquals("a b <S>", ngramContext_bos_b.extractPrevWordsContext());
    }

    public void testExtractPrevWordsContextArray() {
        final NgramContext ngramContext_bos =
                new NgramContext(WordInfo.BEGINNING_OF_SENTENCE_WORD_INFO);
        assertEquals("<S>", ngramContext_bos.extractPrevWordsContext());
        final NgramContext ngramContext_a = new NgramContext(new WordInfo("a"));
        final NgramContext ngramContext_b_a =
                ngramContext_a.getNextNgramContext(new WordInfo("b"));
        assertEquals("b", ngramContext_b_a.getNthPrevWord(1));
        assertEquals("a", ngramContext_b_a.getNthPrevWord(2));
        assertEquals("a", ngramContext_b_a.extractPrevWordsContextArray()[0]);
        assertEquals("b", ngramContext_b_a.extractPrevWordsContextArray()[1]);

        final NgramContext ngramContext_bos_b =
                ngramContext_b_a.getNextNgramContext(WordInfo.BEGINNING_OF_SENTENCE_WORD_INFO);
        assertTrue(ngramContext_bos_b.isBeginningOfSentenceContext());
        assertEquals("b", ngramContext_bos_b.getNthPrevWord(2));
        assertEquals("a", ngramContext_bos_b.extractPrevWordsContextArray()[0]);
        assertEquals("b", ngramContext_bos_b.extractPrevWordsContextArray()[1]);
        assertEquals("<S>", ngramContext_bos_b.extractPrevWordsContextArray()[2]);
    }
}