NgramContext.java revision 1adca93381d261a6070be2721dbf8b8abafbfe01
183c40a2301a0b5a42a75eecada48e7887a7c940eKeisuke Kuroyanagi/*
283c40a2301a0b5a42a75eecada48e7887a7c940eKeisuke Kuroyanagi * Copyright (C) 2014 The Android Open Source Project
383c40a2301a0b5a42a75eecada48e7887a7c940eKeisuke Kuroyanagi *
483c40a2301a0b5a42a75eecada48e7887a7c940eKeisuke Kuroyanagi * Licensed under the Apache License, Version 2.0 (the "License");
583c40a2301a0b5a42a75eecada48e7887a7c940eKeisuke Kuroyanagi * you may not use this file except in compliance with the License.
683c40a2301a0b5a42a75eecada48e7887a7c940eKeisuke Kuroyanagi * You may obtain a copy of the License at
783c40a2301a0b5a42a75eecada48e7887a7c940eKeisuke Kuroyanagi *
883c40a2301a0b5a42a75eecada48e7887a7c940eKeisuke Kuroyanagi *      http://www.apache.org/licenses/LICENSE-2.0
983c40a2301a0b5a42a75eecada48e7887a7c940eKeisuke Kuroyanagi *
1083c40a2301a0b5a42a75eecada48e7887a7c940eKeisuke Kuroyanagi * Unless required by applicable law or agreed to in writing, software
1183c40a2301a0b5a42a75eecada48e7887a7c940eKeisuke Kuroyanagi * distributed under the License is distributed on an "AS IS" BASIS,
1283c40a2301a0b5a42a75eecada48e7887a7c940eKeisuke Kuroyanagi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1383c40a2301a0b5a42a75eecada48e7887a7c940eKeisuke Kuroyanagi * See the License for the specific language governing permissions and
1483c40a2301a0b5a42a75eecada48e7887a7c940eKeisuke Kuroyanagi * limitations under the License.
1583c40a2301a0b5a42a75eecada48e7887a7c940eKeisuke Kuroyanagi */
1683c40a2301a0b5a42a75eecada48e7887a7c940eKeisuke Kuroyanagi
1783c40a2301a0b5a42a75eecada48e7887a7c940eKeisuke Kuroyanagipackage com.android.inputmethod.latin;
1883c40a2301a0b5a42a75eecada48e7887a7c940eKeisuke Kuroyanagi
1917f326b7458c2bde2569e283a96e703755485328Keisuke Kuroyanagiimport android.util.Log;
2017f326b7458c2bde2569e283a96e703755485328Keisuke Kuroyanagi
2117f326b7458c2bde2569e283a96e703755485328Keisuke Kuroyanagi// TODO: Support multiple previous words for n-gram.
2283c40a2301a0b5a42a75eecada48e7887a7c940eKeisuke Kuroyanagipublic class PrevWordsInfo {
231adca93381d261a6070be2721dbf8b8abafbfe01Keisuke Kuroyanagi    public static final PrevWordsInfo BEGINNING_OF_SENTENCE = new PrevWordsInfo();
241adca93381d261a6070be2721dbf8b8abafbfe01Keisuke Kuroyanagi
2583c40a2301a0b5a42a75eecada48e7887a7c940eKeisuke Kuroyanagi    // The previous word. May be null after resetting and before starting a new composing word, or
2683c40a2301a0b5a42a75eecada48e7887a7c940eKeisuke Kuroyanagi    // when there is no context like at the start of text for example. It can also be set to null
2783c40a2301a0b5a42a75eecada48e7887a7c940eKeisuke Kuroyanagi    // externally when the user enters a separator that does not let bigrams across, like a period
2883c40a2301a0b5a42a75eecada48e7887a7c940eKeisuke Kuroyanagi    // or a comma.
2983c40a2301a0b5a42a75eecada48e7887a7c940eKeisuke Kuroyanagi    public final String mPrevWord;
3083c40a2301a0b5a42a75eecada48e7887a7c940eKeisuke Kuroyanagi
3117f326b7458c2bde2569e283a96e703755485328Keisuke Kuroyanagi    // TODO: Have sentence separator.
3217f326b7458c2bde2569e283a96e703755485328Keisuke Kuroyanagi    // Whether the current context is beginning of sentence or not.
3317f326b7458c2bde2569e283a96e703755485328Keisuke Kuroyanagi    public final boolean mIsBeginningOfSentence;
3417f326b7458c2bde2569e283a96e703755485328Keisuke Kuroyanagi
3517f326b7458c2bde2569e283a96e703755485328Keisuke Kuroyanagi    // Beginning of sentence.
3617f326b7458c2bde2569e283a96e703755485328Keisuke Kuroyanagi    public PrevWordsInfo() {
371adca93381d261a6070be2721dbf8b8abafbfe01Keisuke Kuroyanagi        mPrevWord = "";
3817f326b7458c2bde2569e283a96e703755485328Keisuke Kuroyanagi        mIsBeginningOfSentence = true;
3917f326b7458c2bde2569e283a96e703755485328Keisuke Kuroyanagi    }
4017f326b7458c2bde2569e283a96e703755485328Keisuke Kuroyanagi
4183c40a2301a0b5a42a75eecada48e7887a7c940eKeisuke Kuroyanagi    public PrevWordsInfo(final String prevWord) {
4283c40a2301a0b5a42a75eecada48e7887a7c940eKeisuke Kuroyanagi        mPrevWord = prevWord;
4317f326b7458c2bde2569e283a96e703755485328Keisuke Kuroyanagi        mIsBeginningOfSentence = false;
4483c40a2301a0b5a42a75eecada48e7887a7c940eKeisuke Kuroyanagi    }
451adca93381d261a6070be2721dbf8b8abafbfe01Keisuke Kuroyanagi
461adca93381d261a6070be2721dbf8b8abafbfe01Keisuke Kuroyanagi    public boolean isValid() {
471adca93381d261a6070be2721dbf8b8abafbfe01Keisuke Kuroyanagi        return mPrevWord != null;
481adca93381d261a6070be2721dbf8b8abafbfe01Keisuke Kuroyanagi    }
4983c40a2301a0b5a42a75eecada48e7887a7c940eKeisuke Kuroyanagi}
50