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

Commit 148aab12 authored by Jatin Matani's avatar Jatin Matani Committed by Android (Google) Code Review
Browse files

Merge "Add util method in ngramcontext for context array"

parents 63a0bdb4 a568e0ac
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]);
    }
}