| /* |
| * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package jp.co.omronsoft.openwnn; |
| |
| |
| /** |
| * The interface of dictionary searcher used by {@link OpenWnn}. |
| * |
| * @author Copyright (C) 2008-2009, OMRON SOFTWARE CO., LTD. All Rights Reserved. |
| */ |
| public interface WnnDictionary { |
| /* |
| * DEFINITION OF CONSTANTS |
| */ |
| /** |
| * Predefined approximate pattern set (capital letters from small letters). |
| * |
| * This pattern includes the rules for ambiguous searching capital letters from small letters.<br> |
| * ex. "a" to "A", "b" to "B", ... , "z" to "Z" |
| */ |
| public static final int APPROX_PATTERN_EN_TOUPPER = 0; |
| /** |
| * Predefined approximate pattern set (small letters from capital letters). |
| * |
| * This pattern includes the rules for ambiguous searching small letters from capital letters.<br> |
| * ex. "A" to "a", "B" to "b", ... , "Z" to "z" |
| */ |
| public static final int APPROX_PATTERN_EN_TOLOWER = 1; |
| /** |
| * Predefined approximate pattern set (QWERTY neighbor keys). |
| * |
| * This pattern includes the rules for ambiguous searching neighbor keys on QWERTY keyboard. |
| * Only alphabet letters are defined; numerical or symbol letters are not defined as the rules.<br> |
| * ex. "a" to "q"/"w"/"s"/"z", "b" to "v"/"g"/"h"/"n", ... ,"z" to "a"/"s"/"x" |
| */ |
| public static final int APPROX_PATTERN_EN_QWERTY_NEAR = 2; |
| /** |
| * Predefined approximate pattern set (QWERTY neighbor keys/capital letters). |
| * |
| * This pattern includes the rules for ambiguous searching capital letters of neighbor keys on QWERTY keyboard. |
| * Only alphabet letters are defined; numerical or symbol letters are not defined as the rules.<br> |
| * ex. "a" to "Q"/"W"/"S"/"Z", "b" to "V"/"G"/"H"/"N", ... ,"z" to "A"/"S"/"X" |
| */ |
| public static final int APPROX_PATTERN_EN_QWERTY_NEAR_UPPER = 3; |
| /** |
| * Predefined approximate pattern set (for Japanese 12-key keyboard). |
| * |
| * This pattern includes the standard rules for Japanese multi-tap 12-key keyboard. |
| * ex. "は" to "ば"/"ぱ", "つ" to "っ"/"づ" |
| */ |
| public static final int APPROX_PATTERN_JAJP_12KEY_NORMAL = 4; |
| |
| /** Search operation mode (exact matching). */ |
| public static final int SEARCH_EXACT = 0; |
| /** Search operation mode (prefix matching). */ |
| public static final int SEARCH_PREFIX = 1; |
| /** Search operation mode (link search). */ |
| public static final int SEARCH_LINK = 2; |
| |
| /** Sort order (frequency in descending). */ |
| public static final int ORDER_BY_FREQUENCY = 0; |
| /** Sort order (character code of key string in ascending). */ |
| public static final int ORDER_BY_KEY = 1; |
| |
| /** Type of a part of speech (V1) */ |
| public static final int POS_TYPE_V1 = 0; |
| /** Type of a part of speech (V2) */ |
| public static final int POS_TYPE_V2 = 1; |
| /** Type of a part of speech (V3) */ |
| public static final int POS_TYPE_V3 = 2; |
| /** Type of a part of speech (Top of sentence) */ |
| public static final int POS_TYPE_BUNTOU = 3; |
| /** Type of a part of speech (Single Chinese character) */ |
| public static final int POS_TYPE_TANKANJI = 4; |
| /** Type of a part of speech (Numeric) */ |
| public static final int POS_TYPE_SUUJI = 5; |
| /** Type of a part of speech (Noun) */ |
| public static final int POS_TYPE_MEISI = 6; |
| /** Type of a part of speech (Person's name) */ |
| public static final int POS_TYPE_JINMEI = 7; |
| /** Type of a part of speech (Place name) */ |
| public static final int POS_TYPE_CHIMEI = 8; |
| /** Type of a part of speech (Symbol) */ |
| public static final int POS_TYPE_KIGOU = 9; |
| |
| /** Index of the user dictionary for {@link #setDictionary(int, int, int)} */ |
| public static final int INDEX_USER_DICTIONARY = -1; |
| /** Index of the learn dictionary for {@link #setDictionary(int, int, int)} */ |
| public static final int INDEX_LEARN_DICTIONARY = -2; |
| |
| |
| /** |
| * Whether this dictionary module is active. |
| * @return {@code true} if this dictionary module is active; {@code false} if not. |
| */ |
| public boolean isActive(); |
| |
| /** |
| * Set "in use" state. |
| * |
| * When the flag set true, the user dictionary is locked. |
| * |
| * @param flag {@code true} if the user dictionary is locked; {@code false} if the user dictionary is unlocked. |
| */ |
| public void setInUseState( boolean flag ); |
| |
| /** |
| * Clear all dictionary settings. |
| * |
| * All the dictionaries are set to be unused. |
| * |
| * @return 0 if success; minus value(error code) if fail. |
| */ |
| public int clearDictionary( ); |
| |
| /** |
| * Sets a dictionary information for using specified dictionary. |
| * |
| * <p> |
| * A dictionary information contains parameters:<br> |
| * {@code base} is the bias of frequency for the dictionary.<br> |
| * {@code high} is the upper limit of frequency for the dictionary. |
| * </p> |
| * Searched word's frequency in the dictionary is mapped to the range from {@code base} to {@code high}. |
| * <br> |
| * The maximum value of {@code base} and {@code high} is 1000. |
| * To set a dictionary unused, specify -1 to {@code base} and {@code high}. |
| * |
| * @param index A dictionary index |
| * @param base The base frequency for the dictionary |
| * @param high The maximum frequency for the dictionary |
| * @return 0 if success; minus value(error code) if fail. |
| */ |
| public int setDictionary(int index, int base, int high ); |
| |
| /** |
| * Clears approximate patterns. |
| * |
| * This clears all approximate search patterns in the search condition. |
| */ |
| public void clearApproxPattern( ); |
| |
| /** |
| * Sets a approximate pattern. |
| * |
| * This adds an approximate search pattern(replacement of character) to the search condition. |
| * The pattern rule is defined as replacing a character({@code src}) to characters({@code dst}). |
| * <br> |
| * The length of {@code src} must be 1 and the length of {@code dst} must be lower than 4.<br> |
| * The maximum count of approximate patterns is 255. |
| * |
| * @param src A character replace from |
| * @param dst Characters replace to |
| * @return 0 if success; minus value(error code) if fail. |
| */ |
| public int setApproxPattern( String src, String dst ); |
| |
| /** |
| * Sets a predefined approximate pattern. |
| * |
| * The patterns included predefined approximate search pattern set specified by |
| * {@code approxPattern} are added to the search condition. |
| * |
| * @param approxPattern A predefined approximate pattern set |
| * @see jp.co.omronsoft.openwnn.WnnDictionary#APPROX_PATTERN_EN_TOUPPER |
| * @see jp.co.omronsoft.openwnn.WnnDictionary#APPROX_PATTERN_EN_TOLOWER |
| * @see jp.co.omronsoft.openwnn.WnnDictionary#APPROX_PATTERN_EN_QWERTY_NEAR |
| * @see jp.co.omronsoft.openwnn.WnnDictionary#APPROX_PATTERN_EN_QWERTY_NEAR_UPPER |
| * |
| * @return 0 if success; minus value(error code) if fail. |
| */ |
| public int setApproxPattern( int approxPattern ); |
| |
| /** |
| * Search words from dictionaries with specified conditions. |
| * <p> |
| * To get the searched word's information, use {@link #getNextWord()}.<br> |
| * If a same word existed in the set of dictionary, the search result may contain some same words.<br> |
| * <br> |
| * If approximate patterns were set, the first word in search |
| * results is the highest approximation word which contains best |
| * matched character in the key string. <br> |
| * For example, If a key string is "bbc", a approximate pattern |
| * "b" to "a" is specified and the dictionary includes "abc |
| * (frequency 10)" "bbcd (frequency 1)" "aac (frequency 5)"; the |
| * result of prefix search is output by following order: "bbcd", |
| * "abc", "aac". |
| * </p> |
| * <p> |
| * The supported combination of parameters is: |
| * <table> |
| * <th><td>Search Mode</td><td>Sort Order</td><td>Ambiguous Search</td></th> |
| * <tr><td>exact matching</td><td>frequency descending</td><td>no</td></tr> |
| * <tr><td>prefix matching</td><td>frequency descending</td><td>no</td></tr> |
| * <tr><td>prefix matching</td><td>frequency descending</td><td>yes</td></tr> |
| * <tr><td>prefix matching</td><td>character code ascending</td><td>no</td></tr> |
| * </table> |
| * </p> |
| * |
| * @param operation The search operation |
| * @see jp.co.omronsoft.openwnn.WnnDictionary#SEARCH_EXACT |
| * @see jp.co.omronsoft.openwnn.WnnDictionary#SEARCH_PREFIX |
| * @param order The sort order |
| * @see jp.co.omronsoft.openwnn.WnnDictionary#ORDER_BY_FREQUENCY |
| * @see jp.co.omronsoft.openwnn.WnnDictionary#ORDER_BY_KEY |
| * @param keyString The key string |
| * |
| * @see jp.co.omronsoft.openwnn.WnnDictionary#getNextWord |
| * |
| * @return 0 if no word is found; 1 if some words found; minus value if a error occurs. |
| */ |
| public int searchWord(int operation, int order, String keyString ); |
| |
| /** |
| * Search words from dictionaries with specified conditions and previous word. |
| * <p> |
| * For using link search function, specify the {@code wnnWord} as previous word and |
| * set {@code SEARCH_LINK} mode to {@code operation}. The other arguments are |
| * the same as {@link #searchWord(int operation, int order, String keyString)}. |
| * <p> |
| * If the prediction dictionary for reading is set to use, the previous word must contain |
| * the {@code stroke} and the {@code candidate} information. If the prediction dictionary |
| * for part of speech is set to use, the previous word must contain the {@code partOfSpeech} information. |
| * |
| * @param wnnWord The previous word |
| * @see jp.co.omronsoft.openwnn.WnnDictionary#searchWord |
| * |
| * @return 0 if no word is found; 1 if some words found; minus value if a error occurs. |
| */ |
| public int searchWord(int operation, int order, String keyString, WnnWord wnnWord ); |
| |
| /** |
| * Retrieve a searched word information. |
| * |
| * It returns a word information from top of the {@code searchWord()}'s result. |
| * To get all word's information of the result, call this method repeatedly until it returns null. |
| * |
| * @return An instance of WnnWord; null if no result or an error occurs. |
| */ |
| public WnnWord getNextWord( ); |
| |
| /** |
| * Retrieve a searched word information with condition of length. |
| * |
| * It returns a word information from top of the {@code searchWord()}'s result. |
| * To get all word's information of the result, call this method repeatedly until it returns null. |
| * |
| * @param length >0 if only the result of specified length is retrieved; 0 if no condition exist |
| * @return An instance of WnnWord; null if no result or an error occurs. |
| */ |
| public WnnWord getNextWord( int length ); |
| |
| /** |
| * Retrieve all word in the user dictionary. |
| * |
| * @return The array of WnnWord objects. |
| */ |
| public WnnWord[] getUserDictionaryWords( ); |
| |
| /** |
| * Retrieve the connect matrix. |
| * |
| * @return The array of the connect matrix; null if an error occurs. |
| */ |
| public byte[][] getConnectMatrix( ); |
| |
| /** |
| * Retrieve the part of speech information specified POS type. |
| * |
| * @param type The type of a part of speech |
| * @return The part of speech information; null if invalid type is specified or an error occurs. |
| * |
| * @see jp.co.omronsoft.openwnn.WnnDictionary#POS_TYPE_V1 |
| * @see jp.co.omronsoft.openwnn.WnnDictionary#POS_TYPE_V2 |
| * @see jp.co.omronsoft.openwnn.WnnDictionary#POS_TYPE_V3 |
| * @see jp.co.omronsoft.openwnn.WnnDictionary#POS_TYPE_BUNTOU |
| * @see jp.co.omronsoft.openwnn.WnnDictionary#POS_TYPE_TANKANJI |
| * @see jp.co.omronsoft.openwnn.WnnDictionary#POS_TYPE_SUUJI |
| * @see jp.co.omronsoft.openwnn.WnnDictionary#POS_TYPE_MEISI |
| * @see jp.co.omronsoft.openwnn.WnnDictionary#POS_TYPE_JINMEI |
| * @see jp.co.omronsoft.openwnn.WnnDictionary#POS_TYPE_CHIMEI |
| * @see jp.co.omronsoft.openwnn.WnnDictionary#POS_TYPE_KIGOU |
| */ |
| public WnnPOS getPOS( int type ); |
| |
| /** |
| * Clear the user dictionary. |
| * |
| * @return 0 if no error occur; <0 if an error occur |
| */ |
| public int clearUserDictionary(); |
| /** |
| * Clear the learn dictionary. |
| * |
| * @return 0 if no error occur; <0 if an error occur |
| */ |
| public int clearLearnDictionary(); |
| |
| /** |
| * Add the words to user dictionary. |
| * |
| * @param word The array of word |
| * @return 0 if no error occur; <0 if an error occur |
| */ |
| public int addWordToUserDictionary( WnnWord[] word ); |
| /** |
| * Add the word to user dictionary. |
| * |
| * @param word The word |
| * @return 0 if no error occur; <0 if an error occur |
| */ |
| public int addWordToUserDictionary( WnnWord word ); |
| |
| /** |
| * Remove the words from user dictionary. |
| * |
| * @param word The array of word |
| * @return 0 if no error occur; <0 if an error occur |
| */ |
| public int removeWordFromUserDictionary( WnnWord[] word ); |
| /** |
| * Remove the word from user dictionary. |
| * |
| * @param word The word |
| * @return 0 if no error occur; <0 if an error occur |
| */ |
| public int removeWordFromUserDictionary( WnnWord word ); |
| |
| /** |
| * Learn the word. |
| * |
| * @param word The word for learning |
| * @return 0 if no error occur; <0 if an error occur |
| */ |
| public int learnWord( WnnWord word ); |
| |
| /** |
| * Learn the word with connection. |
| * |
| * @param word The word for learning |
| * @param previousWord The word for link learning |
| * @return 0 if no error occur; <0 if an error occur |
| */ |
| public int learnWord( WnnWord word, WnnWord previousWord ); |
| } |
| |